NT-MDT data: GraphViz block diagram (.dot) source

A native file format of NT-MDT scientific software. Usually contains any of:

Some examples of mdt files can be downloaded at:

Application

["Nova", "Image Analysis", "NanoEducator", "Gwyddion", "Callisto"]

File extension

mdt

KS implementation details

License: GPL-3.0-or-later

This page hosts a formal specification of NT-MDT data using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.

GraphViz block diagram source

nt_mdt.dot

digraph {
	rankdir=LR;
	node [shape=plaintext];
	subgraph cluster__nt_mdt {
		label="NtMdt";
		graph[style=dotted];

		nt_mdt__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
			<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
			<TR><TD PORT="signature_pos">0</TD><TD PORT="signature_size">4</TD><TD></TD><TD PORT="signature_type">signature</TD></TR>
			<TR><TD PORT="size_pos">4</TD><TD PORT="size_size">4</TD><TD>u4le</TD><TD PORT="size_type">size</TD></TR>
			<TR><TD PORT="reserved0_pos">8</TD><TD PORT="reserved0_size">4</TD><TD></TD><TD PORT="reserved0_type">reserved0</TD></TR>
			<TR><TD PORT="last_frame_pos">12</TD><TD PORT="last_frame_size">2</TD><TD>u2le</TD><TD PORT="last_frame_type">last_frame</TD></TR>
			<TR><TD PORT="reserved1_pos">14</TD><TD PORT="reserved1_size">18</TD><TD></TD><TD PORT="reserved1_type">reserved1</TD></TR>
			<TR><TD PORT="wrond_doc_pos">32</TD><TD PORT="wrond_doc_size">1</TD><TD></TD><TD PORT="wrond_doc_type">wrond_doc</TD></TR>
			<TR><TD PORT="frames_pos">33</TD><TD PORT="frames_size">size</TD><TD>Framez</TD><TD PORT="frames_type">frames</TD></TR>
		</TABLE>>];
		subgraph cluster__uuid {
			label="NtMdt::Uuid";
			graph[style=dotted];

			uuid__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="data_pos">0</TD><TD PORT="data_size">1</TD><TD>u1</TD><TD PORT="data_type">data</TD></TR>
				<TR><TD COLSPAN="4" PORT="data__repeat">repeat 16 times</TD></TR>
			</TABLE>>];
		}
		subgraph cluster__framez {
			label="NtMdt::Framez";
			graph[style=dotted];

			framez__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="frames_pos">0</TD><TD PORT="frames_size">...</TD><TD>Frame</TD><TD PORT="frames_type">frames</TD></TR>
				<TR><TD COLSPAN="4" PORT="frames__repeat">repeat (_root.last_frame + 1) times</TD></TR>
			</TABLE>>];
		}
		subgraph cluster__frame {
			label="NtMdt::Frame";
			graph[style=dotted];

			frame__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="size_pos">0</TD><TD PORT="size_size">4</TD><TD>u4le</TD><TD PORT="size_type">size</TD></TR>
				<TR><TD PORT="main_pos">4</TD><TD PORT="main_size">(size - 4)</TD><TD>FrameMain</TD><TD PORT="main_type">main</TD></TR>
			</TABLE>>];
			subgraph cluster__dots {
				label="NtMdt::Frame::Dots";
				graph[style=dotted];

				dots__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="fm_ndots_pos">0</TD><TD PORT="fm_ndots_size">2</TD><TD>u2le</TD><TD PORT="fm_ndots_type">fm_ndots</TD></TR>
					<TR><TD PORT="coord_header_pos">2</TD><TD PORT="coord_header_size">...</TD><TD>DotsHeader</TD><TD PORT="coord_header_type">coord_header</TD></TR>
					<TR><TD PORT="coordinates_pos">...</TD><TD PORT="coordinates_size">16</TD><TD>DotsData</TD><TD PORT="coordinates_type">coordinates</TD></TR>
					<TR><TD COLSPAN="4" PORT="coordinates__repeat">repeat fm_ndots times</TD></TR>
					<TR><TD PORT="data_pos">...</TD><TD PORT="data_size">...</TD><TD>DataLinez</TD><TD PORT="data_type">data</TD></TR>
					<TR><TD COLSPAN="4" PORT="data__repeat">repeat fm_ndots times</TD></TR>
				</TABLE>>];
				subgraph cluster__dots_header {
					label="NtMdt::Frame::Dots::DotsHeader";
					graph[style=dotted];

					dots_header__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="header_size_pos">0</TD><TD PORT="header_size_size">4</TD><TD>s4le</TD><TD PORT="header_size_type">header_size</TD></TR>
						<TR><TD PORT="header_pos">4</TD><TD PORT="header_size">header_size</TD><TD>Header</TD><TD PORT="header_type">header</TD></TR>
					</TABLE>>];
					subgraph cluster__header_ {
						label="NtMdt::Frame::Dots::DotsHeader::Header";
						graph[style=dotted];

						header___seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
							<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
							<TR><TD PORT="coord_size_pos">0</TD><TD PORT="coord_size_size">4</TD><TD>s4le</TD><TD PORT="coord_size_type">coord_size</TD></TR>
							<TR><TD PORT="version_pos">4</TD><TD PORT="version_size">4</TD><TD>s4le</TD><TD PORT="version_type">version</TD></TR>
							<TR><TD PORT="xyunits_pos">8</TD><TD PORT="xyunits_size">2</TD><TD>s2le→Unit</TD><TD PORT="xyunits_type">xyunits</TD></TR>
						</TABLE>>];
					}
				}
				subgraph cluster__dots_data {
					label="NtMdt::Frame::Dots::DotsData";
					graph[style=dotted];

					dots_data__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="coord_x_pos">0</TD><TD PORT="coord_x_size">4</TD><TD>f4le</TD><TD PORT="coord_x_type">coord_x</TD></TR>
						<TR><TD PORT="coord_y_pos">4</TD><TD PORT="coord_y_size">4</TD><TD>f4le</TD><TD PORT="coord_y_type">coord_y</TD></TR>
						<TR><TD PORT="forward_size_pos">8</TD><TD PORT="forward_size_size">4</TD><TD>s4le</TD><TD PORT="forward_size_type">forward_size</TD></TR>
						<TR><TD PORT="backward_size_pos">12</TD><TD PORT="backward_size_size">4</TD><TD>s4le</TD><TD PORT="backward_size_type">backward_size</TD></TR>
					</TABLE>>];
				}
				subgraph cluster__data_linez {
					label="NtMdt::Frame::Dots::DataLinez";
					graph[style=dotted];

					data_linez__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="forward_pos">0</TD><TD PORT="forward_size">2</TD><TD>s2le</TD><TD PORT="forward_type">forward</TD></TR>
						<TR><TD COLSPAN="4" PORT="forward__repeat">repeat _parent.coordinates[index].forward_size times</TD></TR>
						<TR><TD PORT="backward_pos">...</TD><TD PORT="backward_size">2</TD><TD>s2le</TD><TD PORT="backward_type">backward</TD></TR>
						<TR><TD COLSPAN="4" PORT="backward__repeat">repeat _parent.coordinates[index].backward_size times</TD></TR>
					</TABLE>>];
				}
			}
			subgraph cluster__frame_main {
				label="NtMdt::Frame::FrameMain";
				graph[style=dotted];

				frame_main__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="type_pos">0</TD><TD PORT="type_size">2</TD><TD>u2le→FrameType</TD><TD PORT="type_type">type</TD></TR>
					<TR><TD PORT="version_pos">2</TD><TD PORT="version_size">2</TD><TD>Version</TD><TD PORT="version_type">version</TD></TR>
					<TR><TD PORT="date_time_pos">4</TD><TD PORT="date_time_size">12</TD><TD>DateTime</TD><TD PORT="date_time_type">date_time</TD></TR>
					<TR><TD PORT="var_size_pos">16</TD><TD PORT="var_size_size">2</TD><TD>u2le</TD><TD PORT="var_size_type">var_size</TD></TR>
					<TR><TD PORT="frame_data_pos">18</TD><TD PORT="frame_data_size">...</TD><TD>switch (type)</TD><TD PORT="frame_data_type">frame_data</TD></TR>
				</TABLE>>];
frame_main__seq_frame_data_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
	<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
	<TR><TD>:frame_type_mda</TD><TD PORT="case0">FdMetaData</TD></TR>
	<TR><TD>:frame_type_curves_new</TD><TD PORT="case1">FdCurvesNew</TD></TR>
	<TR><TD>:frame_type_curves</TD><TD PORT="case2">FdSpectroscopy</TD></TR>
	<TR><TD>:frame_type_spectroscopy</TD><TD PORT="case3">FdSpectroscopy</TD></TR>
	<TR><TD>:frame_type_scanned</TD><TD PORT="case4">FdScanned</TD></TR>
</TABLE>>];
			}
			subgraph cluster__fd_curves_new {
				label="NtMdt::Frame::FdCurvesNew";
				graph[style=dotted];

				fd_curves_new__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="block_count_pos">0</TD><TD PORT="block_count_size">4</TD><TD>u4le</TD><TD PORT="block_count_type">block_count</TD></TR>
					<TR><TD PORT="blocks_headers_pos">4</TD><TD PORT="blocks_headers_size">8</TD><TD>BlockDescr</TD><TD PORT="blocks_headers_type">blocks_headers</TD></TR>
					<TR><TD COLSPAN="4" PORT="blocks_headers__repeat">repeat block_count times</TD></TR>
					<TR><TD PORT="blocks_names_pos">...</TD><TD PORT="blocks_names_size">blocks_headers[i].name_len</TD><TD>str(UTF-8)</TD><TD PORT="blocks_names_type">blocks_names</TD></TR>
					<TR><TD COLSPAN="4" PORT="blocks_names__repeat">repeat block_count times</TD></TR>
					<TR><TD PORT="blocks_data_pos">...</TD><TD PORT="blocks_data_size">blocks_headers[i].len</TD><TD></TD><TD PORT="blocks_data_type">blocks_data</TD></TR>
					<TR><TD COLSPAN="4" PORT="blocks_data__repeat">repeat block_count times</TD></TR>
				</TABLE>>];
				subgraph cluster__block_descr {
					label="NtMdt::Frame::FdCurvesNew::BlockDescr";
					graph[style=dotted];

					block_descr__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="name_len_pos">0</TD><TD PORT="name_len_size">4</TD><TD>u4le</TD><TD PORT="name_len_type">name_len</TD></TR>
						<TR><TD PORT="len_pos">4</TD><TD PORT="len_size">4</TD><TD>u4le</TD><TD PORT="len_type">len</TD></TR>
					</TABLE>>];
				}
			}
			subgraph cluster__fd_meta_data {
				label="NtMdt::Frame::FdMetaData";
				graph[style=dotted];

				fd_meta_data__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="head_size_pos">0</TD><TD PORT="head_size_size">4</TD><TD>u4le</TD><TD PORT="head_size_type">head_size</TD></TR>
					<TR><TD PORT="tot_len_pos">4</TD><TD PORT="tot_len_size">4</TD><TD>u4le</TD><TD PORT="tot_len_type">tot_len</TD></TR>
					<TR><TD PORT="guids_pos">8</TD><TD PORT="guids_size">16</TD><TD>Uuid</TD><TD PORT="guids_type">guids</TD></TR>
					<TR><TD COLSPAN="4" PORT="guids__repeat">repeat 2 times</TD></TR>
					<TR><TD PORT="frame_status_pos">40</TD><TD PORT="frame_status_size">4</TD><TD></TD><TD PORT="frame_status_type">frame_status</TD></TR>
					<TR><TD PORT="name_size_pos">44</TD><TD PORT="name_size_size">4</TD><TD>u4le</TD><TD PORT="name_size_type">name_size</TD></TR>
					<TR><TD PORT="comm_size_pos">48</TD><TD PORT="comm_size_size">4</TD><TD>u4le</TD><TD PORT="comm_size_type">comm_size</TD></TR>
					<TR><TD PORT="view_info_size_pos">52</TD><TD PORT="view_info_size_size">4</TD><TD>u4le</TD><TD PORT="view_info_size_type">view_info_size</TD></TR>
					<TR><TD PORT="spec_size_pos">56</TD><TD PORT="spec_size_size">4</TD><TD>u4le</TD><TD PORT="spec_size_type">spec_size</TD></TR>
					<TR><TD PORT="source_info_size_pos">60</TD><TD PORT="source_info_size_size">4</TD><TD>u4le</TD><TD PORT="source_info_size_type">source_info_size</TD></TR>
					<TR><TD PORT="var_size_pos">64</TD><TD PORT="var_size_size">4</TD><TD>u4le</TD><TD PORT="var_size_type">var_size</TD></TR>
					<TR><TD PORT="data_offset_pos">68</TD><TD PORT="data_offset_size">4</TD><TD>u4le</TD><TD PORT="data_offset_type">data_offset</TD></TR>
					<TR><TD PORT="data_size_pos">72</TD><TD PORT="data_size_size">4</TD><TD>u4le</TD><TD PORT="data_size_type">data_size</TD></TR>
					<TR><TD PORT="title_pos">76</TD><TD PORT="title_size">name_size</TD><TD>str(UTF-8)</TD><TD PORT="title_type">title</TD></TR>
					<TR><TD PORT="xml_pos">...</TD><TD PORT="xml_size">comm_size</TD><TD>str(UTF-8)</TD><TD PORT="xml_type">xml</TD></TR>
					<TR><TD PORT="struct_len_pos">...</TD><TD PORT="struct_len_size">4</TD><TD>u4le</TD><TD PORT="struct_len_type">struct_len</TD></TR>
					<TR><TD PORT="array_size_pos">...</TD><TD PORT="array_size_size">8</TD><TD>u8le</TD><TD PORT="array_size_type">array_size</TD></TR>
					<TR><TD PORT="cell_size_pos">...</TD><TD PORT="cell_size_size">4</TD><TD>u4le</TD><TD PORT="cell_size_type">cell_size</TD></TR>
					<TR><TD PORT="n_dimensions_pos">...</TD><TD PORT="n_dimensions_size">4</TD><TD>u4le</TD><TD PORT="n_dimensions_type">n_dimensions</TD></TR>
					<TR><TD PORT="n_mesurands_pos">...</TD><TD PORT="n_mesurands_size">4</TD><TD>u4le</TD><TD PORT="n_mesurands_type">n_mesurands</TD></TR>
					<TR><TD PORT="dimensions_pos">...</TD><TD PORT="dimensions_size">...</TD><TD>Calibration</TD><TD PORT="dimensions_type">dimensions</TD></TR>
					<TR><TD COLSPAN="4" PORT="dimensions__repeat">repeat n_dimensions times</TD></TR>
					<TR><TD PORT="mesurands_pos">...</TD><TD PORT="mesurands_size">...</TD><TD>Calibration</TD><TD PORT="mesurands_type">mesurands</TD></TR>
					<TR><TD COLSPAN="4" PORT="mesurands__repeat">repeat n_mesurands times</TD></TR>
				</TABLE>>];
				fd_meta_data__inst__image [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="image_pos">data_offset</TD><TD PORT="image_size">data_size</TD><TD>Image</TD><TD PORT="image_type">image</TD></TR>
				</TABLE>>];
				subgraph cluster__image {
					label="NtMdt::Frame::FdMetaData::Image";
					graph[style=dotted];

					image__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="image_pos">0</TD><TD PORT="image_size">...</TD><TD>Vec</TD><TD PORT="image_type">image</TD></TR>
						<TR><TD COLSPAN="4" PORT="image__repeat">repeat to end of stream</TD></TR>
					</TABLE>>];
					subgraph cluster__vec {
						label="NtMdt::Frame::FdMetaData::Image::Vec";
						graph[style=dotted];

						vec__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
							<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
							<TR><TD PORT="items_pos">0</TD><TD PORT="items_size">...</TD><TD>switch (_parent._parent.mesurands[i].data_type)</TD><TD PORT="items_type">items</TD></TR>
							<TR><TD COLSPAN="4" PORT="items__repeat">repeat _parent._parent.n_mesurands times</TD></TR>
						</TABLE>>];
vec__seq_items_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
	<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
					}
				}
				subgraph cluster__calibration {
					label="NtMdt::Frame::FdMetaData::Calibration";
					graph[style=dotted];

					calibration__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="len_tot_pos">0</TD><TD PORT="len_tot_size">4</TD><TD>u4le</TD><TD PORT="len_tot_type">len_tot</TD></TR>
						<TR><TD PORT="len_struct_pos">4</TD><TD PORT="len_struct_size">4</TD><TD>u4le</TD><TD PORT="len_struct_type">len_struct</TD></TR>
						<TR><TD PORT="len_name_pos">8</TD><TD PORT="len_name_size">4</TD><TD>u4le</TD><TD PORT="len_name_type">len_name</TD></TR>
						<TR><TD PORT="len_comment_pos">12</TD><TD PORT="len_comment_size">4</TD><TD>u4le</TD><TD PORT="len_comment_type">len_comment</TD></TR>
						<TR><TD PORT="len_unit_pos">16</TD><TD PORT="len_unit_size">4</TD><TD>u4le</TD><TD PORT="len_unit_type">len_unit</TD></TR>
						<TR><TD PORT="si_unit_pos">20</TD><TD PORT="si_unit_size">8</TD><TD>u8le</TD><TD PORT="si_unit_type">si_unit</TD></TR>
						<TR><TD PORT="accuracy_pos">28</TD><TD PORT="accuracy_size">8</TD><TD>f8le</TD><TD PORT="accuracy_type">accuracy</TD></TR>
						<TR><TD PORT="function_id_and_dimensions_pos">36</TD><TD PORT="function_id_and_dimensions_size">8</TD><TD>u8le</TD><TD PORT="function_id_and_dimensions_type">function_id_and_dimensions</TD></TR>
						<TR><TD PORT="bias_pos">44</TD><TD PORT="bias_size">8</TD><TD>f8le</TD><TD PORT="bias_type">bias</TD></TR>
						<TR><TD PORT="scale_pos">52</TD><TD PORT="scale_size">8</TD><TD>f8le</TD><TD PORT="scale_type">scale</TD></TR>
						<TR><TD PORT="min_index_pos">60</TD><TD PORT="min_index_size">8</TD><TD>u8le</TD><TD PORT="min_index_type">min_index</TD></TR>
						<TR><TD PORT="max_index_pos">68</TD><TD PORT="max_index_size">8</TD><TD>u8le</TD><TD PORT="max_index_type">max_index</TD></TR>
						<TR><TD PORT="data_type_pos">76</TD><TD PORT="data_type_size">4</TD><TD>s4le→DataType</TD><TD PORT="data_type_type">data_type</TD></TR>
						<TR><TD PORT="len_author_pos">80</TD><TD PORT="len_author_size">4</TD><TD>u4le</TD><TD PORT="len_author_type">len_author</TD></TR>
						<TR><TD PORT="name_pos">84</TD><TD PORT="name_size">len_name</TD><TD>str(utf-8)</TD><TD PORT="name_type">name</TD></TR>
						<TR><TD PORT="comment_pos">...</TD><TD PORT="comment_size">len_comment</TD><TD>str(utf-8)</TD><TD PORT="comment_type">comment</TD></TR>
						<TR><TD PORT="unit_pos">...</TD><TD PORT="unit_size">len_unit</TD><TD>str(utf-8)</TD><TD PORT="unit_type">unit</TD></TR>
						<TR><TD PORT="author_pos">...</TD><TD PORT="author_size">len_author</TD><TD>str(utf-8)</TD><TD PORT="author_type">author</TD></TR>
					</TABLE>>];
					calibration__inst__count [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
						<TR><TD>count</TD><TD>((max_index - min_index) + 1)</TD></TR>
					</TABLE>>];
				}
			}
			subgraph cluster__fd_spectroscopy {
				label="NtMdt::Frame::FdSpectroscopy";
				graph[style=dotted];

				fd_spectroscopy__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="vars_pos">0</TD><TD PORT="vars_size">_parent.var_size</TD><TD>Vars</TD><TD PORT="vars_type">vars</TD></TR>
					<TR><TD PORT="fm_mode_pos">...</TD><TD PORT="fm_mode_size">2</TD><TD>u2le</TD><TD PORT="fm_mode_type">fm_mode</TD></TR>
					<TR><TD PORT="fm_xres_pos">...</TD><TD PORT="fm_xres_size">2</TD><TD>u2le</TD><TD PORT="fm_xres_type">fm_xres</TD></TR>
					<TR><TD PORT="fm_yres_pos">...</TD><TD PORT="fm_yres_size">2</TD><TD>u2le</TD><TD PORT="fm_yres_type">fm_yres</TD></TR>
					<TR><TD PORT="dots_pos">...</TD><TD PORT="dots_size">...</TD><TD>Dots</TD><TD PORT="dots_type">dots</TD></TR>
					<TR><TD PORT="data_pos">...</TD><TD PORT="data_size">2</TD><TD>s2le</TD><TD PORT="data_type">data</TD></TR>
					<TR><TD COLSPAN="4" PORT="data__repeat">repeat (fm_xres * fm_yres) times</TD></TR>
					<TR><TD PORT="title_pos">...</TD><TD PORT="title_size">...</TD><TD>Title</TD><TD PORT="title_type">title</TD></TR>
					<TR><TD PORT="xml_pos">...</TD><TD PORT="xml_size">...</TD><TD>Xml</TD><TD PORT="xml_type">xml</TD></TR>
				</TABLE>>];
				subgraph cluster__vars {
					label="NtMdt::Frame::FdSpectroscopy::Vars";
					graph[style=dotted];

					vars__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="x_scale_pos">0</TD><TD PORT="x_scale_size">10</TD><TD>AxisScale</TD><TD PORT="x_scale_type">x_scale</TD></TR>
						<TR><TD PORT="y_scale_pos">10</TD><TD PORT="y_scale_size">10</TD><TD>AxisScale</TD><TD PORT="y_scale_type">y_scale</TD></TR>
						<TR><TD PORT="z_scale_pos">20</TD><TD PORT="z_scale_size">10</TD><TD>AxisScale</TD><TD PORT="z_scale_type">z_scale</TD></TR>
						<TR><TD PORT="sp_mode_pos">30</TD><TD PORT="sp_mode_size">2</TD><TD>u2le</TD><TD PORT="sp_mode_type">sp_mode</TD></TR>
						<TR><TD PORT="sp_filter_pos">32</TD><TD PORT="sp_filter_size">2</TD><TD>u2le</TD><TD PORT="sp_filter_type">sp_filter</TD></TR>
						<TR><TD PORT="u_begin_pos">34</TD><TD PORT="u_begin_size">4</TD><TD>f4le</TD><TD PORT="u_begin_type">u_begin</TD></TR>
						<TR><TD PORT="u_end_pos">38</TD><TD PORT="u_end_size">4</TD><TD>f4le</TD><TD PORT="u_end_type">u_end</TD></TR>
						<TR><TD PORT="z_up_pos">42</TD><TD PORT="z_up_size">2</TD><TD>s2le</TD><TD PORT="z_up_type">z_up</TD></TR>
						<TR><TD PORT="z_down_pos">44</TD><TD PORT="z_down_size">2</TD><TD>s2le</TD><TD PORT="z_down_type">z_down</TD></TR>
						<TR><TD PORT="sp_averaging_pos">46</TD><TD PORT="sp_averaging_size">2</TD><TD>u2le</TD><TD PORT="sp_averaging_type">sp_averaging</TD></TR>
						<TR><TD PORT="sp_repeat_pos">48</TD><TD PORT="sp_repeat_size">1</TD><TD>u1</TD><TD PORT="sp_repeat_type">sp_repeat</TD></TR>
						<TR><TD PORT="sp_back_pos">49</TD><TD PORT="sp_back_size">1</TD><TD>u1</TD><TD PORT="sp_back_type">sp_back</TD></TR>
						<TR><TD PORT="sp_4nx_pos">50</TD><TD PORT="sp_4nx_size">2</TD><TD>s2le</TD><TD PORT="sp_4nx_type">sp_4nx</TD></TR>
						<TR><TD PORT="sp_osc_pos">52</TD><TD PORT="sp_osc_size">1</TD><TD>u1</TD><TD PORT="sp_osc_type">sp_osc</TD></TR>
						<TR><TD PORT="sp_n4_pos">53</TD><TD PORT="sp_n4_size">1</TD><TD>u1</TD><TD PORT="sp_n4_type">sp_n4</TD></TR>
						<TR><TD PORT="sp_4x0_pos">54</TD><TD PORT="sp_4x0_size">4</TD><TD>f4le</TD><TD PORT="sp_4x0_type">sp_4x0</TD></TR>
						<TR><TD PORT="sp_4xr_pos">58</TD><TD PORT="sp_4xr_size">4</TD><TD>f4le</TD><TD PORT="sp_4xr_type">sp_4xr</TD></TR>
						<TR><TD PORT="sp_4u_pos">62</TD><TD PORT="sp_4u_size">2</TD><TD>s2le</TD><TD PORT="sp_4u_type">sp_4u</TD></TR>
						<TR><TD PORT="sp_4i_pos">64</TD><TD PORT="sp_4i_size">2</TD><TD>s2le</TD><TD PORT="sp_4i_type">sp_4i</TD></TR>
						<TR><TD PORT="sp_nx_pos">66</TD><TD PORT="sp_nx_size">2</TD><TD>s2le</TD><TD PORT="sp_nx_type">sp_nx</TD></TR>
					</TABLE>>];
				}
			}
			subgraph cluster__date_time {
				label="NtMdt::Frame::DateTime";
				graph[style=dotted];

				date_time__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="date_pos">0</TD><TD PORT="date_size">6</TD><TD>Date</TD><TD PORT="date_type">date</TD></TR>
					<TR><TD PORT="time_pos">6</TD><TD PORT="time_size">6</TD><TD>Time</TD><TD PORT="time_type">time</TD></TR>
				</TABLE>>];
				subgraph cluster__date {
					label="NtMdt::Frame::DateTime::Date";
					graph[style=dotted];

					date__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="year_pos">0</TD><TD PORT="year_size">2</TD><TD>u2le</TD><TD PORT="year_type">year</TD></TR>
						<TR><TD PORT="month_pos">2</TD><TD PORT="month_size">2</TD><TD>u2le</TD><TD PORT="month_type">month</TD></TR>
						<TR><TD PORT="day_pos">4</TD><TD PORT="day_size">2</TD><TD>u2le</TD><TD PORT="day_type">day</TD></TR>
					</TABLE>>];
				}
				subgraph cluster__time {
					label="NtMdt::Frame::DateTime::Time";
					graph[style=dotted];

					time__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="hour_pos">0</TD><TD PORT="hour_size">2</TD><TD>u2le</TD><TD PORT="hour_type">hour</TD></TR>
						<TR><TD PORT="min_pos">2</TD><TD PORT="min_size">2</TD><TD>u2le</TD><TD PORT="min_type">min</TD></TR>
						<TR><TD PORT="sec_pos">4</TD><TD PORT="sec_size">2</TD><TD>u2le</TD><TD PORT="sec_type">sec</TD></TR>
					</TABLE>>];
				}
			}
			subgraph cluster__axis_scale {
				label="NtMdt::Frame::AxisScale";
				graph[style=dotted];

				axis_scale__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="offset_pos">0</TD><TD PORT="offset_size">4</TD><TD>f4le</TD><TD PORT="offset_type">offset</TD></TR>
					<TR><TD PORT="step_pos">4</TD><TD PORT="step_size">4</TD><TD>f4le</TD><TD PORT="step_type">step</TD></TR>
					<TR><TD PORT="unit_pos">8</TD><TD PORT="unit_size">2</TD><TD>s2le→Unit</TD><TD PORT="unit_type">unit</TD></TR>
				</TABLE>>];
			}
			subgraph cluster__fd_scanned {
				label="NtMdt::Frame::FdScanned";
				graph[style=dotted];

				fd_scanned__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
					<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
					<TR><TD PORT="vars_pos">0</TD><TD PORT="vars_size">_parent.var_size</TD><TD>Vars</TD><TD PORT="vars_type">vars</TD></TR>
					<TR><TD PORT="orig_format_pos">...</TD><TD PORT="orig_format_size">4</TD><TD>u4le</TD><TD PORT="orig_format_type">orig_format</TD></TR>
					<TR><TD PORT="tune_pos">...</TD><TD PORT="tune_size">4</TD><TD>u4le→LiftMode</TD><TD PORT="tune_type">tune</TD></TR>
					<TR><TD PORT="feedback_gain_pos">...</TD><TD PORT="feedback_gain_size">8</TD><TD>f8le</TD><TD PORT="feedback_gain_type">feedback_gain</TD></TR>
					<TR><TD PORT="dac_scale_pos">...</TD><TD PORT="dac_scale_size">4</TD><TD>s4le</TD><TD PORT="dac_scale_type">dac_scale</TD></TR>
					<TR><TD PORT="overscan_pos">...</TD><TD PORT="overscan_size">4</TD><TD>s4le</TD><TD PORT="overscan_type">overscan</TD></TR>
					<TR><TD PORT="fm_mode_pos">...</TD><TD PORT="fm_mode_size">2</TD><TD>u2le</TD><TD PORT="fm_mode_type">fm_mode</TD></TR>
					<TR><TD PORT="fm_xres_pos">...</TD><TD PORT="fm_xres_size">2</TD><TD>u2le</TD><TD PORT="fm_xres_type">fm_xres</TD></TR>
					<TR><TD PORT="fm_yres_pos">...</TD><TD PORT="fm_yres_size">2</TD><TD>u2le</TD><TD PORT="fm_yres_type">fm_yres</TD></TR>
					<TR><TD PORT="dots_pos">...</TD><TD PORT="dots_size">...</TD><TD>Dots</TD><TD PORT="dots_type">dots</TD></TR>
					<TR><TD PORT="image_pos">...</TD><TD PORT="image_size">2</TD><TD>s2le</TD><TD PORT="image_type">image</TD></TR>
					<TR><TD COLSPAN="4" PORT="image__repeat">repeat (fm_xres * fm_yres) times</TD></TR>
					<TR><TD PORT="title_pos">...</TD><TD PORT="title_size">...</TD><TD>Title</TD><TD PORT="title_type">title</TD></TR>
					<TR><TD PORT="xml_pos">...</TD><TD PORT="xml_size">...</TD><TD>Xml</TD><TD PORT="xml_type">xml</TD></TR>
				</TABLE>>];
				subgraph cluster__vars {
					label="NtMdt::Frame::FdScanned::Vars";
					graph[style=dotted];

					vars__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="x_scale_pos">0</TD><TD PORT="x_scale_size">10</TD><TD>AxisScale</TD><TD PORT="x_scale_type">x_scale</TD></TR>
						<TR><TD PORT="y_scale_pos">10</TD><TD PORT="y_scale_size">10</TD><TD>AxisScale</TD><TD PORT="y_scale_type">y_scale</TD></TR>
						<TR><TD PORT="z_scale_pos">20</TD><TD PORT="z_scale_size">10</TD><TD>AxisScale</TD><TD PORT="z_scale_type">z_scale</TD></TR>
						<TR><TD PORT="channel_index_pos">30</TD><TD PORT="channel_index_size">1</TD><TD>u1→AdcMode</TD><TD PORT="channel_index_type">channel_index</TD></TR>
						<TR><TD PORT="mode_pos">31</TD><TD PORT="mode_size">1</TD><TD>u1→Mode</TD><TD PORT="mode_type">mode</TD></TR>
						<TR><TD PORT="xres_pos">32</TD><TD PORT="xres_size">2</TD><TD>u2le</TD><TD PORT="xres_type">xres</TD></TR>
						<TR><TD PORT="yres_pos">34</TD><TD PORT="yres_size">2</TD><TD>u2le</TD><TD PORT="yres_type">yres</TD></TR>
						<TR><TD PORT="ndacq_pos">36</TD><TD PORT="ndacq_size">2</TD><TD>u2le</TD><TD PORT="ndacq_type">ndacq</TD></TR>
						<TR><TD PORT="step_length_pos">38</TD><TD PORT="step_length_size">4</TD><TD>f4le</TD><TD PORT="step_length_type">step_length</TD></TR>
						<TR><TD PORT="adt_pos">42</TD><TD PORT="adt_size">2</TD><TD>u2le</TD><TD PORT="adt_type">adt</TD></TR>
						<TR><TD PORT="adc_gain_amp_log10_pos">44</TD><TD PORT="adc_gain_amp_log10_size">1</TD><TD>u1</TD><TD PORT="adc_gain_amp_log10_type">adc_gain_amp_log10</TD></TR>
						<TR><TD PORT="adc_index_pos">45</TD><TD PORT="adc_index_size">1</TD><TD>u1</TD><TD PORT="adc_index_type">adc_index</TD></TR>
						<TR><TD PORT="input_signal_or_version_pos">46</TD><TD PORT="input_signal_or_version_size">1</TD><TD>u1</TD><TD PORT="input_signal_or_version_type">input_signal_or_version</TD></TR>
						<TR><TD PORT="substr_plane_order_or_pass_num_pos">47</TD><TD PORT="substr_plane_order_or_pass_num_size">1</TD><TD>u1</TD><TD PORT="substr_plane_order_or_pass_num_type">substr_plane_order_or_pass_num</TD></TR>
						<TR><TD PORT="scan_dir_pos">48</TD><TD PORT="scan_dir_size">1</TD><TD>ScanDir</TD><TD PORT="scan_dir_type">scan_dir</TD></TR>
						<TR><TD PORT="power_of_2_pos">49</TD><TD PORT="power_of_2_size">1</TD><TD>u1</TD><TD PORT="power_of_2_type">power_of_2</TD></TR>
						<TR><TD PORT="velocity_pos">50</TD><TD PORT="velocity_size">4</TD><TD>f4le</TD><TD PORT="velocity_type">velocity</TD></TR>
						<TR><TD PORT="setpoint_pos">54</TD><TD PORT="setpoint_size">4</TD><TD>f4le</TD><TD PORT="setpoint_type">setpoint</TD></TR>
						<TR><TD PORT="bias_voltage_pos">58</TD><TD PORT="bias_voltage_size">4</TD><TD>f4le</TD><TD PORT="bias_voltage_type">bias_voltage</TD></TR>
						<TR><TD PORT="draw_pos">62</TD><TD PORT="draw_size">1</TD><TD>u1</TD><TD PORT="draw_type">draw</TD></TR>
						<TR><TD PORT="reserved_pos">63</TD><TD PORT="reserved_size">1</TD><TD>u1</TD><TD PORT="reserved_type">reserved</TD></TR>
						<TR><TD PORT="xoff_pos">64</TD><TD PORT="xoff_size">4</TD><TD>s4le</TD><TD PORT="xoff_type">xoff</TD></TR>
						<TR><TD PORT="yoff_pos">68</TD><TD PORT="yoff_size">4</TD><TD>s4le</TD><TD PORT="yoff_type">yoff</TD></TR>
						<TR><TD PORT="nl_corr_pos">72</TD><TD PORT="nl_corr_size">1</TD><TD>u1</TD><TD PORT="nl_corr_type">nl_corr</TD></TR>
					</TABLE>>];
				}
				subgraph cluster__dot {
					label="NtMdt::Frame::FdScanned::Dot";
					graph[style=dotted];

					dot__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="x_pos">0</TD><TD PORT="x_size">2</TD><TD>s2le</TD><TD PORT="x_type">x</TD></TR>
						<TR><TD PORT="y_pos">2</TD><TD PORT="y_size">2</TD><TD>s2le</TD><TD PORT="y_type">y</TD></TR>
					</TABLE>>];
				}
				subgraph cluster__scan_dir {
					label="NtMdt::Frame::FdScanned::ScanDir";
					graph[style=dotted];

					scan_dir__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
						<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
						<TR><TD PORT="unkn_pos">0</TD><TD PORT="unkn_size">4b</TD><TD>b4</TD><TD PORT="unkn_type">unkn</TD></TR>
						<TR><TD PORT="double_pass_pos">0:4</TD><TD PORT="double_pass_size">1b</TD><TD>BitsType1(BigBitEndian)</TD><TD PORT="double_pass_type">double_pass</TD></TR>
						<TR><TD PORT="bottom_pos">0:5</TD><TD PORT="bottom_size">1b</TD><TD>BitsType1(BigBitEndian)</TD><TD PORT="bottom_type">bottom</TD></TR>
						<TR><TD PORT="left_pos">0:6</TD><TD PORT="left_size">1b</TD><TD>BitsType1(BigBitEndian)</TD><TD PORT="left_type">left</TD></TR>
						<TR><TD PORT="horizontal_pos">0:7</TD><TD PORT="horizontal_size">1b</TD><TD>BitsType1(BigBitEndian)</TD><TD PORT="horizontal_type">horizontal</TD></TR>
					</TABLE>>];
				}
			}
		}
		subgraph cluster__version {
			label="NtMdt::Version";
			graph[style=dotted];

			version__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="minor_pos">0</TD><TD PORT="minor_size">1</TD><TD>u1</TD><TD PORT="minor_type">minor</TD></TR>
				<TR><TD PORT="major_pos">1</TD><TD PORT="major_size">1</TD><TD>u1</TD><TD PORT="major_type">major</TD></TR>
			</TABLE>>];
		}
		subgraph cluster__xml {
			label="NtMdt::Xml";
			graph[style=dotted];

			xml__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="xml_len_pos">0</TD><TD PORT="xml_len_size">4</TD><TD>u4le</TD><TD PORT="xml_len_type">xml_len</TD></TR>
				<TR><TD PORT="xml_pos">4</TD><TD PORT="xml_size">xml_len</TD><TD>str(UTF-16LE)</TD><TD PORT="xml_type">xml</TD></TR>
			</TABLE>>];
		}
		subgraph cluster__title {
			label="NtMdt::Title";
			graph[style=dotted];

			title__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="title_len_pos">0</TD><TD PORT="title_len_size">4</TD><TD>u4le</TD><TD PORT="title_len_type">title_len</TD></TR>
				<TR><TD PORT="title_pos">4</TD><TD PORT="title_size">title_len</TD><TD>str(cp1251)</TD><TD PORT="title_type">title</TD></TR>
			</TABLE>>];
		}
	}
	nt_mdt__seq:size_type -> nt_mdt__seq:frames_size [color="#404040"];
	nt_mdt__seq:frames_type -> framez__seq [style=bold];
	framez__seq:frames_type -> frame__seq [style=bold];
	nt_mdt__seq:last_frame_type -> framez__seq:frames__repeat [color="#404040"];
	frame__seq:size_type -> frame__seq:main_size [color="#404040"];
	frame__seq:main_type -> frame_main__seq [style=bold];
	dots__seq:coord_header_type -> dots_header__seq [style=bold];
	dots__seq:coordinates_type -> dots_data__seq [style=bold];
	dots__seq:fm_ndots_type -> dots__seq:coordinates__repeat [color="#404040"];
	dots__seq:data_type -> data_linez__seq [style=bold];
	dots__seq:fm_ndots_type -> dots__seq:data__repeat [color="#404040"];
	dots_header__seq:header_size_type -> dots_header__seq:header_size [color="#404040"];
	dots_header__seq:header_type -> header___seq [style=bold];
	dots_data__seq:forward_size_type -> data_linez__seq:forward__repeat [color="#404040"];
	dots_data__seq:backward_size_type -> data_linez__seq:backward__repeat [color="#404040"];
	frame_main__seq:version_type -> version__seq [style=bold];
	frame_main__seq:date_time_type -> date_time__seq [style=bold];
	frame_main__seq:frame_data_type -> frame_main__seq_frame_data_switch [style=bold];
	frame_main__seq_frame_data_switch:case0 -> fd_meta_data__seq [style=bold];
	frame_main__seq_frame_data_switch:case1 -> fd_curves_new__seq [style=bold];
	frame_main__seq_frame_data_switch:case2 -> fd_spectroscopy__seq [style=bold];
	frame_main__seq_frame_data_switch:case3 -> fd_spectroscopy__seq [style=bold];
	frame_main__seq_frame_data_switch:case4 -> fd_scanned__seq [style=bold];
	frame_main__seq:type_type -> frame_main__seq:frame_data_type [color="#404040"];
	fd_curves_new__seq:blocks_headers_type -> block_descr__seq [style=bold];
	fd_curves_new__seq:block_count_type -> fd_curves_new__seq:blocks_headers__repeat [color="#404040"];
	block_descr__seq:name_len_type -> fd_curves_new__seq:blocks_names_size [color="#404040"];
	fd_curves_new__seq:block_count_type -> fd_curves_new__seq:blocks_names__repeat [color="#404040"];
	block_descr__seq:len_type -> fd_curves_new__seq:blocks_data_size [color="#404040"];
	fd_curves_new__seq:block_count_type -> fd_curves_new__seq:blocks_data__repeat [color="#404040"];
	fd_meta_data__seq:guids_type -> uuid__seq [style=bold];
	fd_meta_data__seq:name_size_type -> fd_meta_data__seq:title_size [color="#404040"];
	fd_meta_data__seq:comm_size_type -> fd_meta_data__seq:xml_size [color="#404040"];
	fd_meta_data__seq:dimensions_type -> calibration__seq [style=bold];
	fd_meta_data__seq:n_dimensions_type -> fd_meta_data__seq:dimensions__repeat [color="#404040"];
	fd_meta_data__seq:mesurands_type -> calibration__seq [style=bold];
	fd_meta_data__seq:n_mesurands_type -> fd_meta_data__seq:mesurands__repeat [color="#404040"];
	fd_meta_data__seq:data_offset_type -> fd_meta_data__inst__image:image_pos [color="#404040"];
	fd_meta_data__seq:data_size_type -> fd_meta_data__inst__image:image_size [color="#404040"];
	fd_meta_data__inst__image:image_type -> image__seq [style=bold];
	image__seq:image_type -> vec__seq [style=bold];
	vec__seq:items_type -> vec__seq_items_switch [style=bold];
	calibration__seq:data_type_type -> vec__seq:items_type [color="#404040"];
	fd_meta_data__seq:n_mesurands_type -> vec__seq:items__repeat [color="#404040"];
	calibration__seq:len_name_type -> calibration__seq:name_size [color="#404040"];
	calibration__seq:len_comment_type -> calibration__seq:comment_size [color="#404040"];
	calibration__seq:len_unit_type -> calibration__seq:unit_size [color="#404040"];
	calibration__seq:len_author_type -> calibration__seq:author_size [color="#404040"];
	calibration__seq:max_index_type -> calibration__inst__count [color="#404040"];
	calibration__seq:min_index_type -> calibration__inst__count [color="#404040"];
	frame_main__seq:var_size_type -> fd_spectroscopy__seq:vars_size [color="#404040"];
	fd_spectroscopy__seq:vars_type -> vars__seq [style=bold];
	fd_spectroscopy__seq:dots_type -> dots__seq [style=bold];
	fd_spectroscopy__seq:fm_xres_type -> fd_spectroscopy__seq:data__repeat [color="#404040"];
	fd_spectroscopy__seq:fm_yres_type -> fd_spectroscopy__seq:data__repeat [color="#404040"];
	fd_spectroscopy__seq:title_type -> title__seq [style=bold];
	fd_spectroscopy__seq:xml_type -> xml__seq [style=bold];
	vars__seq:x_scale_type -> axis_scale__seq [style=bold];
	vars__seq:y_scale_type -> axis_scale__seq [style=bold];
	vars__seq:z_scale_type -> axis_scale__seq [style=bold];
	date_time__seq:date_type -> date__seq [style=bold];
	date_time__seq:time_type -> time__seq [style=bold];
	frame_main__seq:var_size_type -> fd_scanned__seq:vars_size [color="#404040"];
	fd_scanned__seq:vars_type -> vars__seq [style=bold];
	fd_scanned__seq:dots_type -> dots__seq [style=bold];
	fd_scanned__seq:fm_xres_type -> fd_scanned__seq:image__repeat [color="#404040"];
	fd_scanned__seq:fm_yres_type -> fd_scanned__seq:image__repeat [color="#404040"];
	fd_scanned__seq:title_type -> title__seq [style=bold];
	fd_scanned__seq:xml_type -> xml__seq [style=bold];
	vars__seq:x_scale_type -> axis_scale__seq [style=bold];
	vars__seq:y_scale_type -> axis_scale__seq [style=bold];
	vars__seq:z_scale_type -> axis_scale__seq [style=bold];
	vars__seq:scan_dir_type -> scan_dir__seq [style=bold];
	xml__seq:xml_len_type -> xml__seq:xml_size [color="#404040"];
	title__seq:title_len_type -> title__seq:title_size [color="#404040"];
}