diff --git a/Assignments/A2/A2Soln/Makefile b/Assignments/A2/A2Soln/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..04778e5956337331f11c95a1417b27d8b4268ee8 --- /dev/null +++ b/Assignments/A2/A2Soln/Makefile @@ -0,0 +1,19 @@ +PY = pytest +PYFLAGS = --cov +DOXY = doxygen +DOXYCFG = doxConfig + +RMDIR = rm -rf + +.PHONY: test doc clean + +test: + $(PY) $(PYFLAGS) src + +doc: + $(DOXY) $(DOXYCFG) + cd latex && $(MAKE) + +clean: + @- $(RMDIR) html + @- $(RMDIR) latex diff --git a/Assignments/A2/A2Soln/doxConfig b/Assignments/A2/A2Soln/doxConfig new file mode 100644 index 0000000000000000000000000000000000000000..a2ac78f24d4302e84dc279e83113ba433daef51d --- /dev/null +++ b/Assignments/A2/A2Soln/doxConfig @@ -0,0 +1,2496 @@ +# Doxyfile 1.8.13 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single 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. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "Assignment 2" + +# 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 = + +# 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 = + +# With the PROJECT_LOGO tag one can specify a logo or an 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 = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. 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 = + +# 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 causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = 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. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, 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. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, 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. +# The default value is: YES. + +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 and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# 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. +# The default value is: NO. + +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. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, 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 +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# 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. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +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 list of 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 is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +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-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +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 Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +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 behavior. 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 behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +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. +# The default value is: NO. + +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. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act 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. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +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. +# The default value is: NO. + +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, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. 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: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled 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. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_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); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) 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. +# The default value is: NO. + +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 will make +# doxygen to 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. +# The default value is: YES. + +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. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES 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. +# The default value is: YES. + +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). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef 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, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag 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. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# 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 appears 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. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +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 respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +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. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +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. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If 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, only methods in the interface are +# included. +# The default value is: NO. + +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 namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO 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. +# The default value is: NO. + +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, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +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, these declarations will be +# included in the documentation. +# The default value is: NO. + +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, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +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 then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +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. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# 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. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES 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. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +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 constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: 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 group names will +# appear in their defined order. +# The default value is: NO. + +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 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. +# The default value is: NO. + +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. +# The default value is: NO. + +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. +# The default value is: YES. + +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. +# The default value is: YES. + +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. +# The default value is: YES. + +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. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if <section_label> ... \endif and \cond <section_label> +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have 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 value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +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. +# The default value is: YES. + +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 value 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 value 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. For an example see the documentation. + +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. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This 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. See also \cite for info how to create references. + +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 to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag 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. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag 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. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This 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, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = 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) +# The default value is: $file:$line: $text. + +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 standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is 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. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = src/CurveADT.py \ + src/Data.py \ + src/Load.py \ + src/Plot.py \ + src/SeqServices.py + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +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 patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# 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 = + +# 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. +# The default value is: NO. + +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 +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# 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. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be 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. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +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 information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +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 tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# 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 that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +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. +# The default value is: NO. + +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. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES 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. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = 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. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES 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. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# 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. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +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 a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +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. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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 left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_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. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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 YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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 (see: http://developer.apple.com/tools/xcode/), 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. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset 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. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# 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. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_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. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# 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. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# 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. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# 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). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# 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. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +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. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +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 Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# 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. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they 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. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set 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. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values 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. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# 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. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If 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. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. 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. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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 directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +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 pre-rendered 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. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# 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. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# 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. It is possible to +# search using the keyboard; to jump to the search box use <access key> + S +# (what the <access key> is depends on the OS and browser, but it is typically +# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down +# key> to jump into the search results window, the results can be navigated +# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> +# to select a filter and <Enter> or <escape> to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. There +# are two flavors of web server based searching depending on the EXTERNAL_SEARCH +# setting. When disabled, doxygen will generate a PHP script for searching and +# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing +# and searching needs to be provided by external tools. See the section +# "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Searching" for details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = YES + +# 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. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# 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. +# The default file is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +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. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +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 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +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. See +# section "Doxygen usage" for information on how to let doxygen write the +# default header to a separate file. +# +# Note: Only use a user-defined header if you know what you are doing! The +# following commands have a special meaning inside the header: $title, +# $datetime, $date, $doxygenversion, $projectname, $projectnumber, +# $projectbrief, $projectlogo. Doxygen will replace $title with the empty +# string, for the replacement values of the other commands the user is referred +# to HTML_HEADER. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +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. See +# LATEX_HEADER for more information on how to generate a default footer and what +# special commands can be used inside the footer. +# +# Note: Only use a user-defined footer if you know what you are doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_STYLESHEET = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). 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. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate +# the PDF file directly from the LaTeX files. Set this option to YES, to get a +# higher quality PDF documentation. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +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. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# If the LATEX_SOURCE_CODE tag 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. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +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. See +# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated +# 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. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# 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 too pretty with other RTF +# readers/editors. +# The default value is: NO. + +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. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +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. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +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 some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet 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. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's config file. A template extensions file can be generated +# using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code +# with syntax highlighting in the RTF output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +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. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# The MAN_SUBDIR tag determines the name of the directory created within +# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +# MAN_EXTENSION with the initial . removed. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_SUBDIR = + +# 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 value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +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. +# The default value is: NO. + +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. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_OUTPUT = xml + +# 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. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the +# program listings (including syntax highlighting and cross-referencing +# information) to the DOCBOOK output. Note that enabling this will significantly +# increase the size of the DOCBOOK output. +# The default value is: NO. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_PROGRAMLISTING = NO + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://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. +# The default value is: NO. + +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. +# The default value is: NO. + +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. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +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. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +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. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +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, only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set 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. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES, the include files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +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. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +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. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +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 e.g. +# 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. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +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. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES 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. Such function macros +# are typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. 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. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: 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. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. +# The default value is: NO. + +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. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of 'which perl'). +# The default file (with absolute path) is: /usr/bin/perl. + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram +# (in HTML 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. +# The default value is: YES. + +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 = + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_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. +# The default value is: YES. + +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 (see: +# http://www.graphviz.org/), 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 value is: NO. + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 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. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# When you want a differently looking font in the dot files that doxygen +# generates 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. +# The default value is: Helvetica. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of +# dot graphs. +# Minimum value: 4, maximum value: 24, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the default font as specified with +# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set +# the path where dot can find it using this tag. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is 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. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is 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. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +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. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +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 manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is 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. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is 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. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is 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. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: 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). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +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. +# Note: 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. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag 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. +# This tag requires that the tag HAVE_DOT is set to YES. + +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). +# This tag requires that the tag HAVE_DOT is set to YES. + +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 DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file. If left blank, it is assumed +# PlantUML is not used or called during a preprocessing step. Doxygen will +# generate a warning when it encounters a \startuml command in this case and +# will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for plantuml. + +PLANTUML_CFG_FILE = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# 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. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +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. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +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). +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES to 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. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# files that are used to generate the various graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_CLEANUP = YES diff --git a/Assignments/A2/A2Soln/partner/CurveADT.py b/Assignments/A2/A2Soln/partner/CurveADT.py new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/Assignments/A2/A2Soln/partner/CurveADT.py @@ -0,0 +1 @@ + diff --git a/Assignments/A2/A2Soln/partner/Data.py b/Assignments/A2/A2Soln/partner/Data.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Assignments/A2/A2Soln/partner/SeqServices.py b/Assignments/A2/A2Soln/partner/SeqServices.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Assignments/A2/A2Soln/report/report.pdf b/Assignments/A2/A2Soln/report/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a51abb916e7fdba4bfbd0e929c78623c55635c0 Binary files /dev/null and b/Assignments/A2/A2Soln/report/report.pdf differ diff --git a/Assignments/A2/A2Soln/report/report.tex b/Assignments/A2/A2Soln/report/report.tex new file mode 100644 index 0000000000000000000000000000000000000000..5d2fb5d54fba3f2589b668acd3d5a46142cabd2d --- /dev/null +++ b/Assignments/A2/A2Soln/report/report.tex @@ -0,0 +1,137 @@ +\documentclass[12pt]{article} + +\usepackage{graphicx} +\usepackage{paralist} +\usepackage{listings} +\usepackage{booktabs} + +\oddsidemargin 0mm +\evensidemargin 0mm +\textwidth 160mm +\textheight 200mm + +\pagestyle {plain} +\pagenumbering{arabic} + +\newcounter{stepnum} + +\title{Assignment 2 Solution} +\author{Henry M. 000000000} +\date{\today} + +\begin {document} + +\maketitle + +Introductory blurb. + +\section{Testing of the Original Program} + +Description of approach to testing. Rationale for test case selection. Summary +of results. Any problems uncovered through testing. + +\section{Results of Testing Partner's Code} + +Summary of results. + +\section{Discussion of Test Results} + +\subsection{Problems with Original Code} + +\subsection{Problems with Partner's Code} + +\subsection{Problems with Assignment Specification} + +\section{Answers} + +\begin{enumerate} + +\item What is the mathematical specification of the \texttt{SeqServices} access + program isInBounds(X, x) if the assumption that X is ascending is removed? + +output: $:= \exists\,( i, j \,|\, i, j \in [0..|X| - 1] : X_i \leq x \leq X_j )$ +\\exception: none + +\item How would you modify \texttt{CurveADT.py} to support cubic interpolation? +\begin{enumerate} + \item modify MAX\_ORDER constant in curveADT from 2 to 3 + \item Add an access program, interpCubic that calls scipy with interp1d with kind=3 +\end{enumerate} + + +\item What is your critique of the CurveADT module's interface. In particular, + comment on whether the exported access programs provide an interface that is + consistent, essential, general, minimal and opaque. + +- exceptions should be in SeqServices + +\item What is your critique of the Data abstract object's interface. In + particular, comment on whether the exported access programs provide an + interface that is consistent, essential, general, minimal and opaque. + +- no size method + +\end{enumerate} + +\newpage + +\lstset{language=Python, basicstyle=\tiny, breaklines=true, showspaces=false, + showstringspaces=false, breakatwhitespace=true} +%\lstset{language=C,linewidth=.94\textwidth,xleftmargin=1.1cm} + +\def\thesection{\Alph{section}} + +\section{Code for CurveADT.py} + +\noindent \lstinputlisting{../src/CurveADT.py} + +\newpage + +\section{Code for Data.py} + +\noindent \lstinputlisting{../src/Data.py} + +\newpage + +\section{Code for SeqServices.py} + +\noindent \lstinputlisting{../src/SeqServices.py} + +\newpage + +\section{Code for Plot.py} + +\noindent \lstinputlisting{../src/Plot.py} + +\newpage + +\section{Code for Load.py} + +\noindent \lstinputlisting{../src/Load.py} + +\newpage + +\section{Code for Partner's CurveADT.py} + +\noindent \lstinputlisting{../partner/CurveADT.py} + +\newpage + +\section{Code for Partner's Data.py} + +\noindent \lstinputlisting{../partner/Data.py} + +\newpage + +\section{Code for Partner's SeqServices.py} + +\noindent \lstinputlisting{../partner/SeqServices.py} + +\newpage + +\section{Makefile} + +\lstset{language=make} +\noindent \lstinputlisting{../Makefile} + +\end {document} diff --git a/Assignments/A2/A2Soln/src/A2Examples.py b/Assignments/A2/A2Soln/src/A2Examples.py new file mode 100644 index 0000000000000000000000000000000000000000..fb5f217ed9d0e056b9bb84a5bc41ace582ea7cd6 --- /dev/null +++ b/Assignments/A2/A2Soln/src/A2Examples.py @@ -0,0 +1,33 @@ +#from CurveADT import * +from CurveADTscipy import * +from Data import * +from Load import * +from Plot import * + +X = range(11) +Y = list(map(lambda x: x**2, X)) + +c1 = CurveT(X, Y, 1) + +print(c1.eval(6.5)) + +PlotCurve(c1, 50) + +c2 = CurveT(X, Y, 2) + +print(c2.eval(6.5)) + +PlotCurve(c2, 5) +#PlotCurve(c2, 50) will look strange because of edge effects +#scipy and lambda version for A2 have same behaviour + +Load('glass.csv') + +c3 = Data.getC(9) +PlotCurve(c3, 50) +print(Data.eval(18, 34)) + +c4 = Data.slice(18, 1) +PlotCurve(c4, 50) +print(c4.eval(34)) + diff --git a/Assignments/A2/A2Soln/src/CurveADT.py b/Assignments/A2/A2Soln/src/CurveADT.py new file mode 100644 index 0000000000000000000000000000000000000000..993458584df52f731328f2e0496eba14f2381584 --- /dev/null +++ b/Assignments/A2/A2Soln/src/CurveADT.py @@ -0,0 +1,87 @@ +## @file CurveT.py +# @author Steven Palmer and Henry Madej +# @brief CurveT +# @date 20/02/2018 + +from Exceptions import * +from SeqServices import * + + + + +## @brief An abstract data type that represents a Curve +class CurveT: + + MAX_ORDER = 2 + DX = 1E-3 + + ## @brief CurveT constructor + # @details takes two lists of of x's and y's where the values are sorted in + # ascending order, and order i of the function representing the curve + # @param X list of x values sorted in ascending order + # @param Y list of corresponding y values to the the x's in the X list + # @param i order of the function represented by the data points (x,y) pairs + def __init__(self, X, Y, i): + if not isAscending(X): + raise IndepVarNotAscending + if i < 1 or i > CurveT.MAX_ORDER: + raise InvalidInterpOrder + if len(X) != len(Y): + raise SeqSizeMismatch + + self.__minx = X[0] + self.__maxx = X[-1] + self.__o = i + + if self.__o == 1: + self.__f = lambda v: interpLin(X[index(X, v)], Y[index(X, v)], X[index(X, v) + 1], Y[index(X, v) + 1], v) + elif self.__o == 2: + self.__f = lambda v: interpQuad(X[index(X, v) - 1], Y[index(X, v) - 1], X[index(X, v)], Y[index(X, v)], X[index(X, v) + 1], Y[index(X, v) + 1], v) + + ## @brief minD returns the minimal x value + # @return value representing the minimal x value + def minD(self): + return self.__minx + + ## @brief maxD returns the maximal x value + # @return value representing the maximal x value + def maxD(self): + return self.__maxx + + + ## @brief order returns the order of the function represented by the curve + # @return the value of the order of the curve + def order(self): + return self.__o + + + ## @brief eval evaluates the function at a given x value + # @details if x is within the range of x values for the curve it will return + # a y value for the curve + # @param x value of x to evaluate the curve at + # @exception OutOfDomain - if x value is not within the range of the curve's + # x values + # @return the value of the curve at x + def eval(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x) + + + ## @brief approximates the first derivate of the curve + # @details uses forward divided difference + # @param x value of x for the first derivate to be evaluated at + # @return the value of the first derivate at evaluated x + def dfdx(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x + self.DX) - self.__f(x) / self.DX + + ## @brief approximates the second derivate of the curve + # @details uses forward divided difference + # @param x value of x for the second derivate to be evaluated at + # @return the value of the second derivate at evaluated x + def d2fdx2(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x + 2*self.DX) - 2*self.__f(x + self.DX) + self.__f(x) / self.DX**2 \ No newline at end of file diff --git a/Assignments/A2/A2Soln/src/CurveADTscipy.py b/Assignments/A2/A2Soln/src/CurveADTscipy.py new file mode 100644 index 0000000000000000000000000000000000000000..2cb2e0a5f0b041efb18c0f5425224996a57e82a4 --- /dev/null +++ b/Assignments/A2/A2Soln/src/CurveADTscipy.py @@ -0,0 +1,68 @@ +## @file CurveT.py +# @author Steven Palmer and Henry Madej +# @brief CurveT +# @date 20/02/2018 + +from Exceptions import * +from SeqServices import * +from scipy.interpolate import interp1d + + + +## @brief An abstract data type that represents a Curve +class CurveT: + + MAX_ORDER = 2 + + ## @brief + # @details + def __init__(self, X, Y, i): + if not isAscending(X): + raise IndepVarNotAscending + if i < 1 or i > CurveT.MAX_ORDER: + raise InvalidInterpOrder + + self.__minx = X[0] + self.__maxx = X[-1] + self.__o = i + + if self.__o == 1: + self.__f = interp1d(X, Y, 'linear') + elif self.__o == 2: + self.__f = interp1d(X, Y, 'quadratic') + + ## @brief + # @details + def minD(self): + return self.__minx + + ## @brief + # @details + def maxD(self): + return self.__maxx + + ## @brief + # @details + def order(self): + return self.__o + + ## @brief + # @details + def eval(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return float(self.__f(x)) + + ## @brief + # @details + def dfdx(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x + DX) - self.__f(x) / DX + + ## @brief + # @details + def d2fdx2(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x + 2*DX) - 2*self.__f(x + DX) + self.__f(x) / DX**2 \ No newline at end of file diff --git a/Assignments/A2/A2Soln/src/CurveADTseq.py b/Assignments/A2/A2Soln/src/CurveADTseq.py new file mode 100644 index 0000000000000000000000000000000000000000..854b07dd222870d2a4684fb012bbe32dcff99a0b --- /dev/null +++ b/Assignments/A2/A2Soln/src/CurveADTseq.py @@ -0,0 +1,51 @@ +from Exceptions import * +from SeqServices import * + +class CurveT: + + MAX_ORDER = 2 + DX = 1E-3 + + def __init__(self, X, Y, i): + if not isAscending(X): + raise IndepVarNotAscending + if i < 1 or i > CurveT.MAX_ORDER: + raise InvalidInterpOrder + + self.__minx = X[0] + self.__maxx = X[-1] + self.__o = i + + self.X = X + self.Y = Y + + + def minD(self): + return self.__minx + + + def maxD(self): + return self.__maxx + + + def order(self): + return self.__o + + + def eval(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + if self.__o == 1: + return (lambda v: interpLin(self.X[index(self.X, v)], self.Y[index(self.X, v)], self.X[index(self.X, v) + 1], self.Y[index(self.X, v) + 1], v))(x) + elif self.__o == 2: + return (lambda v: interpQuad(self.X[index(self.X, v) - 1], self.Y[index(self.X, v) - 1], self.X[index(X, v)], self.Y[index(self.X, v)], self.X[index(self.X, v) + 1], self.Y[index(self.X, v) + 1], v))(x) + + def dfdx(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x + DX) - self.__f(x) / DX + + def d2fdx2(self, x): + if x < self.__minx or x > self.__maxx: + raise OutOfDomain + return self.__f(x + 2*DX) - 2*self.__f(x + DX) + self.__f(x) / DX**2 diff --git a/Assignments/A2/A2Soln/src/Data.py b/Assignments/A2/A2Soln/src/Data.py new file mode 100644 index 0000000000000000000000000000000000000000..9ae1620c0067117f57acc55644b3353201cdaad2 --- /dev/null +++ b/Assignments/A2/A2Soln/src/Data.py @@ -0,0 +1,74 @@ +## @file Data.py +# @author Steven Palmer and Henry Madej +# @brief Data +# @date 20/02/2018 + +from CurveADT import * +import SeqServices +from Exceptions import * + + +## @brief An abstract data type for storing data +class Data: + + MAX_SIZE = 10 + + S = [] + Z = [] + + ## @brief init initial data structure + @staticmethod + def init(): + Data.S = [] + Data.Z = [] + + ## @brief add adds a pair to the data structure + # @exception throws Full exception is structure is full + # @exception throws IndepVarNotAscending if z is less than or equal the last + # value in the structure + # @param s dependant variable value added to the structure + # @param z independent variable value aded to the structure + @staticmethod + def add(s, z): + if len(Data.S) == Data.MAX_SIZE: + raise Full + + if Data.Z: + if z <= Data.Z[-1]: + raise IndepVarNotAscending + + Data.S.append(s) + Data.Z.append(z) + + ## @brief getC gets value of the dependant variable at index i + # @param i index of dependant variable value + # @return value of dependant variable at index i + @staticmethod + def getC(i): + if not (0 <= i < len(Data.S)): + raise InvalidIndex + + return Data.S[i] + + ## @brief eval evaluates the a curve at a particular value of x + # @details Uses linear interplation to find the value of the curve at x + # @param x the value to evaluate the curve at + # @param z value adjacent to the x value + # @return value of the curve at the specified value of x + @staticmethod + def eval(x, z): + if not isInBounds(Data.Z, z): + raise OutOfDomain + + j = SeqServices.index(Data.Z, z) + return interpLin(Data.Z[j], Data.S[j].eval(x), Data.Z[j+1], Data.S[j+1].eval(x), z) + + ## @brief slice slices a curve returning a subset of the original curve + # @param x the x to slice at + # @param i the order of the curve that is being sliced + # @return CurveT + @staticmethod + def slice(x, i): + Y = [s.eval(x) for s in Data.S] + + return CurveT(Data.Z, Y, i) diff --git a/Assignments/A2/A2Soln/src/Exceptions.py b/Assignments/A2/A2Soln/src/Exceptions.py new file mode 100644 index 0000000000000000000000000000000000000000..58ae06db04e48154acc93530e1592068680aaa5a --- /dev/null +++ b/Assignments/A2/A2Soln/src/Exceptions.py @@ -0,0 +1,23 @@ +## @brief exception when independent variable is not ascending +class IndepVarNotAscending(Exception): + pass + +## @brief exception when the order of interplation is incorrect +class InvalidInterpOrder(Exception): + pass + +## @brief exception when given value is not within bounds +class OutOfDomain(Exception): + pass + +## @brief exception when data structure is full +class Full(Exception): + pass + +## @brief exception when two sequences are of different size +class SeqSizeMismatch(Exception): + pass + +## @brief exception when given index is not in bounds +class InvalidIndex(Exception): + pass diff --git a/Assignments/A2/A2Soln/src/Load.py b/Assignments/A2/A2Soln/src/Load.py new file mode 100644 index 0000000000000000000000000000000000000000..666f6b63811d7551580c5990b14d2bce8d0d5ede --- /dev/null +++ b/Assignments/A2/A2Soln/src/Load.py @@ -0,0 +1,35 @@ +## @file Load.py +# @author Steven Palmer and Henry Madej +# @brief function for retrieving data from file +# @date 20/02/2018 + +from Data import * +from CurveADT import * + +## @brief Load reads in data from a file, storing it in Data +# @param s the name of the file to be read +def Load(s): + with open(s, 'r') as infile: + contents = infile.readlines() + + contents = [x.strip().split(',') for x in contents] + + zs = contents[0] + os = contents[1] + pts = contents[2:] + + Data.init() + + for i in range(len(zs)): + X = [] + Y = [] + for j in range(0, len(pts)): + if pts[j][i*2] == '': + break + X.append(float(pts[j][i*2])) + Y.append(float(pts[j][i*2+1])) + + Data.add(CurveT(X,Y,int(os[i])), float(zs[i])) + + + diff --git a/Assignments/A2/A2Soln/src/Plot.py b/Assignments/A2/A2Soln/src/Plot.py new file mode 100644 index 0000000000000000000000000000000000000000..d5bb1c604e0819172954349229c822a7d29ce5cf --- /dev/null +++ b/Assignments/A2/A2Soln/src/Plot.py @@ -0,0 +1,39 @@ +## @file Plot.py +# @author Steven Palmer and Henry Madej +# @brief Plotting functions +# @date 20/02/2018 + +from matplotlib.pyplot import * +from Exceptions import * +from CurveADT import * + +## @brief PlotSeq plots a sequence of (x, y) pairs +# @param X corresponding x values of the sequence +# @param Y corresponding y values of the sequence +def PlotSeq(X, Y): + if len(X) != len(Y): + raise SeqSizeMismatch + + figure(dpi=100) + plot(X, Y) + + show() + + +## @brief PlotCurve plots a curve +# @param c the curve to be plotted +# @param n number of equally spaced points +def PlotCurve(c, n): + d = (c.maxD() - c.minD())/(n+1) + + curX = c.minD() + + X = [] + Y = [] + + for i in range(n): + curX = curX + d + X.append(curX) + Y.append(c.eval(curX)) + + PlotSeq(X, Y) diff --git a/Assignments/A2/A2Soln/src/SeqServices.py b/Assignments/A2/A2Soln/src/SeqServices.py new file mode 100644 index 0000000000000000000000000000000000000000..17dac9b825955a0af71dbb86cd19a28815f3c074 --- /dev/null +++ b/Assignments/A2/A2Soln/src/SeqServices.py @@ -0,0 +1,57 @@ +## @file SeqServices.py +# @author Steven Palmer and Henry Madej +# @brief Provides the services for working with sequences +# @date 20/02/2018 + + +## @brief isAscending checks if a sequence is in ascending order +# @param X sequence to be checked for ascending order +# @return boolean False if not in ascending order True otherwise +def isAscending(X): + for i in range(0, len(X) - 1): + if X[i + 1] < X[i]: + return False + + return True + +## @brief isInBounds checks if value (x) is within bounds of sequence (X) +# @param X sequence to be checked against +# @param x value to be checked for in bounds +# @return boolean False if not in bounds True otherwise +def isInBounds(X, x): + return X[0] <= x and x <= X[len(X) - 1] + +## @brief interpLin given two points interpolates the y value for a given x +# @details linear interpolation +# @param x1 x value of the first point +# @param y1 y value of the first point +# @param x2 x value of the second point +# @param y2 y value of the second point +# @param x value for which we want to interpolate a y value +# @return y value for given x value +def interpLin(x1, y1, x2, y2, x): + return (y2 - y1) / (x2 - x1) * (x - x1) + y1 + +## @brief interpQuad given three points interpolates the y value for given x +# @details quadratic interpolation +# @param x0 x value of the first point +# @param y0 y value of the first point +# @param x1 x value of the second point +# @param y1 y value of the second point +# @param x2 x value of the third point +# @param y2 y value of the third point +# @param x value for which we want to interpolate a y value +# @return y value for given x value +def interpQuad(x0, y0, x1, y1, x2, y2, x): + return y1 + (y2 - y0) / (x2 - x0) * (x - x1) + (y2 - 2*y1 + y0) / (2*(x2 - x1)**2) * (x - x1)**2 + +## @brief index given a sequence and value, returns index of that value if in +# sequence +# @details Seq[i] <= x <= Seq[i+1] +# @param X sequence to be searched +# @param x value to look for +# @return index of closest value to given x in sequence +def index(X, x): + for i in range(0, len(X) - 1): + if X[i] <= x and x < X[i+1]: + return i diff --git a/Assignments/A2/A2Soln/src/glass.csv b/Assignments/A2/A2Soln/src/glass.csv new file mode 100644 index 0000000000000000000000000000000000000000..33dcc57541aedfd7aab6a3ff08f89ba21b8e804a --- /dev/null +++ b/Assignments/A2/A2Soln/src/glass.csv @@ -0,0 +1,440 @@ +4.5,9.1,14,18,23,27,32,36,41,45 +1,1,1,1,1,1,1,1,1,1 +6.143397364,4.411877631,6.128184215,7.627031257,6.34463941,9.952136904,7.199850837,9.992650492,7.970252895,9.923747653,9.112111846,9.922695591,9.815736637,9.975357212,10.67908231,9.974691345,11.70510613,9.988805921,12.89348645,9.973203096 +6.15864828,4.388319476,6.15864828,7.575020192,6.34463941,10.00554409,7.217724387,9.92452703,8.009874141,9.806380586,9.157409434,9.86969188,9.864532042,9.869110571,10.73216953,9.894895413,11.73416392,9.920708668,12.95758178,9.866979399 +6.189263785,4.364878545,6.189263785,7.494339327,6.376179503,9.898975927,7.253604708,9.871513535,8.009874141,9.870738322,9.202932202,9.764570671,9.864532042,9.9220722,10.78552065,9.815737836,11.7924961,9.86771557,12.95758178,9.919929591 +6.189263785,4.341579876,6.189263785,7.534556975,6.407876387,9.793542816,7.271611701,9.833410793,8.04969235,9.765605967,9.202932202,9.816971296,9.924500406,9.816384527,10.83913698,9.763305457,11.85111825,9.76261541,13.02199574,9.814273304 +6.204628563,4.318397091,6.220031484,7.434385814,6.407876387,9.846098918,7.289663395,9.766372924,8.089708501,9.661593368,9.24868127,9.712411609,9.980983057,9.774400185,10.89301986,9.659317361,11.85111825,9.815005543,13.0867299,9.761848748 +6.235472643,4.318380134,6.250952134,7.37491192,6.43973084,9.689232664,7.307759903,9.728676011,8.089708501,9.713441376,9.294657763,9.608965579,9.987584432,9.726269624,10.89301986,9.711153155,11.92316345,9.71045832,13.15178588,9.657876167 +6.250952134,4.295321229,6.282026495,7.29636239,6.43973084,9.741228995,7.325901336,9.662352156,8.129923578,9.609984377,9.294657763,9.660531165,10.0123785,9.659962175,10.94717059,9.607720528,11.96923827,9.607041477,13.15178588,9.709704227 +6.250952134,4.27239384,6.282026495,7.335517614,6.471743646,9.611720356,7.36231942,9.610739112,8.150106023,9.572891103,9.340862812,9.557637708,10.04276596,9.604377714,11.00159051,9.556399307,11.96923827,9.658596737,13.21716525,9.606287032 +6.282026495,4.249572145,6.313255331,7.237992661,6.503915592,9.534828134,7.380596296,9.573642925,8.17033857,9.507629289,9.387297553,9.45584016,10.08713062,9.557056015,11.02890184,9.519512864,12.02873903,9.54436558,13.28286964,9.529438276 +6.313255331,4.226872357,6.34463941,7.18008988,6.53624747,9.433273529,7.398918544,9.508375986,8.21095447,9.456842723,9.387297553,9.506584013,10.11217181,9.506024091,11.05628096,9.45461495,12.08853558,9.504680412,13.34890065,9.453204298 +6.313255331,4.204310331,6.376179503,7.122650312,6.53624747,9.483896281,7.417286276,9.471674907,8.231338073,9.420340555,9.433963127,9.405330234,10.16244083,9.455246099,11.11124329,9.378979546,12.14862939,9.403446908,13.4152599,9.402708451 +6.34463941,4.181852316,6.407876387,7.065670252,6.568740074,9.332800573,7.435699607,9.40710312,8.251772278,9.356118734,9.480860682,9.355090114,10.18766898,9.418750094,11.16647884,9.303949213,12.14862939,9.453909597,13.48194905,9.302561041 +6.376179503,4.159514263,6.43973084,7.009146023,6.568740074,9.382884146,7.472663513,9.356853531,8.292792996,9.256467547,9.504396813,9.318980699,10.21295975,9.354539115,11.22198897,9.254250638,12.20902193,9.353216849,13.48194905,9.352482337 +6.392008297,4.137303656,6.471743646,6.934492233,6.601394203,9.282947883,7.491214317,9.320737309,8.292792996,9.306141486,9.527991372,9.255449883,10.26372981,9.304570305,11.27777505,9.155684438,12.2697147,9.253596569,13.54896971,9.252869881 +6.407876387,4.115211647,6.471743646,6.971705516,6.634210661,9.184076032,7.509811173,9.257194518,8.334017635,9.207022602,9.575356355,9.206010374,10.2892094,9.268655889,11.27777505,9.204817535,12.2697147,9.303255101,13.61632354,9.203444153 +6.43973084,4.093229567,6.503915592,6.879017407,6.634210661,9.233361489,7.528454195,9.221462966,8.375447207,9.108959424,9.622956796,9.107957978,10.34035851,9.205450082,11.33383846,9.106777843,12.33070917,9.20416696,13.68401219,9.154282442 +6.4557174,4.071372901,6.53624747,6.82398637,6.667190254,9.110604897,7.547143499,9.158596963,8.375447207,9.157841775,9.622956796,9.156834955,10.36602833,9.156295632,11.39018056,9.033925081,12.39200686,9.155001388,13.7179826,9.118948117 +6.471743646,4.049632944,6.568740074,6.769395574,6.700333792,9.037721518,7.565879198,9.123245985,8.417082731,9.036089209,9.670793865,9.059306322,10.41755932,9.058772743,11.44680275,8.961655129,12.45360926,9.057492284,13.75203734,9.056780995 +6.503915592,4.028001163,6.601394203,6.715241494,6.733642093,8.941461552,7.603490246,9.061031773,8.458925231,8.963801945,9.718868739,8.962816457,10.41755932,9.107385772,11.50370641,8.913784973,12.45360926,9.106098441,13.82040065,9.008402709 +6.52006149,4.006492798,6.634210661,6.661520639,6.733642093,8.989445041,7.622365826,9.012648476,8.500975736,8.868329289,9.718868739,9.010914546,10.46934647,9.010383818,11.53226423,8.879378937,12.5155179,9.009110198,13.8891038,8.960282844 +6.53624747,3.985099281,6.667190254,6.590569376,6.767115973,8.846226841,7.641288264,8.97786084,8.500975736,8.915920321,9.767182601,8.914940098,10.52139106,8.96225337,11.56089295,8.818845043,12.5777343,8.960986553,13.95814849,8.864847669 +6.568740074,3.963812218,6.667190254,6.62593703,6.767115973,8.893699263,7.660257677,8.91665556,8.54323528,8.820957648,9.815736637,8.867319478,10.54751029,8.927660252,11.61836377,8.771737731,12.64025998,8.865543884,13.95814849,8.912420018 +6.568740074,3.942654344,6.700333792,6.537845878,6.800756257,8.775458445,7.679274181,8.882238444,8.585704902,8.727006414,9.840104093,8.833092793,10.57369437,8.866797208,11.67612029,8.678310734,12.64025998,8.913119969,14.0275364,8.817494627 +6.601394203,3.921594007,6.733642093,6.485544159,6.834563771,8.705256184,7.717448931,8.821667736,8.585704902,8.773839051,9.864532042,8.772874449,10.62625769,8.819433751,11.67612029,8.724882051,12.70309649,8.818187122,14.09726926,8.770394528 +6.634210661,3.900646167,6.767115973,6.433660846,6.868539347,8.612537276,7.736607412,8.774562573,8.628385647,8.680389673,9.913570016,8.70269286,10.65263725,8.785391898,11.73416392,8.631954109,12.76624537,8.724265397,14.16734876,8.676981837 +6.667190254,3.879810224,6.800756257,6.382192591,6.868539347,8.658755626,7.755813453,8.740693917,8.671278563,8.587935616,9.962851764,8.633072712,10.67908231,8.725498748,11.7924961,8.585845106,12.76624537,8.771083324,14.16734876,8.723546022 +6.667190254,3.859100732,6.834563771,6.314216426,6.902683821,8.543638359,7.794368691,8.681088445,8.671278563,8.634021943,10.0123785,8.586957733,10.73216953,8.678890061,11.85111825,8.494398034,12.82970816,8.677663297,14.23777664,8.630632311 +6.700333792,3.838486711,6.834563771,6.348101059,6.936998031,8.475290622,7.813718124,8.634733935,8.714384707,8.542061745,10.06215144,8.495498812,10.78552065,8.586451976,11.85111825,8.539982401,12.89348645,8.631310131,14.30855463,8.584530368 +6.716967296,3.817990298,6.868539347,6.280488,6.971482822,8.385021057,7.833115592,8.601405,8.757705137,8.451081006,10.06215144,8.541089086,10.78552065,8.632530341,11.91003183,8.449023809,12.95758178,8.585204567,14.37968446,8.538674686 +6.750358284,3.797595875,6.902683821,6.213595082,6.971482822,8.430018462,7.852561214,8.542766154,8.757705137,8.496432916,10.11217181,8.450118707,10.83913698,8.540586029,11.96923827,8.35903401,12.98974883,8.552066808,14.41538187,8.505716526 +6.767115973,3.777317808,6.902683821,6.24693974,7.006139042,8.295712944,7.891597398,8.497133562,8.801240919,8.405938166,10.16244083,8.404981007,10.89301986,8.494965084,11.96923827,8.403891958,13.02199574,8.493764318,14.45116789,8.447730023 +6.800756257,3.757140643,6.936998031,6.163887317,7.006139042,8.340231087,7.911188201,8.464335746,8.844993123,8.316407268,10.18766898,8.372538887,10.92006166,8.462175637,12.02873903,8.314382854,13.0867299,8.448393478,14.52300668,8.402605083 +6.834563771,3.737071258,6.971482822,6.114577207,7.040967543,8.251400028,7.930827637,8.40663135,8.844993123,8.361036464,10.21295975,8.315460303,10.94717059,8.404485967,12.08853558,8.225827103,13.15178588,8.403264994,14.59520258,8.357721185 +6.851530499,3.717116375,7.006139042,6.04945139,7.075969182,8.185390151,7.950515828,8.37418286,8.888962826,8.249877343,10.26372981,8.271041903,11.00159051,8.359592022,12.08853558,8.269970209,13.18443504,8.370829498,14.66775738,8.313077042 +6.868539347,3.697268045,7.006139042,6.081915187,7.111144818,8.119908343,7.970252895,8.317093068,8.933151108,8.183879647,10.31475225,8.226860772,11.05628096,8.270554753,12.14862939,8.181887494,13.21716525,8.313762567,14.70416993,8.280989659 +6.902683821,3.677518479,7.040967543,6.01713725,7.146495317,8.033423922,8.009874141,8.272665947,8.977559057,8.140164107,10.34035851,8.195106173,11.05628096,8.314937886,12.20902193,8.116433705,13.28286964,8.269353237,14.74067287,8.224535199 +6.919819656,3.657881591,7.075969182,5.984995721,7.146495317,8.076534516,8.029758564,8.240734546,9.022187763,8.053463944,10.36602833,8.139237211,11.11124329,8.226376223,12.2697147,8.073078439,13.34890065,8.203199737,14.81395082,8.18060249 +6.954219051,3.638342414,7.093535196,5.953037569,7.182021549,7.969157819,8.04969235,8.184554519,9.022187763,8.096682081,10.41755932,8.095760136,11.16647884,8.138757823,12.33070917,8.008495106,13.4152599,8.137575454,14.88759305,8.136904456 +6.971482822,3.618914714,7.111144818,5.921250065,7.217724387,7.905405834,8.089708501,8.140835374,9.067038325,8.010445041,10.46934647,8.009532916,11.16647884,8.182433681,12.39200686,7.965716411,13.48194905,8.094107255,14.96160136,8.071810525 +7.006139042,3.599583686,7.146495317,5.889620733,7.253604708,7.842163855,8.109791112,8.109412821,9.112111846,7.925126505,10.46934647,8.052515301,11.22198897,8.095283309,12.45360926,7.880874276,13.54896971,8.05087125,15.03597759,8.007237335 +7.023531704,3.580362947,7.164236412,5.858171856,7.289663395,7.758637666,8.129923578,8.054128062,9.112111846,7.967655931,10.52139106,7.966748678,11.27777505,8.052041021,12.45360926,7.923166226,13.58260487,8.019795947,15.11072354,7.964465359 +7.040967543,3.561244841,7.182021549,5.826890907,7.289663395,7.800273646,8.17033857,8.011105611,9.1801426,7.861711328,10.57369437,7.881895547,11.305772,8.020961203,12.5155179,7.838777289,13.65012591,7.965106499,15.18584107,7.921921857 +7.075969182,3.542221865,7.217724387,5.795765611,7.325901336,7.696569809,8.190621344,7.980183798,9.225778378,7.777976941,10.57369437,7.924192979,11.33383846,7.966279449,12.5777343,7.75528717,13.68401219,7.922575126,15.26133202,7.879605607 +7.111144818,3.523300504,7.235642307,5.764817893,7.36231942,7.655457315,8.21095447,7.925780039,9.225778378,7.819716704,10.62625769,7.839793105,11.39018056,7.923726257,12.5777343,7.79690517,13.75203734,7.880255388,15.2992181,7.849191368 +7.128798156,3.504487095,7.253604708,5.734035428,7.398918544,7.573919721,8.231338073,7.895187572,9.271641018,7.736429598,10.67908231,7.79791556,11.44680275,7.839331354,12.64025998,7.713861028,13.82040065,7.838161707,15.33719824,7.79568063 +7.146495317,3.485774145,7.289663395,5.672962727,7.398918544,7.61456443,8.27225721,7.841347867,9.294657763,7.695119294,10.73216953,7.714860656,11.44680275,7.881400369,12.70309649,7.672656169,13.85470964,7.807907435,15.41344161,7.754038719 +7.182021549,3.467154308,7.289663395,5.703406134,7.435699607,7.493250577,8.292792996,7.79947733,9.317731647,7.654029575,10.73216953,7.756261711,11.50370641,7.797456276,12.76624537,7.631671414,13.8891038,7.754678145,15.49006399,7.712619245 +7.217724387,3.448633933,7.325901336,5.642659663,7.435699607,7.533462382,8.334017635,7.716405791,9.3640514,7.613144317,10.78552065,7.673650458,11.56089295,7.75580488,12.79793743,7.602214167,13.95814849,7.713255255,15.56706727,7.67142102 +7.235642307,3.430219222,7.36231942,5.582560198,7.472663513,7.433305774,8.334017635,7.757815138,9.387297553,7.572492321,10.83913698,7.632660392,11.58959274,7.725868494,12.82970816,7.550387161,14.0275364,7.672053633,15.64445335,7.610050882 +7.253604708,3.41190284,7.36231942,5.612518468,7.509811173,7.373840519,8.375447207,7.67518734,9.410601414,7.532057395,10.86604502,7.603199328,11.61836377,7.673198493,12.89348645,7.510055526,14.09726926,7.631072096,15.72222413,7.549171695 +7.289663395,3.3936776,7.398918544,5.552740034,7.547143499,7.295302401,8.396239161,7.645562128,9.457382835,7.491823671,10.89301986,7.551365606,11.67612029,7.63221084,12.95758178,7.469939328,14.13226557,7.601617162,15.80038151,7.508846552 +7.325901336,3.375549712,7.435699607,5.493598294,7.547143499,7.334451937,8.437978045,7.593424695,9.504396813,7.412028924,10.94717059,7.511028744,11.73416392,7.59144213,13.02199574,7.39037767,14.16734876,7.549794227,15.87892742,7.468736813 +7.344087804,3.35752525,7.435699607,5.523079159,7.584661409,7.256333343,8.458925231,7.552877996,9.504396813,7.451804862,11.00159051,7.431029446,11.76329385,7.562140163,13.02199574,7.430037418,14.23777664,7.509465758,15.9578638,7.428841326 +7.36231942,3.339597033,7.472663513,5.464253335,7.622365826,7.179046783,8.479924418,7.523724882,9.551644504,7.372436352,11.00159051,7.470907347,11.7924961,7.510586356,13.0867299,7.350900752,14.30855463,7.469352711,16.03719258,7.389158947 +7.398918544,3.321758026,7.491214317,5.435075797,7.622365826,7.217572444,8.522079313,7.472418295,9.59912707,7.33305527,11.05628096,7.391335379,11.85111825,7.470467323,13.15178588,7.302943814,14.37968446,7.409599087,16.07700474,7.360637767 +7.435699607,3.304014309,7.509811173,5.406054059,7.660257677,7.140698723,8.54323528,7.432517735,9.622956796,7.293898869,11.11124329,7.332205881,11.88053852,7.441632303,13.21716525,7.2531428,14.45116789,7.350323483,16.11691572,7.310457674 +7.454158648,3.286371825,7.547143499,5.377176732,7.698337893,7.083574278,8.585704902,7.392815718,9.646845679,7.254951552,11.16647884,7.27354941,11.91003183,7.390900041,13.28286964,7.195118821,14.52300668,7.31106052,16.19703517,7.271407661 +7.472663513,3.268823547,7.565879198,5.348464158,7.736607412,7.026906819,8.607018819,7.364280423,9.694801503,7.216198034,11.22198897,7.234696548,11.96923827,7.351420332,13.34890065,7.15668491,14.59520258,7.272007287,16.27755291,7.23256624 +7.509811173,3.251362588,7.584661409,5.319904902,7.775067173,6.952063861,8.628385647,7.314075497,9.718868739,7.177665617,11.27777505,7.15764044,12.02873903,7.312151511,13.4152599,7.118456299,14.66775738,7.233162663,16.35847091,7.193932298 +7.547143499,3.2339949,7.622365826,5.291487754,7.775067173,6.98937144,8.671278563,7.275006159,9.742995723,7.139338951,11.27777505,7.196051226,12.05860024,7.283927569,13.48194905,7.042638255,14.70416993,7.205243608,16.43979116,7.136381993 +7.584661409,3.216719984,7.660257677,5.23512859,7.813718124,6.896448465,8.692804915,7.246925593,9.791429522,7.101202998,11.33383846,7.119406726,12.08853558,7.234270437,13.48194905,7.080431894,14.74067287,7.156122892,16.52151567,7.079292081 +7.584661409,3.199549908,7.660257677,5.263222402,7.852561214,6.85960995,8.714384707,7.197520716,9.815736637,7.063284621,11.39018056,7.081377243,12.14862939,7.195627391,13.54896971,7.005018844,14.81395082,7.117897284,16.60364645,7.041476877 +7.622365826,3.182458986,7.698337893,5.207164289,7.891597398,6.804734171,8.757705137,7.159073975,9.840104093,7.025568717,11.41845656,7.054044059,12.20902193,7.157190763,13.61632354,6.967600383,14.88759305,7.079875865,16.68618551,7.00386367 +7.660257677,3.165459357,7.736607412,5.151703246,7.930827637,6.750297388,8.779446042,7.131440892,9.889020632,6.988040486,11.44680275,7.005954125,12.23933069,7.129564949,13.68401219,6.893389092,14.96160136,7.023237993,16.76913488,6.966451379 +7.698337893,3.148550535,7.736607412,5.179349364,7.970252895,6.696296092,8.801240919,7.082823316,9.913570016,6.950726364,11.50370641,6.968530668,12.2697147,7.080960162,13.68401219,6.930381799,15.03597759,6.967053215,16.8524966,6.910720885 +7.736607412,3.123362636,7.775067173,5.124184575,8.009874141,6.642726797,8.844993123,7.04498925,9.962851764,6.913597915,11.56089295,6.894309469,12.33070917,7.043136048,13.75203734,6.85656692,15.11072354,6.929837554,16.93627273,6.855436226 +7.775067173,3.098376235,7.813718124,5.069607342,8.04969235,6.589586047,8.86695072,7.017796519,9.987584432,6.876681295,11.56089295,6.931307115,12.39200686,6.968120233,13.82040065,6.819941439,15.18584107,6.892820686,17.02046532,6.818816786 +7.813718124,3.081825749,7.813718124,5.0968129,8.089708501,6.554386689,8.888962826,6.969953697,10.03723412,6.839948371,11.61836377,6.85748238,12.39200686,7.005513977,13.8891038,6.7835116,15.26133202,6.85600155,17.10507644,6.782392954 +7.852561214,3.065363669,7.852561214,5.0425272,8.129923578,6.4845765,8.933151108,6.932722542,10.06215144,6.803425018,11.67612029,6.820852009,12.45360926,6.930898872,13.95814849,6.711261022,15.33719824,6.819379089,17.19010818,6.746163685 +7.852561214,3.049001497,7.891597398,5.015591711,8.129923578,6.519375354,8.955327556,6.905963146,10.08713062,6.76709669,11.73416392,6.766286287,12.5155179,6.893876335,13.95814849,6.747276356,15.41344161,6.74674649,17.27556262,6.710127942 +7.891597398,3.032714754,7.911188201,4.988809897,8.17033857,6.449938068,8.977559057,6.858882732,10.13727516,6.730949129,11.76329385,6.730156269,12.5777343,6.820450272,14.0275364,6.675411717,15.41344161,6.782952254,17.36144187,6.674284689 +7.930827637,3.016515009,7.930827637,4.96217109,8.21095447,6.398339597,9.022187763,6.822244881,10.18766898,6.65925839,11.82177084,6.694206032,12.5777343,6.85705156,14.09726926,6.639753907,15.49006399,6.710707634,17.44774803,6.603197478 +7.970252895,3.000401798,7.970252895,4.935664837,8.251772278,6.347153906,9.044585244,6.795911914,10.18766898,6.694994657,11.85111825,6.658460901,12.64025998,6.784017715,14.16734876,6.604286569,15.56706727,6.674861284,17.44774803,6.638632899 +8.009874141,2.976399065,8.009874141,4.88309551,8.292792996,6.313249539,9.067038325,6.749581759,10.23831331,6.623686865,11.91003183,6.622893637,12.70309649,6.747779768,14.23777664,6.533944901,15.64445335,6.639206414,17.53448324,6.567925412 +8.04969235,2.952588349,8.009874141,4.909300171,8.313379762,6.279538607,9.112111846,6.713527757,10.2892094,6.588305352,11.93959835,6.587529294,12.76624537,6.711735392,14.23777664,6.569008685,15.72222413,6.603742001,17.62164962,6.532841757 +8.089708501,2.936816613,8.04969235,4.857011652,8.334017635,6.246007681,9.134732562,6.687614424,10.34035851,6.518133898,11.99895177,6.552340922,12.79793743,6.685828977,14.30855463,6.499042759,15.80038151,6.550913124,17.70924931,6.497945508 +8.129923578,2.921129123,8.089708501,4.831067125,8.375447207,6.212643603,9.1801426,6.64200953,10.34035851,6.553112834,12.05860024,6.482552523,12.86155777,6.640236259,14.37968446,6.464327052,15.87892742,6.498506869,17.79728448,6.463235663 +8.17033857,2.897760559,8.129923578,4.77961186,8.396239161,6.179469877,9.202932202,6.606543114,10.39176188,6.483316213,12.05860024,6.517340515,12.89348645,6.604779312,14.45116789,6.429796786,15.9578638,6.463794025,17.88575728,6.428711226 +8.21095447,2.874578939,8.129923578,4.805261185,8.417082731,6.14647329,9.24868127,6.571253177,10.44342079,6.448684513,12.11854524,6.447924901,12.95758178,6.569498796,14.52300668,6.361313593,16.03719258,6.429266606,17.93015847,6.403897247 +8.251772278,2.859223902,8.17033857,4.754080776,8.458925231,6.113640891,9.271641018,6.545889005,10.46934647,6.414250397,12.17878823,6.413482249,12.98974883,6.544141396,14.52300668,6.395450968,16.11691572,6.39492362,18.0192918,6.360227108 +8.292792996,2.843950887,8.190621344,4.728695355,8.500975736,6.048525046,9.294657763,6.501263345,10.4953365,6.380000149,12.20902193,6.379236103,13.02199574,6.49952765,14.59520258,6.327333589,16.19703517,6.360764083,18.10886823,6.326252908 +8.334017635,2.821199736,8.231338073,4.703436251,8.500975736,6.080983872,9.340862812,6.466535777,10.54751029,6.345920328,12.2697147,6.345160364,13.0867299,6.464809353,14.66775738,6.293535096,16.27755291,6.293016151,18.1538233,6.292472541 +8.375447207,2.798630591,8.251772278,4.678321257,8.54323528,6.016215855,9.3640514,6.4415758,10.57369437,6.312034943,12.30017412,6.311279037,13.15178588,6.43027651,14.74067287,6.259917142,16.27755291,6.326787015,18.2440685,6.258860264 +8.417082731,2.783681245,8.292792996,4.653331234,8.585704902,5.952137675,9.387297553,6.39766128,10.59994345,6.278330496,12.36132002,6.277566301,13.21716525,6.378835329,14.81395082,6.226478765,16.35847091,6.25940097,18.33476233,6.225427532 +8.458925231,2.761412241,8.313379762,4.628483787,8.585704902,5.984079247,9.433963127,6.36348712,10.65263725,6.24479376,12.42276987,6.244033647,13.28286964,6.327805669,14.85072629,6.202445377,16.43979116,6.22596535,18.42590701,6.192173386 +8.500975736,2.739321386,8.334017635,4.603769018,8.628385647,5.920343353,9.457382835,6.338924897,10.70559301,6.178281018,12.45360926,6.210692308,13.34890065,6.294004654,14.88759305,6.160161094,16.52151567,6.192708331,18.56347428,6.109837081 +8.54323528,2.72468885,8.375447207,4.579177228,8.671278563,5.888718864,9.504396813,6.295697825,10.70559301,6.211436167,12.48452521,6.177529001,13.4152599,6.260384192,14.96160136,6.12725558,16.60364645,6.15962896,18.56347428,6.142624932 +8.585704902,2.702891776,8.417082731,4.530404819,8.692804915,5.857274803,9.527991372,6.262080613,10.75881202,6.145278714,12.54658754,6.144530714,13.48194905,6.193705398,15.07330423,6.078226584,16.68618551,6.094023301,18.65575591,6.077200381 +8.628385647,2.688453835,8.417082731,4.554716799,8.714384707,5.825998644,9.575356355,6.228630679,10.81229558,6.112452696,12.60895838,6.111708692,13.48194905,6.22694332,15.11072354,6.045770606,16.68618551,6.126726289,18.7484963,6.044738015 +8.671278563,2.666946635,8.458925231,4.506204917,8.757705137,5.794878114,9.59912707,6.204588985,10.86604502,6.047349507,12.67163929,6.046613427,13.54896971,6.160620701,15.18584107,6.013476128,16.76913488,6.061471073,18.8416977,6.012449052 +8.714384707,2.652700701,8.500975736,4.482134281,8.801240919,5.733157383,9.646845679,6.16227799,10.86604502,6.079802024,12.67163929,6.079061994,13.61632354,6.127712732,15.22353975,5.981365899,16.8524966,6.029092728,18.93536243,5.980332566 +8.757705137,2.638530864,8.522079313,4.458200976,8.801240919,5.763923819,9.670793865,6.129373202,10.92006166,6.015046594,12.73463179,6.014314446,13.68401219,6.094980546,15.2992181,5.949415449,16.93627273,5.996887337,19.02949277,5.948387635 +8.801240919,2.61742304,8.54323528,4.434395469,8.844993123,5.702532779,9.694801503,6.105714629,10.97434682,5.982916233,12.79793743,5.982187996,13.7179826,6.071454724,15.37527267,5.917635667,17.02046532,5.964853976,19.12409105,5.916613344 +8.844993123,2.596484075,8.585704902,4.410708415,8.86695072,5.672082898,9.742995723,6.064077888,11.00159051,5.950969185,12.86155777,5.950233154,13.75203734,6.030063451,15.45170531,5.886025642,17.10507644,5.932991727,19.1715664,5.885020334 +8.888962826,2.582614528,8.628385647,4.363730353,8.888962826,5.641795611,9.767182601,6.031697461,11.05628096,5.919181104,12.92549438,5.918449004,13.82040065,5.997852875,15.5285179,5.823334107,17.19010818,5.885528744,19.26687094,5.85358453 +8.933151108,2.561954026,8.628385647,4.38714789,8.933151108,5.611659031,9.815736637,5.999478156,11.08372806,5.887574383,12.98974883,5.855412131,13.8891038,5.965814357,15.5285179,5.854584467,17.23278243,5.854101718,19.31470074,5.822328076 +8.977559057,2.548268927,8.671278563,4.340420769,8.977559057,5.581683431,9.840104093,5.97632096,11.13882682,5.856124936,12.98974883,5.886834635,13.95814849,5.933946977,15.60571235,5.79222781,17.31844901,5.82283107,19.41071683,5.791227152 +9.022187763,2.527883184,8.714384707,4.294191334,8.999845747,5.551878851,9.864532042,5.935578249,11.1941995,5.824843481,13.05432269,5.824134484,14.0275364,5.870745037,15.68329053,5.761287672,17.40454145,5.791727459,19.50721023,5.760292359 +9.067038325,2.51438008,8.714384707,4.317235697,9.022187763,5.522233418,9.913570016,5.903872381,11.22198897,5.793740496,13.11921757,5.793023911,14.0275364,5.902249823,15.76125437,5.730512806,17.49106187,5.760789994,19.60418331,5.72952281 +9.112111846,2.500949105,8.757705137,4.271253205,9.067038325,5.492735499,9.962851764,5.872335875,11.24984743,5.762803592,13.18443504,5.762079521,14.09726926,5.839385486,15.83960578,5.699902328,17.5780124,5.730017786,19.70163845,5.698917621 +9.157409434,2.480941913,8.801240919,4.248437603,9.089547147,5.463405875,9.987584432,5.849669432,11.305772,5.732020628,13.21716525,5.731311677,14.16734876,5.808193448,15.87892742,5.669466493,17.62164962,5.699421143,19.79957807,5.668475914 +9.202932202,2.467689554,8.823089901,4.225752171,9.134732562,5.434222194,10.0123785,5.809790148,11.33383846,5.70141329,13.28286964,5.700696932,14.23777664,5.777168026,15.91834668,5.639193176,17.70924931,5.668976747,19.8487303,5.638207887 +9.24868127,2.447948433,8.86695072,4.20317962,9.157409434,5.405205014,10.06215144,5.778756198,11.36197458,5.670969387,13.31584421,5.670256854,14.30855463,5.746308333,15.99747902,5.609070498,17.75321233,5.638706046,19.94740112,5.608090472 +9.294657763,2.434872314,8.888962826,4.180735852,9.202932202,5.376332222,10.11217181,5.747888021,11.41845656,5.640676971,13.38203914,5.639968244,14.34407545,5.724128339,16.07700474,5.579108725,17.84146604,5.608585969,19.99692032,5.578144885 +9.340862812,2.421866043,8.933151108,4.158403764,9.225778378,5.347624158,10.13727516,5.72570193,11.47521931,5.610546366,13.44856314,5.609841426,14.37968446,5.685104915,16.15692578,5.549306998,17.93015847,5.578626784,20.09632782,5.548348307 +9.340862812,2.408938706,8.977559057,4.114112976,9.24868127,5.319069386,10.16244083,5.686667778,11.50370641,5.580587666,13.51541783,5.550091504,14.45116789,5.654736991,16.23724413,5.519664461,18.0192918,5.548827631,20.19622949,5.518710891 +9.387297553,2.396070963,8.977559057,4.136190966,9.294657763,5.290656702,10.21295975,5.656291506,11.53226423,5.550788937,13.51541783,5.579875534,14.52300668,5.624531283,16.31796175,5.490180265,18.10886823,5.519187655,20.29662778,5.489231789 +9.433963127,2.383271956,9.022187763,4.092136764,9.317731647,5.26240612,10.23831331,5.634458966,11.58959274,5.521138484,13.58260487,5.520444777,14.59520258,5.594486923,16.35847091,5.460864285,18.19888996,5.460403279,20.39752517,5.459910154 +9.480860682,2.370541316,9.067038325,4.070277942,9.340862812,5.234306389,10.26372981,5.596046849,11.64720623,5.491646414,13.65012591,5.490956413,14.66775738,5.564603051,16.39908063,5.431704844,18.19888996,5.489706006,20.4481618,5.430755807 +9.527991372,2.35787868,9.089547147,4.048543832,9.387297553,5.20634648,10.31475225,5.566154644,11.70510613,5.462311881,13.7179826,5.461625566,14.70416993,5.543124416,16.48060276,5.402690499,18.2893592,5.431235637,20.54981248,5.401746532 +9.575356355,2.345283683,9.112111846,4.026925775,9.433963127,5.150894147,10.34035851,5.54467002,11.73416392,5.433144711,13.75203734,5.43246206,14.74067287,5.505334959,16.56253015,5.373831138,18.38027817,5.402223798,20.60082716,5.372902762 +9.622956796,2.326521789,9.157409434,4.005415288,9.433963127,5.178535923,10.39176188,5.506859215,11.76329385,5.404133284,13.82040065,5.40344367,14.81395082,5.475927307,16.64486482,5.345125935,18.47164911,5.37336693,20.70323676,5.344202518 +9.670793865,2.31409429,9.202932202,3.984019703,9.480860682,5.123379798,10.41755932,5.477454174,11.82177084,5.375266217,13.85470964,5.374590838,14.88759305,5.44667674,16.68618551,5.316584503,18.56347428,5.344664207,20.80615546,5.315655581 +9.718868739,2.295581907,9.225778378,3.962746186,9.504396813,5.096022427,10.46934647,5.448195451,11.88053852,5.346553348,13.92358335,5.345881577,14.96160136,5.388664671,16.76913488,5.288185092,18.65575591,5.316114803,20.90958578,5.287261132 +9.767182601,2.283319679,9.271641018,3.941578525,9.527991372,5.068811136,10.52139106,5.390167207,11.91003183,5.318004294,13.99279943,5.31732567,14.96160136,5.41758242,16.8524966,5.259937381,18.70206862,5.287728283,21.01353027,5.259018356 +9.815736637,2.265053487,9.294657763,3.920531632,9.575356355,5.041735248,10.52139106,5.419093019,11.93959835,5.289607684,14.0275364,5.288932684,15.03597759,5.359880232,16.89433274,5.231850832,18.79503923,5.259483012,21.11799148,5.230926444 +9.864532042,2.252954331,9.340862812,3.899589468,9.622956796,4.988036175,10.57369437,5.361374742,11.99895177,5.261352374,14.09726926,5.26068098,15.11072354,5.33124955,16.97831684,5.20390404,18.8416977,5.231398889,21.17041666,5.202994805 +9.913570016,2.234931058,9.387297553,3.858055288,9.622956796,5.014803989,10.62625769,5.332736076,12.05860024,5.233247995,14.16734876,5.232580187,15.18584107,5.302771803,17.06271843,5.17610653,18.93536243,5.203454511,21.27565777,5.175202152 +9.962851764,2.222992806,9.387297553,3.878759169,9.670793865,4.961391759,10.65263725,5.312152417,12.11854524,5.177509137,14.20251905,5.204639717,15.26133202,5.274446175,17.1475396,5.148457505,19.02949277,5.175659402,21.38142205,5.147557958 +10.0123785,2.211118324,9.433963127,3.83744685,9.718868739,4.934889668,10.67908231,5.275937579,12.11854524,5.20529374,14.27312176,5.176838277,15.2992181,5.254087507,17.20432117,5.116396965,19.12409105,5.148012766,21.43450119,5.120071483 +10.06215144,2.199307272,9.480860682,3.816948496,9.742995723,4.90853878,10.73216953,5.247755291,12.17878823,5.14985262,14.34407545,5.121700234,15.37527267,5.218258273,17.23278243,5.093621743,19.2191596,5.120513808,21.54105511,5.092721778 +10.11217181,2.181713166,9.504396813,3.796567092,9.767182601,4.882328598,10.78552065,5.219723542,12.23933069,5.122343834,14.34407545,5.149185344,15.45170531,5.176513044,17.31844901,5.066413324,19.26687094,5.093171741,21.64813872,5.065518167 +10.16244083,2.170059186,9.551644504,3.776287104,9.815736637,4.856248836,10.81229558,5.199576097,12.30017412,5.067786207,14.41538187,5.094341829,15.5285179,5.148861847,17.40454145,5.039350244,19.36264927,5.065965726,21.75575466,5.038459868 +10.21295975,2.152699061,9.59912707,3.756115445,9.864532042,4.804525362,10.86604502,5.164118593,12.30017412,5.094981992,14.48704275,5.067129564,15.60571235,5.121358354,17.49106187,5.012431725,19.41071683,5.038914929,21.86390557,5.011546105 +10.26372981,2.141200064,9.622956796,3.736058871,9.864532042,4.830308384,10.92006166,5.122806472,12.36132002,5.040715793,14.55905988,5.040062658,15.68329053,5.094001776,17.5780124,4.985656996,19.50721023,5.011998736,21.97259411,4.984776107 +10.31475225,2.129762492,9.670793865,3.716102098,9.913570016,4.7788612,10.97434682,5.095442158,12.42276987,5.01378998,14.63143501,5.013140334,15.72222413,5.066801275,17.66539517,4.959025289,19.60418331,4.98522632,22.08182296,4.958149105 +10.36602833,2.112724733,9.718868739,3.696251927,9.938180343,4.753343458,11.01068676,5.063711756,12.48452521,4.987007995,14.66775738,4.98637161,15.83960578,5.012825384,17.70924931,4.932545523,19.70163845,4.958596913,22.1915948,4.931664336 +10.41755932,2.101439266,9.742995723,3.676515007,9.962851764,4.727961975,11.02890184,5.041171058,12.54658754,4.960369071,14.74067287,4.959736085,15.83960578,5.039726227,17.79728448,4.90619752,19.75054755,4.932119435,22.24668519,4.90533067 +10.46934647,2.090214083,9.767182601,3.656883477,10.0123785,4.702706788,11.08372806,5.014242813,12.5777343,4.933882131,14.77726642,4.933252524,15.91834668,4.986048552,17.84146604,4.879999839,19.89800455,4.905764076,22.35727659,4.879128039 +10.52139106,2.073492705,9.815736637,3.637349632,10.03723412,4.677595689,11.13882682,4.98745841,12.60895838,4.907536622,14.85072629,4.906900744,15.99747902,4.959414754,17.93015847,4.853932517,19.94740112,4.87956871,22.41277828,4.853074902 +10.57369437,2.062416803,9.864532042,3.617920131,10.06215144,4.652618677,11.1941995,4.947559542,12.67163929,4.881322208,14.92455133,4.880689726,16.07700474,4.932923223,18.0192918,4.828004438,19.99692032,4.853513219,22.52419534,4.827151403 +10.62625769,2.045917799,9.913570016,3.598594415,10.11217181,4.627765948,11.24984743,4.907979859,12.73463179,4.855247822,14.96160136,4.85462825,16.15692578,4.906573202,18.10886823,4.802214858,20.09632782,4.82758738,22.63616628,4.80136638 +10.67908231,2.034989192,9.938180343,3.579378958,10.16244083,4.603045975,11.305772,4.881763077,12.79793743,4.829312717,14.99874337,4.828705935,16.21042708,4.876018927,18.1538233,4.776572415,20.19622949,4.801800027,22.74869384,4.775719091 +10.73216953,2.024118963,9.962851764,3.560266106,10.18766898,4.578467036,11.36197458,4.855686336,12.86155777,4.777876137,15.07330423,4.802912607,16.23724413,4.854313728,18.2440685,4.751057567,20.29662778,4.776150422,22.86178079,4.750208802 +10.78552065,2.013306798,10.0123785,3.541248359,10.21295975,4.554019342,11.3995981,4.825448945,12.86155777,4.803516148,15.14823574,4.777257059,16.31796175,4.828383613,18.2893592,4.725688289,20.34701393,4.750647156,22.97542992,4.72483478 +10.83913698,1.997200667,10.06215144,3.522332198,10.26372981,4.529693299,11.41845656,4.803968854,12.92549438,4.752354326,15.22353975,4.751738554,16.39908063,4.802592007,18.38027817,4.700445248,20.4481618,4.725270792,23.089644,4.699596297 +10.89301986,1.986532291,10.08713062,3.50352396,10.31475225,4.505497196,11.47521931,4.778307663,12.98974883,4.726968843,15.26133202,4.72636564,16.48060276,4.776938171,18.47164911,4.675337046,20.49892413,4.700039209,23.20442587,4.67449263 +10.94717059,1.970640351,10.11217181,3.484816152,10.34035851,4.48143914,11.53226423,4.752783547,13.05432269,4.701718961,15.33719824,4.70111898,16.56253015,4.75142137,18.56347428,4.650362963,20.60082716,4.674933176,23.31977833,4.649523058 +11.00159051,1.960113851,10.16244083,3.466201433,10.36602833,4.457509547,11.58959274,4.71476204,13.0867299,4.676613137,15.37527267,4.67601636,16.64486482,4.726040871,18.65575591,4.625522284,20.70323676,4.649961251,23.43570422,4.624686866 +11.05628096,1.944433255,10.21295975,3.447686147,10.41755932,4.41003301,11.64720623,4.6770447,13.15178588,4.651632238,15.45170531,4.651038649,16.72760878,4.675704231,18.70206862,4.600823329,20.80615546,4.625122718,23.55220639,4.59998334 +11.11124329,1.934046744,10.26372981,3.429269764,10.41755932,4.433699026,11.70510613,4.652061496,13.18443504,4.626793863,15.5285179,4.626194361,16.72760878,4.700795946,18.8416977,4.551811433,20.90958578,4.600416863,23.61067448,4.575420755 +11.16647884,1.923715715,10.31475225,3.410951756,10.46934647,4.386476093,11.76329385,4.602512803,13.24997672,4.602079082,15.56706727,4.601491817,16.81076407,4.650728187,18.8416977,4.576238289,21.01353027,4.57584298,23.72804646,4.550980392 +11.22198897,1.913439871,10.34035851,3.392738256,10.52139106,4.363045009,11.76329385,4.627211744,13.31584421,4.57749632,15.64445335,4.576912191,16.89433274,4.625885557,18.93536243,4.527497183,21.11799148,4.527106084,23.78695107,4.526679469 +11.27777505,1.898132659,10.36602833,3.374622012,10.54751029,4.339747607,11.82177084,4.577927724,13.34890065,4.553053809,15.68329053,4.552472799,16.97831684,4.601175628,19.02949277,4.503312812,21.11799148,4.551400361,23.90519935,4.502499465 +11.33383846,1.887993471,10.41755932,3.356595913,10.57369437,4.316574605,11.88053852,4.55347397,13.4152599,4.528732923,15.76125437,4.528155017,17.06271843,4.576597691,19.12409105,4.479257625,21.22297198,4.502923802,24.02403545,4.478448623 +11.39018056,1.872889826,10.46934647,3.338666104,10.62625769,4.293516912,11.93959835,4.529150839,13.44856314,4.504550794,15.83960578,4.503967132,17.11921913,4.548098244,19.2191596,4.455330933,21.32847435,4.478870693,24.1434623,4.454526253 +11.44680275,1.862885477,10.4953365,3.320838589,10.67908231,4.270582385,11.99895177,4.480911257,13.51541783,4.480488995,15.91834668,4.47990845,17.1475396,4.527852757,19.31470074,4.43153205,21.43450119,4.454946068,24.26348284,4.430731668 +11.50370641,1.852934568,10.52139106,3.303106269,10.70559301,4.247778706,11.99895177,4.504957634,13.58260487,4.456555726,15.99747902,4.455978282,17.23278243,4.503666486,19.41071683,4.407860292,21.54105511,4.431149241,24.32371667,4.407072838 +11.56089295,1.838111388,10.57369437,3.285462183,10.73216953,4.225096792,12.05860024,4.456975732,13.65012591,4.4327503,16.03719258,4.432184642,17.31844901,4.479609411,19.50721023,4.384314981,21.64813872,4.407479528,24.44463328,4.383531733 +11.61836377,1.828292814,10.62625769,3.267912346,10.78552065,4.202527742,12.11854524,4.433168063,13.68401219,4.409080691,16.07700474,4.408518054,17.40454145,4.45568084,19.55563666,4.360904003,21.75575466,4.38393625,24.56615098,4.360116377 +11.67612029,1.813666764,10.67908231,3.250456255,10.83913698,4.180079249,12.17878823,4.409487566,13.7179826,4.385537471,16.15692578,4.384969229,17.49106187,4.431880087,19.60418331,4.337618033,21.86390557,4.360518734,24.62713618,4.336834613 +11.73416392,1.803978765,10.70559301,3.233099755,10.86604502,4.157758831,12.2191165,4.382028749,13.78617662,4.362111401,16.23724413,4.361546195,17.5780124,4.40820647,19.70163845,4.314447932,21.91818247,4.337234821,24.74956113,4.313668697 +11.7924961,1.794342515,10.73216953,3.215835935,10.89301986,4.135557597,12.23933069,4.362522507,13.85470964,4.338810465,16.31796175,4.338248278,17.62164962,4.384667919,19.79957807,4.291401599,21.97259411,4.314075237,24.87259468,4.290626526 +11.85111825,1.784757739,10.78552065,3.198658018,10.94717059,4.113466836,12.30017412,4.339219375,13.92358335,4.315633995,16.39908063,4.315074811,17.70924931,4.361246493,19.89800455,4.268478371,22.08182296,4.291030894,24.99623984,4.267707438 +11.91003183,1.770479964,10.83913698,3.181571859,11.00159051,4.091494076,12.36132002,4.31604072,13.95814849,4.292589754,16.48060276,4.292025128,17.75321233,4.337958694,19.99692032,4.245677591,22.1915948,4.268109646,25.12049965,4.244910777 +11.96923827,1.756316408,10.89301986,3.16457697,11.05628096,4.069638687,12.42276987,4.292985879,13.99279943,4.269668562,16.52151567,4.269106952,17.84146604,4.314786774,20.09632782,4.222998606,22.30191234,4.245310836,25.18286101,4.222244177 +12.02873903,1.746934755,10.92006166,3.147679041,11.11124329,4.026293327,12.46390606,4.266252542,14.0623596,4.246861425,16.56253015,4.246311151,17.93015847,4.291738631,20.19622949,4.200440764,22.41277828,4.22263381,25.30804855,4.199690365 +12.08853558,1.737603215,10.97434682,3.130865195,11.11124329,4.047900042,12.48452521,4.247261668,14.13226557,4.224176116,16.64486482,4.223628781,18.0192918,4.268813602,20.29662778,4.178003418,22.52419534,4.200077917,25.3708755,4.177265229 +12.14862939,1.728321522,11.02890184,3.114141164,11.16647884,4.004786219,12.54658754,4.224574221,14.20251905,4.201611984,16.72760878,4.201067573,18.10886823,4.246011032,20.34701393,4.155694084,22.63616628,4.177642509,25.49699768,4.154951679 +12.20902193,1.719089408,11.05628096,3.097512548,11.22198897,3.983393994,12.60895838,4.202007963,14.23777664,4.179176587,16.81076407,4.178626879,18.19888996,4.200787147,20.39752517,4.133503876,22.74869384,4.155326944,25.62374684,4.132757321 +12.2697147,1.705336968,11.11124329,3.080966675,11.27777505,3.94096722,12.67163929,4.179562246,14.27312176,4.156860989,16.89433274,4.156306056,18.19888996,4.223330265,20.49892413,4.111424085,22.86178079,4.133130581,25.75112608,4.110681518 +12.33070917,1.69622763,11.16647884,3.064509184,11.27777505,3.96211604,12.71359957,4.153535223,14.34407545,4.134656432,16.93627273,4.13411258,18.2893592,4.178347951,20.60082716,4.089462236,22.91853491,4.111060856,25.81505297,4.088731663 +12.39200686,1.682658081,11.1941995,3.048145589,11.36197458,3.919908199,12.73463179,4.135046101,14.41538187,4.112570484,17.02046532,4.112029537,18.38027817,4.156028618,20.70323676,4.067617701,22.97542992,4.089108976,25.87913855,4.066899015 +12.45360926,1.673669886,11.22198897,3.03186937,11.39018056,3.898977019,12.79793743,4.112958071,14.48704275,4.090602512,17.10507644,4.090064455,18.47164911,4.133828507,20.80615546,4.045889851,23.14696379,4.067258342,26.00778738,4.045175005 +12.5155179,1.664729703,11.27777505,3.015674141,11.44680275,3.878149992,12.86155777,4.090988029,14.55905988,4.068751885,17.19010818,4.068216703,18.56347428,4.111746982,20.90958578,4.024278065,23.26203059,4.045532412,26.13707574,4.023567037 +12.5777343,1.655837275,11.33383846,2.999565421,11.50370641,3.857434215,12.92549438,4.069135343,14.59520258,4.047025923,17.23278243,4.046493598,18.65575591,4.089783408,21.01353027,4.002781721,23.31977833,4.023930435,26.26700681,4.002074491 +12.64025998,1.642590843,11.39018056,2.983542749,11.56089295,3.836829096,12.98974883,4.036582913,14.63143501,4.025415972,17.31844901,4.024878587,18.7484963,4.04622349,21.11799148,3.981400204,23.43570422,4.002435949,26.33221437,3.980704567 +12.70309649,1.629450379,11.44680275,2.951765301,11.58959274,3.816341534,13.05432269,4.004290897,14.70416993,4.00391355,17.40454145,4.003379035,18.7484963,4.067937157,21.22297198,3.9601329,23.55220639,3.981056278,26.52880989,3.938298705 +12.76624537,1.620746402,11.44680275,2.967605664,11.61836377,3.795963371,13.11921757,3.982901318,14.77726642,3.982525987,17.49106187,3.981994327,18.8416977,4.024609921,21.27565777,3.938986932,23.66928772,3.959790811,26.52880989,3.959433205 +12.82970816,1.612088918,11.53226423,2.935992196,11.67612029,3.775686608,13.18443504,3.961625995,14.85072629,3.961252669,17.5780124,3.960723849,18.93536243,4.003111805,21.38142205,3.917946185,23.78695107,3.938638937,26.66068833,3.917261634 +12.89348645,1.60347768,11.56089295,2.920314844,11.73416392,3.755518156,13.24997672,3.940464318,14.92455133,3.919061719,17.66539517,3.939566991,19.02949277,3.981728524,21.43450119,3.897025482,23.90519935,3.917600049,26.79322235,3.896336937 +12.95758178,1.59491244,11.61836377,2.904715502,11.7924961,3.715518467,13.31584421,3.898494784,14.92455133,3.940092986,17.70924931,3.918530839,19.12409105,3.960459466,21.54105511,3.876208879,24.02403545,3.896673543,26.92641522,3.875524012 +13.02199574,1.586392953,11.67612029,2.889199486,11.7924961,3.735457438,13.31584421,3.919415679,14.99874337,3.898127406,17.75321233,3.897607014,19.2191596,3.93930402,21.64813872,3.855503471,24.1434623,3.87585882,27.06027022,3.854822263 +13.0867299,1.577918974,11.70510613,2.873771994,11.85111825,3.695671414,13.38203914,3.877670332,15.07330423,3.877304917,17.84146604,3.876787305,19.31470074,3.91826158,21.75575466,3.834908665,24.26348284,3.855155283,27.19479062,3.834231095 +13.15178588,1.565295875,11.73416392,2.85842688,11.91003183,3.675930377,13.44856314,3.856957118,15.14823574,3.856593655,17.93015847,3.856078807,19.41071683,3.89733154,21.86390557,3.814423869,24.32371667,3.834569865,27.32997974,3.813749919 +13.21716525,1.55693459,11.7924961,2.843158122,11.96923827,3.65629479,13.51541783,3.836354547,15.22353975,3.835993025,18.0192918,3.835480928,19.50721023,3.876513303,21.97259411,3.794048496,24.44463328,3.814086879,27.46584091,3.793378146 +13.28286964,1.544479362,11.85111825,2.827970925,12.02873903,3.636764089,13.58260487,3.815862028,15.2992181,3.815502437,18.10886823,3.814993075,19.5718055,3.85237343,22.08182296,3.773781962,24.56615098,3.793713306,27.60237746,3.773115192 +13.34890065,1.536229272,11.91003183,2.812864853,12.05860024,3.617344817,13.62758168,3.792099843,15.37527267,3.774863861,18.19888996,3.794614662,19.60418331,3.835224905,22.1915948,3.753623684,24.74956113,3.773441154,27.73959275,3.752960477 +13.4152599,1.52802325,11.93959835,2.797844966,12.11854524,3.598022175,13.65012591,3.775219621,15.37527267,3.795121303,18.2893592,3.774345103,19.70163845,3.81473842,22.30191234,3.733573086,24.81100164,3.753292066,27.87749016,3.732913421 +13.48194905,1.519861063,11.99895177,2.782899816,12.14862939,3.578809774,13.7179826,3.755053664,15.45170531,3.754699804,18.38027817,3.754183818,19.79957807,3.794361367,22.41277828,3.713629591,24.87259468,3.733250568,28.01607308,3.712973449 +13.54896971,1.511742475,12.05860024,2.768034499,12.20902193,3.559692972,13.78617662,3.734995427,15.5285179,3.734643457,18.47164911,3.724150949,19.89800455,3.774093161,22.52419534,3.683921149,24.99623984,3.713308796,28.15534492,3.69313999 +13.61632354,1.503667253,12.08853558,2.753253993,12.2697147,3.540678286,13.85470964,3.715044334,15.60571235,3.714694245,18.56347428,3.694358339,19.99692032,3.753933221,22.63616628,3.654450371,25.12049965,3.693473546,28.29530909,3.673412475 +13.68401219,1.491638157,12.14862939,2.738547033,12.33070917,3.521765171,13.92358335,3.695199814,15.68329053,3.694851594,18.65575591,3.674624316,20.09632782,3.733880969,22.74869384,3.634929523,25.24537718,3.673744249,28.43596904,3.653790338 +13.75203734,1.47970529,12.20902193,2.723918634,12.36132002,3.50295996,13.99279943,3.65584257,15.76125437,3.675114936,18.7484963,3.654995705,20.19622949,3.71393583,22.86178079,3.615512949,25.3708755,3.65412034,28.57732824,3.634273016 +13.82040065,1.471801201,12.2697147,2.709368374,12.42276987,3.484248323,13.99279943,3.675461296,15.80038151,3.655490882,18.8416977,3.635471944,20.26310635,3.690808361,22.97542992,3.596200091,25.49699768,3.634601254,28.71939015,3.614859948 +13.8891038,1.463939333,12.30017412,2.694901128,12.45360926,3.465643441,14.0623596,3.636314285,15.83960578,3.635971614,18.93536243,3.616052472,20.29662778,3.67437903,23.089644,3.576990397,25.62374684,3.615186434,28.86215827,3.595550579 +13.95814849,1.45611946,12.36132002,2.68050587,12.5155179,3.447131137,14.13226557,3.616890314,15.91834668,3.616549474,19.02949277,3.596736733,20.39752517,3.65475173,23.20442587,3.557883314,25.75112608,3.59587532,29.00563611,3.576344354 +14.0275364,1.448341358,12.39200686,2.666192742,12.54658754,3.42872445,14.20251905,3.597570099,15.99747902,3.597231079,19.12409105,3.577524172,20.49892413,3.635229272,23.31977833,3.538878294,25.87913855,3.576667361,29.1498272,3.557240722 +14.09726926,1.440604804,12.45360926,2.651950834,12.60895838,3.410409354,14.27312176,3.578353086,16.07700474,3.578015878,19.1715664,3.558421224,20.60082716,3.615811097,23.43570422,3.519974794,26.00778738,3.557562003,29.29473509,3.538239135 +14.16734876,1.432909577,12.5155179,2.637785003,12.67163929,3.392192091,14.34407545,3.549726835,16.15692578,3.558903317,19.2191596,3.539420281,20.70323676,3.596496647,23.55220639,3.501172269,26.13707574,3.5385587,29.44036333,3.519339049 +14.23777664,1.425255455,12.5777343,2.62369484,12.70309649,3.374078763,14.41538187,3.52132959,16.23724413,3.539892849,19.31470074,3.520513885,20.80615546,3.577285368,23.61067448,3.482477018,26.26700681,3.519656907,29.58671551,3.50053992 +14.30855463,1.417642218,12.60895838,2.609685066,12.76624537,3.356055566,14.48704275,3.502519828,16.27755291,3.520990842,19.41071683,3.50170848,20.90958578,3.558176709,23.72804646,3.463874794,26.35398617,3.497739255,29.73379522,3.48184121 +14.37968446,1.410069649,12.67163929,2.595745003,12.82970816,3.338128643,14.55905988,3.483810542,16.35847091,3.50218289,19.50721023,3.483003528,21.01353027,3.539170123,23.84600191,3.445371937,26.39758379,3.482169355,29.88160609,3.481827538 +14.45116789,1.40253753,12.73463179,2.581879404,12.89348645,3.32029748,14.63143501,3.465201195,16.39908063,3.483482243,19.60418331,3.464398492,21.11799148,3.520265063,23.96454374,3.426967916,26.52880989,3.463568774,30.03015175,3.463228783 +14.52300668,1.395045645,12.76624537,2.568092913,12.92549438,3.302568049,14.70416993,3.446691252,16.48060276,3.464874649,19.70163845,3.445892837,21.22297198,3.482771034,24.02403545,3.408668895,26.66068833,3.445067551,30.17943586,3.444729377 +14.59520258,1.387593779,12.82970816,2.554375022,12.95758178,3.284933287,14.77726642,3.419118275,16.56253015,3.446366451,19.79957807,3.427486034,21.22297198,3.501460988,24.1434623,3.390460929,26.79322235,3.426665156,30.32946207,3.426328788 +14.66775738,1.380181718,12.89348645,2.540730407,13.02199574,3.267386275,14.85072629,3.391765877,16.64486482,3.427957117,19.8487303,3.409184246,21.32847435,3.464167239,24.26348284,3.372350224,26.92641522,3.40836106,30.48023408,3.408026489 +14.74067287,1.37280925,12.95758178,2.527158678,13.0867299,3.249932994,14.92455133,3.373648202,16.72760878,3.40964612,19.99692032,3.39096687,21.43450119,3.44566282,24.38410002,3.354336261,27.06027022,3.390154739,30.55590092,3.38982861 +14.81395082,1.361826997,12.98974883,2.513664379,13.11921757,3.232579289,14.99874337,3.355627304,16.81076407,3.391432935,20.04656245,3.372860084,21.54105511,3.427257245,24.50531681,3.336418521,27.19479062,3.372045669,30.7077986,3.371721282 +14.88759305,1.354552574,13.05432269,2.500237227,13.18443504,3.215311934,15.07330423,3.337702669,16.8524966,3.37332366,20.09632782,3.354849984,21.64813872,3.408949986,24.62713618,3.318596493,27.32997974,3.354033332,30.9370621,3.353704094 +14.96160136,1.347317008,13.11921757,2.486881798,13.21716525,3.198143096,15.14823574,3.311001583,16.93627273,3.355304497,20.22406798,3.345867526,21.75575466,3.390740519,24.74956113,3.300869664,27.46584091,3.336117211,31.09085458,3.335789731 +15.03597759,1.340120093,13.15178588,2.473602566,13.28286964,3.181059688,15.22353975,3.284514101,16.97831684,3.337388138,20.29662778,3.336916398,21.86390557,3.37262832,24.87259468,3.283237525,27.60237746,3.318296792,31.24541159,3.317971062 +15.11072354,1.329399347,13.21716525,2.460389411,13.34890065,3.164067534,15.2992181,3.266969328,17.06271843,3.31956093,20.34701393,3.319098226,21.97259411,3.354612871,24.99623984,3.265699571,27.73959275,3.300571564,31.40073691,3.300247573 +15.18584107,1.322298141,13.28286964,2.447246836,13.4152599,3.147166147,15.37527267,3.249518274,17.1475396,3.301828949,20.39752517,3.301375198,22.08182296,3.336693654,25.12049965,3.2482553,27.87749016,3.282941018,31.55683439,3.282618758 +15.26133202,1.315234868,13.34890065,2.434174465,13.44856314,3.130361187,15.45170531,3.232160437,17.23278243,3.284191687,20.49892413,3.283740359,22.1915948,3.318870156,25.24537718,3.213658422,28.01607308,3.265404648,31.71370784,3.265084109 +15.33719824,1.308209325,13.4152599,2.421171921,13.51541783,3.113639847,15.5285179,3.214895321,17.31844901,3.266648636,20.60082716,3.26619972,22.30191234,3.301141865,25.24537718,3.23090421,28.08562267,3.247968329,31.87136114,3.230307989 +15.41344161,1.301221309,13.44856314,2.408243561,13.58260487,3.097007828,15.60571235,3.197722428,17.40454145,3.249199295,20.70323676,3.248752777,22.41277828,3.283508272,25.3708755,3.196492137,28.15534492,3.230625114,31.87136114,3.247643125 +15.49006399,1.294270622,13.51541783,2.395379532,13.61632354,3.080470699,15.68329053,3.163663771,17.49106187,3.231843162,20.80615546,3.231399029,22.52419534,3.265968873,25.49699768,3.179417548,28.29530909,3.213368198,32.02979815,3.213052768 +15.56706727,1.283916664,13.54896971,2.382588896,13.68401219,3.064015858,15.68329053,3.180641268,17.5780124,3.21457974,20.90958578,3.214137979,22.63616628,3.248523162,25.62374684,3.162434166,28.43596904,3.196203463,32.26893166,3.195883443 +15.64445335,1.277058412,13.61632354,2.369861905,13.75203734,3.047648913,15.76125437,3.146764541,17.62164962,3.197414811,21.01353027,3.196969132,22.74869384,3.213923432,25.75112608,3.145541503,28.57732824,3.179130417,32.42934505,3.178812106 +15.72222413,1.270236794,13.68401219,2.357202898,13.82040065,3.031369394,15.83960578,3.12995558,17.70924931,3.180335294,21.11799148,3.179891996,22.74869384,3.231170641,25.87913855,3.128739076,28.71939015,3.162148568,32.59055588,3.161831958 +15.80038151,1.260075104,13.75203734,2.34461151,13.8891038,3.015176836,15.91834668,3.113236407,17.75321233,3.16335322,21.22297198,3.162906079,22.86178079,3.196755731,26.00778738,3.112026401,28.86215827,3.145257431,32.67146157,3.144948686 +15.87892742,1.253344205,13.82040065,2.332087382,13.95814849,2.999070773,15.99747902,3.096606543,17.84146604,3.146455648,21.32847435,3.129218248,22.97542992,3.179679734,26.13707574,3.095403,29.00563611,3.128456521,32.83387599,3.128149426 +15.9578638,1.246649261,13.8891038,2.319630154,13.99279943,2.983056599,16.07700474,3.080065509,17.93015847,3.129648337,21.32847435,3.146010896,23.089644,3.162694951,26.26700681,3.078868395,29.1498272,3.111745356,32.9970978,3.111439901 +16.03719258,1.239990079,13.92358335,2.307243997,14.0623596,2.967122112,16.15692578,3.055425479,18.0192918,3.112930806,21.43450119,3.112503014,23.20442587,3.145800896,26.39758379,3.062422113,29.29473509,3.095123456,33.16113101,3.094819632 +16.11691572,1.233366467,13.99279943,2.294919474,14.09726926,2.951278535,16.23724413,3.030982565,18.10886823,3.096302574,21.54105511,3.095877067,23.31977833,3.128997083,26.52880989,3.046063681,29.44036333,3.078590345,33.32597965,3.078288144 +16.19703517,1.226778237,14.0275364,2.282665265,14.20251905,2.935508031,16.31796175,3.014792073,18.19888996,3.079763164,21.64813872,3.07933993,23.43570422,3.11228303,26.66068833,3.029792631,29.58671551,3.062145548,33.49164777,3.061844961 +16.27755291,1.2202252,14.09726926,2.270472033,14.23777664,2.919833265,16.39908063,2.998688065,18.2440685,3.063318116,21.75575466,3.062891129,23.55220639,3.095658258,26.79322235,3.013608495,29.73379522,3.045788593,33.65813945,3.045489612 +16.35847091,1.213707166,14.16734876,2.258343933,14.34407545,2.904230793,16.48060276,2.982670079,18.2893592,3.046960881,21.86390557,3.046530192,23.66928772,3.07912229,26.92641522,2.997510809,29.88160609,3.029519012,33.82545879,3.029221629 +16.43979116,1.207223949,14.23777664,2.246280617,14.37968446,2.888723038,16.56253015,2.966737656,18.38027817,3.030685038,21.97259411,3.03025665,23.78695107,3.062674651,27.06027022,2.981499112,29.95578685,3.013342254,33.9936099,3.013040543 +16.43979116,1.200780079,14.30855463,2.23428174,14.45116789,2.873292448,16.64486482,2.943004231,18.47164911,3.014496135,22.08182296,3.014070035,23.90519935,3.046314871,27.19479062,2.949743431,30.17943586,2.997240106,34.1625969,2.996945891 +16.52151567,1.194365915,14.37968446,2.222346956,14.52300668,2.857944284,16.72760878,2.927283689,18.56347428,2.998393708,22.1915948,2.997969884,24.02403545,3.030042478,27.19479062,2.965572944,30.32946207,2.981229855,34.33242397,2.980937211 +16.60364645,1.187986013,14.41538187,2.210480264,14.59520258,2.842678104,16.81076407,2.903865889,18.65575591,2.982377294,22.24668519,2.981961589,24.1434623,3.013857008,27.32997974,2.933986891,30.48023408,2.957380494,34.50309527,2.965014044 +16.68618551,1.184806526,14.48704275,2.19867262,14.66775738,2.827493471,16.89433274,2.888354411,18.7484963,2.966446435,22.41277828,2.966027127,24.26348284,2.997757995,27.46584091,2.918314517,30.63175561,2.941583159,34.674615,2.949175934 +16.76913488,1.175328264,14.55905988,2.186928048,14.74067287,2.812389949,16.97831684,2.872925791,18.8416977,2.950600673,22.46841775,2.950189397,24.38410002,2.981744977,27.60237746,2.90272586,30.78403037,2.925870209,34.84698738,2.933422425 +16.8524966,1.169050055,14.59520258,2.175250483,14.81395082,2.797367106,17.06271843,2.857579585,18.93536243,2.919174088,22.52419534,2.934436237,24.50531681,2.949986677,27.73959275,2.887220472,30.9370621,2.902463716,35.02021665,2.917753067 +16.93627273,1.162805382,14.66775738,2.163631025,14.88759305,2.782424509,17.1475396,2.842315354,18.93536243,2.934839554,22.63616628,2.918761462,24.50531681,2.965817496,27.87749016,2.871797908,31.09085458,2.886959729,35.19430706,2.902167409 +17.02046532,1.156594065,14.74067287,2.152073633,14.96160136,2.767561731,17.23278243,2.827132658,19.02949277,2.90358084,22.74869384,2.903170418,24.62713618,2.934228838,28.01607308,2.856457727,31.24541159,2.886948392,35.36926291,2.886665004 +17.10507644,1.150415928,14.81395082,2.140577978,15.03597759,2.752778344,17.31844901,2.80451605,19.12409105,2.888070885,22.86178079,2.887662655,24.74956113,2.918555171,28.15534492,2.841199488,31.40073691,2.871527282,35.54508848,2.871245408 +17.19010818,1.144270792,14.88759305,2.129143728,15.11072354,2.738073926,17.40454145,2.782080372,19.2191596,2.872643779,22.97542992,2.87223773,24.87259468,2.902965229,28.29530909,2.826022754,31.55683439,2.856188547,35.7217881,2.855908178 +17.27556262,1.138158481,14.92455133,2.117774715,15.14823574,2.7234534,17.49106187,2.767219431,19.31470074,2.857299079,23.089644,2.856895199,24.99623984,2.887458562,28.43596904,2.810927088,31.71370784,2.840931746,35.89936613,2.840652874 +17.36144187,1.13207882,14.99874337,2.106462273,15.22353975,2.708905626,17.5780124,2.752437873,19.41071683,2.842036346,23.20442587,2.841634624,25.12049965,2.872034727,28.57732824,2.795912058,31.87136114,2.825756441,36.07782692,2.825479059 +17.44774803,1.126031635,15.07330423,2.095210258,15.2992181,2.69443556,17.66539517,2.737735274,19.50721023,2.826855141,23.31977833,2.826455565,25.24537718,2.856693281,28.71939015,2.780977234,32.02979815,2.810662198,36.25717486,2.810386298 +17.53448324,1.120016752,15.14823574,2.084018347,15.33719824,2.680048051,17.75321233,2.72311121,19.60418331,2.811755029,23.43570422,2.811357587,25.3708755,2.841433784,28.86215827,2.766122186,32.18902277,2.795648584,36.43741437,2.795374157 +17.62164962,1.114033998,15.18584107,2.07289029,15.41344161,2.665732134,17.84146604,2.708565263,19.65285047,2.796741068,23.55220639,2.796340258,25.49699768,2.826255797,29.00563611,2.75134649,32.34903892,2.780715167,36.61854987,2.780442206 +17.70924931,1.108083202,15.26133202,2.061817605,15.49006399,2.651492687,17.93015847,2.694097016,19.75054755,2.781801815,23.66928772,2.781403146,25.62374684,2.811158887,29.07764228,2.736655093,32.50985054,2.765861519,36.80058583,2.765590016 +17.79728448,1.102164193,15.33719824,2.050804067,15.56706727,2.637329302,17.98953157,2.677320301,19.8487303,2.766942363,23.78695107,2.766545824,25.70859613,2.793653203,29.29473509,2.707501907,32.67146157,2.751087214,36.9835267,2.750817162 +17.88575728,1.096276802,15.41344161,2.03984936,15.64445335,2.623241574,18.0192918,2.665402429,19.89800455,2.752167689,23.84600191,2.751773266,25.75112608,2.781217484,29.29473509,2.722031455,32.91538572,2.736386457,37.16737701,2.73612322 +17.97466989,1.090420859,15.49006399,2.028953169,15.72222413,2.609229097,18.10886823,2.651164743,19.99692032,2.737466532,23.96454374,2.737074217,25.87913855,2.766361153,29.44036333,2.69303934,33.07901273,2.721769598,37.35214126,2.721507767 +18.0640245,1.084596196,15.56706727,2.018115182,15.80038151,2.595291471,18.19888996,2.637003111,20.09632782,2.722843904,24.08367485,2.722453684,26.00778738,2.75158418,29.58671551,2.678654027,33.32597965,2.707225503,37.537824,2.706970386 +18.1538233,1.078802647,15.60571235,2.007339028,15.87892742,2.581428294,18.2893592,2.622917124,20.19622949,2.708299385,24.20339818,2.70791125,26.13707574,2.73688614,29.73379522,2.664345556,33.49164777,2.692764412,37.63101123,2.692515944 +18.2440685,1.073040045,15.68329053,1.996616497,15.91834668,2.567644211,18.38027817,2.608906381,20.29662778,2.693832558,24.26348284,2.693451784,26.26700681,2.722266612,29.88160609,2.650113516,33.57479041,2.678385827,37.81808027,2.678133427 +18.33476233,1.067308225,15.72222413,1.98595514,15.99747902,2.553928717,18.47164911,2.594970478,20.39752517,2.679443008,24.38410002,2.679064269,26.39758379,2.707725177,30.03015175,2.635957498,33.74169541,2.664078788,37.91196323,2.663832967 +18.42590701,1.061607023,15.80038151,1.975346834,16.03719258,2.540291474,18.56347428,2.581109016,20.49892413,2.665130323,24.50531681,2.664753606,26.52880989,2.693261418,30.17943586,2.621877098,33.82545879,2.649853375,38.10042892,2.649603664 +18.51750478,1.055936274,15.87892742,1.964795194,16.11691572,2.526722089,18.65575591,2.567321598,20.60082716,2.65089409,24.62713618,2.650519386,26.66068833,2.678874919,30.32946207,2.60787191,33.9936099,2.635698747,38.2898315,2.63545037 +18.60955789,1.050295817,15.9578638,1.954299917,16.19703517,2.513225187,18.7484963,2.553607827,20.70323676,2.636733903,24.74956113,2.6363612,26.79322235,2.664565267,30.48023408,2.593941533,34.1625969,2.621619729,38.48017563,2.621372679 +18.70206862,1.041893619,16.03719258,1.943860702,16.27755291,2.499800381,18.8416977,2.539967311,20.80615546,2.622649355,24.87259468,2.622278643,26.92641522,2.650332054,30.63175561,2.580085567,34.33242397,2.607615916,38.67146599,2.607370185 +18.79503923,1.036328172,16.11691572,1.93347725,16.35847091,2.486447286,18.93536243,2.526399657,20.90958578,2.594715751,24.99623984,2.60827131,27.06027022,2.636174869,30.78403037,2.566303615,34.50309527,2.593686906,38.86370728,2.593442488 +18.88847201,1.030792455,16.19703517,1.923149264,16.43979116,2.473165519,19.02949277,2.512904478,20.90958578,2.608640042,25.12049965,2.5943388,27.19479062,2.622093307,30.9370621,2.552595282,34.674615,2.579832301,39.05690422,2.579589188 +18.98236925,1.025286307,16.23724413,1.912880201,16.52151567,2.459954698,19.12409105,2.492801645,21.06569612,2.580850582,25.24537718,2.580480712,27.32997974,2.608086964,31.09085458,2.538960174,34.84698738,2.566051702,39.25106158,2.565809888 +19.07673328,1.019809572,16.31796175,1.902662236,16.56253015,2.446819249,19.2191596,2.472859631,21.17041666,2.567064544,25.3708755,2.56669665,27.46584091,2.594155438,31.24541159,2.525397901,35.02021665,2.552344714,39.44618412,2.552104192 +19.1715664,1.014362091,16.35847091,1.892502569,16.60364645,2.43375394,19.31470074,2.459650445,21.22297198,2.55335716,25.43385841,2.55299123,27.60237746,2.573402611,31.40073691,2.511908072,35.13618098,2.536450721,39.64227664,2.538471708 +19.26687094,1.006247357,16.48060276,1.882389759,16.68618551,2.420753643,19.41071683,2.446511817,21.32847435,2.539717982,25.5602937,2.539354007,27.73959275,2.559656357,31.55683439,2.498490302,35.19430706,2.525159918,39.83934396,2.524912043 +19.36264927,1.000872321,16.56253015,1.872334664,16.76913488,2.407822789,19.50721023,2.433443371,21.43450119,2.526151661,25.68735751,2.52578963,27.87749016,2.539179517,31.71370784,2.485144205,35.36926291,2.511671361,40.03739093,2.51142481 +19.45890371,0.995525997,16.64486482,1.862333281,16.8524966,2.394961007,19.60418331,2.420444733,21.54105511,2.512657806,25.75112608,2.512302641,28.01607308,2.525616071,31.87136114,2.471869398,35.54508848,2.498254855,40.23642242,2.498009621 +19.55563666,0.990208231,16.68618551,1.852388958,16.93627273,2.382167929,19.70163845,2.407515529,21.64813872,2.499236031,25.87913855,2.498882763,28.15534492,2.512125078,32.02979815,2.458665501,35.7217881,2.484910016,40.43644333,2.484666092 +19.65285047,0.984918871,16.76913488,1.842494117,17.02046532,2.369443187,19.79957807,2.394655389,21.75575466,2.48588595,26.00778738,2.48553457,28.29530909,2.498706148,32.18902277,2.445532135,35.89936613,2.47163646,40.63745857,2.471393839 +19.75054755,0.979657765,16.8524966,1.832652132,17.06271843,2.356791043,19.89800455,2.381863943,21.86390557,2.472607181,26.13707574,2.472257678,28.43596904,2.485358898,32.34903892,2.432468922,36.07782692,2.458433807,40.83947308,2.458192482 +19.8487303,0.974424762,16.93627273,1.822862719,17.1475396,2.344201856,19.99692032,2.369140825,21.91818247,2.459404172,26.26700681,2.459051706,28.57732824,2.472082944,32.50985054,2.419475489,36.16738972,2.445306479,41.04249183,2.445061642 +19.94740112,0.969219711,17.02046532,1.813125598,17.23278243,2.331679916,20.09632782,2.356485669,22.02714083,2.44626686,26.39758379,2.445916277,28.71939015,2.458877906,32.67146157,2.406551463,36.34718289,2.432244472,41.24651982,2.432000943 +,,17.10507644,1.803440489,17.31844901,2.319224864,20.14621673,2.343902715,22.13664084,2.433199723,26.52880989,2.432851013,28.86215827,2.445743405,32.83387599,2.393696472,36.43741437,2.419256988,41.45156207,2.41901001 +,,17.19010818,1.793807115,17.40454145,2.306836343,20.29662778,2.331377796,22.24668519,2.420202386,26.66068833,2.419855539,29.00563611,2.432679065,32.9970978,2.380910148,36.61854987,2.406334129,41.6576236,2.40608847 +,,17.27556262,1.784225199,17.44774803,2.294518502,20.3638371,2.31685981,22.35727659,2.407274477,26.72687319,2.406934208,29.1498272,2.419684509,33.16113101,2.368192125,36.80058583,2.393480299,41.8647095,2.393235952 +,,17.31844901,1.774697951,17.53448324,2.282261953,20.39752517,2.306546499,22.41277828,2.394420325,26.85973623,2.394077173,29.29473509,2.406759366,33.37191619,2.349244405,36.9835267,2.38069513,41.96863817,2.380456762 +,,17.40454145,1.765218109,17.62164962,2.270070876,20.49892413,2.294225701,22.52419534,2.381630135,26.99325975,2.381288815,29.44036333,2.393903265,33.49164777,2.342959522,37.16737701,2.367978255,42.28197477,2.367736512 +,,17.49106187,1.755788906,17.70924931,2.257944918,20.60082716,2.281970717,22.63616628,2.368908265,27.12744703,2.368568769,29.58671551,2.381115837,33.57479041,2.330448793,37.35214126,2.355329309,42.55073562,2.348792438 +,,17.5780124,1.746410071,17.79728448,2.245883734,20.70323676,2.269781195,22.74869384,2.356254352,27.26230138,2.355916669,29.73379522,2.368396714,33.74169541,2.318000318,37.537824,2.34274793,42.70339892,2.342508763 +,,17.62164962,1.737084745,17.88575728,2.233886976,20.80615546,2.257656785,22.86178079,2.343668032,27.39782611,2.343332153,29.88160609,2.355745534,33.82545879,2.305622864,37.72442979,2.330233757,42.91568351,2.329995867 +,,17.70924931,1.727805821,17.97466989,2.221954302,20.90958578,2.24559714,22.97542992,2.331148943,27.53402455,2.330814858,30.03015175,2.343161931,33.9936099,2.293307,37.91196323,2.31778643,43.1290234,2.311356274 +,,17.79728448,1.718576461,18.0192918,2.210089706,21.01353027,2.233601913,23.089644,2.318696727,27.67090005,2.318364427,30.17943586,2.330645546,34.1625969,2.281056923,38.10042892,2.305405592,43.34342383,2.299009784 +,,17.88575728,1.709396403,18.10886823,2.198284148,21.11799148,2.221670761,23.20442587,2.306311027,27.80845598,2.305980502,30.32946207,2.318196019,34.33242397,2.268872282,38.2898315,2.293090889,43.66702453,2.280613597 +,,17.97466989,1.70026538,18.19888996,2.186541652,21.18792062,2.207835944,23.31977833,2.293991487,27.94669572,2.293662728,30.48023408,2.305812994,34.50309527,2.256752728,38.48017563,2.280841966,43.88409944,2.268431324 +,,18.0640245,1.691183133,18.2440685,2.17486615,21.22297198,2.198007943,23.43570422,2.269558388,28.08562267,2.281410751,30.63175561,2.293496114,34.674615,2.244697912,38.67146599,2.268658474,43.99304123,2.256318554 +,,18.1538233,1.6821494,18.33476233,2.163248744,21.32847435,2.186266922,23.43570422,2.281737754,28.22524024,2.26922422,30.78403037,2.281245027,34.84698738,2.232707488,38.86370728,2.256540061,44.21173681,2.244266058 +,,18.2440685,1.673163922,18.42590701,2.151693395,21.43450119,2.174588618,23.55220639,2.257435169,28.36555188,2.257102785,30.9370621,2.269059382,35.02021665,2.220781114,39.05690422,2.244486381,44.43151957,2.232277941 +,,18.2893592,1.664229709,18.51750478,2.140199771,21.54105511,2.162972695,23.72804646,2.245372299,28.50656102,2.245046099,31.09085458,2.25090727,35.19430706,2.208918446,39.25106158,2.232497088,44.65239489,2.220353861 +,,18.38027817,1.655339952,18.60955789,2.128767541,21.64813872,2.15141882,23.84600191,2.233378273,28.64827114,2.233053816,31.24541159,2.238883679,35.36926291,2.197119145,39.44618412,2.220571837,44.87436821,2.208493476 +,,18.47164911,1.646497681,18.70206862,2.117396379,21.75575466,2.139926662,23.90519935,2.221452677,28.79068571,2.221125592,31.40073691,2.226924313,35.54508848,2.185382871,39.64227664,2.208710287,45.097445,2.196696444 +,,18.56347428,1.637702643,18.79503923,2.106085958,21.86390557,2.128495892,24.02403545,2.209586422,28.93380826,2.209261084,31.55683439,2.209109276,35.7217881,2.173709289,39.83934396,2.196912098,45.32163073,2.184962429 +,,18.65575591,1.628954585,18.88847201,2.094835953,21.97259411,2.117126181,24.1434623,2.197783553,29.07764228,2.197459952,31.71370784,2.197308955,35.89936613,2.162098063,40.03739093,2.18517693,45.54693092,2.173291092 +,,18.70206862,1.620256437,18.93536243,2.083650133,22.08182296,2.105817203,24.26348284,2.18604373,29.1498272,2.18572615,31.87136114,2.185571668,36.07782692,2.15054886,40.23642242,2.173504448,45.77335111,2.1616821 +,,18.79503923,1.611601571,18.98236925,2.072524042,22.1915948,2.094568634,24.38410002,2.174366618,29.29473509,2.174050734,32.02979815,2.173897077,36.25717486,2.13906135,40.43644333,2.161894316,46.11509358,2.150130898 +,,18.88847201,1.602992936,19.07673328,2.061453314,22.30191234,2.083380151,24.50531681,2.162751881,29.44036333,2.162437684,32.18902277,2.162284848,36.43741437,2.127635202,40.63745857,2.150346202,46.34433818,2.13864562 +,,18.98236925,1.594430285,19.1715664,2.050441722,22.41277828,2.072251433,24.62713618,2.151199185,29.58671551,2.150886667,32.34903892,2.150734648,36.61854987,2.116270088,40.83947308,2.138859774,46.45938749,2.127225869 +,,19.07673328,1.585913373,19.26687094,2.03948895,22.52419534,2.055673754,24.74956113,2.139708201,29.73379522,2.139397352,32.50985054,2.139246144,36.80058583,2.104965683,41.04249183,2.127434702,46.69034362,2.115862942 +,,19.1715664,1.577441956,19.36264927,2.028594684,22.63616628,2.044693034,24.87259468,2.128278598,29.88160609,2.127969409,32.67146157,2.127819009,36.9835267,2.093721662,41.24651982,2.11607066,46.92244788,2.104560712 +,,19.26687094,1.56901579,19.45890371,2.017758612,22.74869384,2.03377097,24.99623984,2.116910047,30.03015175,2.11660251,32.83387599,2.116452914,37.16737701,2.082537704,41.45156207,2.10476732,47.15570596,2.104552448 +,,19.36264927,1.560634634,19.55563666,2.006980422,22.86178079,2.017501128,25.12049965,2.105602224,30.17943586,2.10529633,32.9970978,2.105147532,37.35214126,2.071413486,41.6576236,2.093524359,47.39012359,2.093310635 +,,19.45890371,1.552298247,19.65285047,1.996259806,22.97542992,2.006724314,25.24537718,2.094354803,30.32946207,2.094050543,33.16113101,2.09390254,37.537824,2.06034869,41.8647095,2.082341454,47.50776904,2.082132959 +,,19.50721023,1.544009422,19.75054755,1.985596456,23.089644,1.996005066,25.3708755,2.083167462,30.48023408,2.082864827,33.32597965,2.082717615,37.72442979,2.049342998,42.07282485,2.071218285,47.74393683,2.071010904 +,,19.60418331,1.535761842,19.8487303,1.974990065,23.20442587,1.985343076,25.49699768,2.07203988,30.55590092,2.071742929,33.49164777,2.071592436,37.91196323,2.038396095,42.28197477,2.060154531,48.10039164,2.059944214 +,,19.65285047,1.527561316,19.94740112,1.964440331,23.31977833,1.974738039,25.62374684,2.060971738,30.63175561,2.060680419,33.65813945,2.060526684,38.10042892,2.027507667,42.4921644,2.049149877,48.33950544,2.038003931 +,,19.79957807,1.519398613,19.99692032,1.953950786,23.43570422,1.964189651,25.75112608,2.049962719,30.78403037,2.049672956,33.82545879,2.049520042,38.2898315,2.016677401,42.59765072,2.038208007,48.33950544,2.048940683 +,,19.89800455,1.511282495,20.14621673,1.94350962,23.55220639,1.953697609,25.87913855,2.039012505,30.9370621,2.03872429,33.9936099,2.038572193,38.48017563,2.005904987,42.80940963,2.027320584,48.57980791,2.027117598 +,,19.99692032,1.503209731,20.2463664,1.933128044,23.66928772,1.943261612,26.00778738,2.028120784,31.09085458,2.027834109,34.1625969,2.027682825,38.67146599,1.995190115,43.02222121,2.016491317,48.82130495,2.021692288 +,,20.09632782,1.495180089,20.29662778,1.922805697,23.78695107,1.93288136,26.13707574,2.017287244,31.24541159,2.0170021,34.33242397,2.016851623,38.86370728,1.984532479,43.1290234,2.005723835,49.18580335,2.005515136 +,,20.2463664,1.487190419,20.34701393,1.912538469,23.90519935,1.922556556,26.20196074,2.006515511,31.40073691,2.006227951,34.50309527,2.006078278,39.05690422,1.973931772,43.34342383,1.995009931,49.43031289,1.994802347 +,,20.34701393,1.479246346,20.49892413,1.902318595,24.02403545,1.912286904,26.33221437,1.995797378,31.55683439,1.995511354,34.674615,1.995362481,39.25106158,1.963387691,43.55889007,1.984353257,49.55302309,1.984150678 +,,20.4481618,1.471344709,20.60082716,1.892157048,24.1434623,1.902072109,26.4631155,1.985136498,31.71370784,1.984852002,34.84698738,1.984703924,39.44618412,1.952899932,43.77542743,1.973753508,49.79935812,1.973552011 +,,20.60082716,1.463482405,20.65196848,1.882053474,24.26348284,1.891911877,26.52880989,1.974536442,31.87136114,1.974249588,35.02021665,1.974102301,39.64227664,1.942468196,43.99304123,1.963210378,50.04691772,1.963009958 +,,20.70323676,1.455664973,20.75463232,1.872000176,24.38410002,1.881805919,26.66068833,1.96398913,32.02979815,1.963703809,35.19430706,1.963557309,39.83934396,1.932092182,44.21173681,1.952723567,50.29570798,1.952524217 +,,20.80615546,1.447889299,20.85780651,1.862000579,24.50531681,1.871753943,26.79322235,1.953498159,32.18902277,1.953214362,35.36926291,1.953068644,40.03739093,1.921771594,44.43151957,1.942292773,50.54573501,1.942094488 +,,20.90958578,1.44015516,20.96149359,1.852054397,24.62713618,1.861755661,26.92641522,1.943063227,32.34903892,1.942780946,35.54508848,1.942636007,40.23642242,1.911506135,44.65239489,1.931917696,50.79700495,1.93172047 +,,21.01353027,1.432462335,21.06569612,1.842161343,24.74956113,1.851810787,27.06027022,1.932684035,32.50985054,1.932403262,35.7217881,1.932259097,40.43644333,1.90129551,44.87436821,1.92159804,51.049524,1.921401867 +,,21.06569612,1.424813399,21.17041666,1.832321135,24.87259468,1.841919035,27.19479062,1.922360285,32.75256811,1.922077238,35.89936613,1.921937617,40.63745857,1.891139427,45.097445,1.911333508,51.30329835,1.911138383 +,,21.22297198,1.417199741,21.27565777,1.82253349,24.99623984,1.832080121,27.32997974,1.912091682,32.91538572,1.911810146,36.07782692,1.911671271,40.83947308,1.881037595,45.2093989,1.901127538,51.55833425,1.900929723 +,,21.32847435,1.409629535,21.38142205,1.812798128,25.12049965,1.822293764,27.46584091,1.901877929,32.9970978,1.901601631,36.25717486,1.901459764,41.04249183,1.870989723,45.43414117,1.890972352,51.81463797,1.890775594 +,,21.43450119,1.402099767,21.4877121,1.803114768,25.24537718,1.812559682,27.60237746,1.891718735,33.16113101,1.891443913,36.43741437,1.891302804,41.24651982,1.860995524,45.66000067,1.880871412,52.07221581,1.880675705 +,,21.54105511,1.39461022,21.59453054,1.793483134,25.3708755,1.802877596,27.73959275,1.881613808,33.32597965,1.881340454,36.61854987,1.881200099,41.45156207,1.85105471,45.88698294,1.870824428,52.46098541,1.870626094 +,,21.64813872,1.38716068,21.64813872,1.783906451,25.49699768,1.793247228,27.87749016,1.871562859,33.49164777,1.871290965,36.80058583,1.8661508,41.6576236,1.841166996,46.11509358,1.860831112,52.85265756,1.860630183 +,,21.75575466,1.379750933,21.75575466,1.774377421,25.62374684,1.783668303,28.01607308,1.861565598,33.65813945,1.861295156,36.9835267,1.856182448,41.8647095,1.8313321,46.34433818,1.850891176,53.11539554,1.850691321 +,,21.80976307,1.372383461,21.86390557,1.764899292,25.75112608,1.774140545,28.15534492,1.851621739,33.82545879,1.851352742,37.16737701,1.846267344,42.07282485,1.821549738,46.5747224,1.841004336,53.37943963,1.840805549 +,,21.91818247,1.365052649,21.97259411,1.755471792,25.87913855,1.759947705,28.29530909,1.841730996,33.9936099,1.841463436,37.35214126,1.836405203,42.17727017,1.811823188,46.92244788,1.831166713,53.64479632,1.830972583 +,,22.02714083,1.357760996,22.08182296,1.746094651,26.00778738,1.750546655,28.43596904,1.831893087,34.1625969,1.831626956,37.537824,1.821714256,42.4921644,1.802141498,47.15570596,1.821385235,53.91147213,1.821192142 +,,22.08182296,1.350510943,22.1915948,1.736767599,26.13707574,1.741195822,28.57732824,1.822107729,34.33242397,1.82184302,37.72442979,1.81198327,42.59765072,1.792518582,47.39012359,1.811656006,54.17947363,1.82118499 +,,22.1915948,1.343296967,22.24668519,1.72749376,26.26700681,1.731894938,28.71939015,1.81237464,34.50309527,1.812111345,37.91196323,1.811976154,42.80940963,1.782943549,47.62570655,1.801978747,54.4488074,1.811456831 +,,22.24668519,1.336124148,22.35727659,1.718266068,26.39758379,1.722643736,28.86215827,1.797875934,34.674615,1.802431654,38.10042892,1.802297186,42.91568351,1.773423144,47.86246062,1.792353181,54.71948007,1.801780636 +,,22.35727659,1.328987021,22.46841775,1.709087667,26.52880989,1.708862863,29.00563611,1.788272284,34.84698738,1.792803669,38.2898315,1.792669919,43.1290234,1.763950112,48.10039164,1.782779032,54.99149829,1.792156129 +,,22.46841775,1.321888019,22.58011141,1.699958294,26.66068833,1.69973469,29.1498272,1.773966392,35.02021665,1.783227113,38.48017563,1.778328847,43.45102339,1.754524238,48.33950544,1.773256024,55.26486875,1.782583032 +,,22.58011141,1.314826936,22.69236031,1.690877687,26.79322235,1.690655278,29.29473509,1.764490459,35.19430706,1.773701712,38.67146599,1.764102501,43.77542743,1.745148732,48.57980791,1.763783885,55.40206317,1.773064552 +,,22.63616628,1.307806139,22.80516722,1.681845586,26.92641522,1.681624364,29.5134487,1.755061697,35.36926291,1.764227192,38.86370728,1.754679257,43.88409944,1.735830141,48.82130495,1.754362343,55.6774746,1.763593436 +,,22.74869384,1.300820278,22.86178079,1.672865015,27.06027022,1.672641691,29.73379522,1.736365282,35.54508848,1.754803283,39.05690422,1.745306349,44.10225346,1.726557918,49.06400251,1.744991128,55.81569331,1.754176356 +,,22.80516722,1.293874272,22.97542992,1.663929131,27.19479062,1.663707,29.73379522,1.745683319,35.7217881,1.745429712,39.25106158,1.735983508,44.21173681,1.717338597,49.30790656,1.735669971,56.09316096,1.744806134 +,,22.91853491,1.28696283,23.14696379,1.655037731,27.32997974,1.654820036,29.88160609,1.727090201,35.89936613,1.736106212,39.44618412,1.726710467,44.54182032,1.708161796,49.55302309,1.726398604,56.37200794,1.735485965 +,,23.03246616,1.280088306,23.26203059,1.646197074,27.46584091,1.645980542,30.03015175,1.717864665,36.07782692,1.726832515,39.64227664,1.717486958,44.87436821,1.699034033,49.79935812,1.717176762,56.65224111,1.726215581 +,,23.14696379,1.273250504,23.31977833,1.637406857,27.60237746,1.637188266,30.17943586,1.708688408,36.25717486,1.717608355,39.83934396,1.708312719,45.097445,1.689958363,50.17115864,1.708000826,56.93386735,1.707829813 +,,23.20442587,1.266451713,23.43570422,1.628660378,27.73959275,1.628442956,30.32946207,1.699561167,36.43741437,1.708433467,40.03739093,1.699187486,45.32163073,1.680931172,50.54573501,1.698873923,56.93386735,1.716994716 +,,23.31977833,1.259686753,23.55220639,1.619960621,27.87749016,1.615415673,30.48023408,1.690482682,36.61854987,1.699307589,40.23642242,1.690110996,45.54693092,1.671952202,50.79700495,1.689799109,57.2168936,1.698707159 +,,23.43570422,1.252957929,23.61067448,1.611310498,28.01607308,1.606786664,30.63175561,1.68145269,36.80058583,1.690230458,40.43644333,1.68108299,45.77335111,1.663021194,51.049524,1.680772769,57.50132681,1.689633235 +,,23.49388309,1.246267495,23.72804646,1.602703418,28.22524024,1.593929499,30.78403037,1.672470934,36.9835267,1.681201813,40.63745857,1.672103209,46.00089687,1.654137893,51.30329835,1.671794644,57.78717398,1.680607781 +,,23.61067448,1.239610352,23.84600191,1.594142314,28.36555188,1.585415263,30.9370621,1.663537155,37.16737701,1.672221397,40.83947308,1.663171394,46.22957378,1.645302043,51.55833425,1.662864478,58.07444214,1.671630538 +,,23.72804646,1.232988769,23.96454374,1.58562694,28.43596904,1.576949602,31.09085458,1.654651098,37.35214126,1.663288951,41.04249183,1.65428729,46.45938749,1.636513391,51.81463797,1.653982014,58.36313834,1.662701248 +,,23.84600191,1.226402557,24.08367485,1.577157053,28.57732824,1.568526066,31.24541159,1.645812507,37.537824,1.65440422,41.24651982,1.645450643,46.69034362,1.627771686,52.07221581,1.645146997,58.6532697,1.653819656 +,,23.96454374,1.219851526,24.20339818,1.568732409,28.71939015,1.560147526,31.40073691,1.637021128,37.72442979,1.645566947,41.45156207,1.641046814,46.92244788,1.619076675,52.3310741,1.636359173,58.94484334,1.644985506 +,,24.08367485,1.213335488,24.32371667,1.560352767,28.86215827,1.551813741,31.55683439,1.628276711,37.91196323,1.636776881,41.6576236,1.632280892,47.15570596,1.610428111,52.59121922,1.627618292,59.23786643,1.636198545 +,,24.1434623,1.206856626,24.44463328,1.552017886,29.00563611,1.547660519,31.71370784,1.619579003,38.10042892,1.628033768,41.8647095,1.623561795,47.39012359,1.601825744,52.85265756,1.618924101,59.53234618,1.627458521 +,,24.32371667,1.200407646,24.56615098,1.543727527,29.1498272,1.535279483,31.87136114,1.610927755,38.2898315,1.619337357,42.07282485,1.610573561,47.62570655,1.593269328,53.11539554,1.610276351,59.68013457,1.618768362 +,,24.44463328,1.193995471,24.68827277,1.535481452,29.29473509,1.527078535,32.02979815,1.602322719,38.48017563,1.6106874,42.28197477,1.601970417,47.86246062,1.584758618,53.37943963,1.601674795,59.9768129,1.610121444 +,,24.56615098,1.187617548,24.81100164,1.527279425,29.44036333,1.518921394,32.18902277,1.593763649,38.67146599,1.602083649,42.4921644,1.593413229,48.10039164,1.576293369,53.64479632,1.593119185,60.27496606,1.601520716 +,,24.62713618,1.181276013,24.99623984,1.519118229,29.58671551,1.510807825,32.34903892,1.585250298,38.86370728,1.593525855,42.70339892,1.58490175,48.33950544,1.567873339,53.91147213,1.584609277,60.57460138,1.592965929 +,,24.74956113,1.174966032,25.12049965,1.511003608,29.73379522,1.502737596,32.50985054,1.576782422,39.05690422,1.585013775,42.91568351,1.576435736,48.57980791,1.559498285,54.17947363,1.576144826,61.02684954,1.584453729 +,,24.87259468,1.168689758,25.24537718,1.502932334,29.88160609,1.49871572,32.67146157,1.56835978,39.25106158,1.576547163,43.1290234,1.568014945,48.82130495,1.551167968,54.4488074,1.567725589,61.33022257,1.575990108 +,,24.99623984,1.162447009,25.3708755,1.494904174,30.03015175,1.486726234,32.83387599,1.559982128,39.44618412,1.568125777,43.34342383,1.559639135,49.06400251,1.542882149,54.71948007,1.559351325,61.63510372,1.567571698 +,,25.12049965,1.156237607,25.5602937,1.486915978,30.17943586,1.478784641,32.9970978,1.551649227,39.64227664,1.559749375,43.55889007,1.551308066,49.30790656,1.534640591,54.99149829,1.551021793,61.94150048,1.559198256 +,,25.18286101,1.150063632,25.68735751,1.478973371,30.32946207,1.47088547,33.16113101,1.543360837,39.83934396,1.551417717,43.77542743,1.543021499,49.55302309,1.526443055,55.26486875,1.542736755,62.24942037,1.550869542 +,,25.30804855,1.143920378,25.81505297,1.471073192,30.48023408,1.463028493,33.32597965,1.535116721,39.93824469,1.543133593,43.99304123,1.534779196,49.79935812,1.518289309,55.53959817,1.534495973,62.55887098,1.542585317 +,,25.43385841,1.137809939,26.00778738,1.463212339,30.63175561,1.455213486,33.49164777,1.526916642,40.13678331,1.534890691,44.21173681,1.52658092,50.04691772,1.510179116,55.81569331,1.52629921,62.86985991,1.534345343 +,,25.62374684,1.131729918,26.07235142,1.455399207,30.78403037,1.447440223,33.65813945,1.518760366,40.33630889,1.52669182,44.43151957,1.518426437,50.29570798,1.502112246,56.09316096,1.518146231,63.18239482,1.526149385 +,,25.75112608,1.125684596,26.26700681,1.447622111,30.9370621,1.439708483,33.74169541,1.510650623,40.53682635,1.518536744,44.65239489,1.510315512,50.54573501,1.494088466,56.37200794,1.510036803,63.49648337,1.517997207 +,,25.81505297,1.119673765,26.39758379,1.439889399,31.09085458,1.435855295,33.90943011,1.502581234,40.7383406,1.510425231,44.87436821,1.502247913,50.67121423,1.486110465,56.65224111,1.501970693,63.81213331,1.509888575 +,,25.94338322,1.113692843,26.52880989,1.432197993,31.24541159,1.424368683,34.1625969,1.494552015,40.94085662,1.502357046,45.097445,1.494223409,50.92310795,1.478172161,56.93386735,1.49394767,64.12935238,1.501823257 +,,26.13707574,1.107741695,26.66068833,1.424547672,31.40073691,1.416760184,34.33242397,1.48656862,41.14437936,1.494331958,45.32163073,1.486241768,51.049524,1.470279148,57.2168936,1.485967502,64.4481484,1.493801021 +,,26.26700681,1.10182451,26.79322235,1.416938216,31.55683439,1.409192326,34.50309527,1.478627869,41.34891385,1.486349738,45.54693092,1.478302763,51.30329835,1.46242541,57.50132681,1.478029962,64.76852919,1.485821637 +,,26.39758379,1.095938933,26.92641522,1.409369407,31.71370784,1.401664893,34.58874882,1.470732422,41.55446511,1.478410156,45.77335111,1.470406166,51.68632724,1.454610768,57.78717398,1.470134822,65.09050264,1.477884876 +,,26.52880989,1.090084795,27.06027022,1.401841028,31.87136114,1.394177669,34.84698738,1.462873391,41.76103819,1.470512985,46.00089687,1.462551749,52.07221581,1.446837884,58.07444214,1.462281855,65.41407667,1.469990511 +,,26.66068833,1.084261928,27.19479062,1.394352864,32.02979815,1.38673044,35.02021665,1.455059212,41.96863817,1.462657998,46.22957378,1.454739289,52.2014845,1.439112187,58.36313834,1.454470836,65.73925923,1.462138315 +,,26.79322235,1.078470164,27.32997974,1.386904699,32.18902277,1.379322991,35.19430706,1.447286774,42.17727017,1.45484497,46.45938749,1.446968559,52.59121922,1.431422122,58.6532697,1.446701541,66.06605832,1.454328062 +,,26.92641522,1.072709338,27.46584091,1.379496319,32.34903892,1.37195511,35.36926291,1.439555853,42.3869393,1.447073676,46.69034362,1.439239339,52.92550969,1.419969426,58.94484334,1.438973746,66.39448197,1.446559529 +,,27.12744703,1.06697719,27.60237746,1.372127512,32.50985054,1.364626586,35.54508848,1.431866229,42.59765072,1.439343894,46.92244788,1.431551405,53.11539554,1.416170612,59.23786643,1.431287231,66.72453827,1.442688006 +,,27.26230138,1.061277756,27.80845598,1.364795388,32.67146157,1.357337209,35.63332876,1.424220476,42.70339892,1.431658212,47.15570596,1.423904537,53.37943963,1.408605904,59.53234618,1.423641775,67.05623531,1.43498165 +,,27.39782611,1.055608766,27.94669572,1.357505109,32.83387599,1.350086769,35.81046704,1.416612768,42.91568351,1.424010774,47.39012359,1.416298517,53.64479632,1.401081603,59.82828984,1.416037158,67.55687516,1.423499233 +,,27.53402455,1.049970058,28.08562267,1.350253772,32.9970978,1.342875058,35.9884859,1.409045697,43.1290234,1.416404186,47.62570655,1.408733125,53.91147213,1.393597495,60.12570467,1.408473163,67.89270987,1.415895377 +,,27.67090005,1.04436147,28.22524024,1.343041169,33.16113101,1.33570187,36.25717486,1.401516296,43.34342383,1.40883823,47.86246062,1.401208146,54.17947363,1.386153365,60.42459799,1.400949571,68.06125277,1.408334904 +,,27.73959275,1.038784881,28.29530909,1.335869716,33.32597965,1.328566999,36.43741437,1.394029866,43.55889007,1.401312689,48.10039164,1.393723362,54.4488074,1.378748999,60.72497715,1.393466169,68.39959481,1.400812051 +,,27.94669572,1.033234012,28.43596904,1.328733948,33.49164777,1.321470239,36.61854987,1.386583426,43.77542743,1.393827347,48.33950544,1.386278559,54.71948007,1.371384184,61.02684954,1.38602274,68.7396188,1.400806551 +,,28.08562267,1.027714823,28.57732824,1.321636297,33.65813945,1.314411389,36.70945501,1.379179471,43.99304123,1.386381989,48.57980791,1.378873524,54.99149829,1.36405871,61.33022257,1.378619071,69.0813331,1.393323912 +,,28.22524024,1.022225115,28.71939015,1.31457656,33.82545879,1.307390244,36.80058583,1.37181505,44.21173681,1.378976401,48.82130495,1.371508044,55.26486875,1.356772366,61.63510372,1.371254951,69.25282673,1.385883964 +,,28.36555188,1.016764731,28.86215827,1.307554533,33.9936099,1.300406604,36.9835267,1.364487274,44.43151957,1.371610372,49.06400251,1.364181908,55.40206317,1.349527592,61.94150048,1.363930167,69.4247461,1.378483743 +,,28.50656102,1.011333515,29.00563611,1.300570015,34.1625969,1.29000356,37.16737701,1.357198641,44.65239489,1.364283689,49.30790656,1.356894906,55.6774746,1.342318869,62.24942037,1.356644509,69.76986626,1.371120345 +,,28.57732824,1.005933285,29.07764228,1.293625346,34.3797478,1.283111394,37.35214126,1.349948941,44.98576833,1.356993479,49.55302309,1.349646829,55.81569331,1.335151273,62.55887098,1.349397769,70.11670207,1.363796281 +,,28.71939015,1.000559927,29.22219132,1.286715233,34.50309527,1.279678713,37.537824,1.342737966,45.32163073,1.349742225,49.79935812,1.342437468,56.09316096,1.328019343,62.86985991,1.342189739,70.56239139,1.360144778 +,,28.86215827,0.995215272,29.36745894,1.279842032,34.674615,1.272843099,37.72442979,1.335565511,45.54693092,1.342532355,50.04691772,1.335266617,56.37200794,1.320925509,63.18239482,1.335020212,70.81555475,1.356506012 +,,29.00563611,0.989899166,29.5134487,1.273005545,34.84698738,1.266043998,37.91196323,1.328431368,45.77335111,1.335360997,50.29570798,1.328134071,56.65224111,1.313869568,63.49648337,1.327888982,70.99135357,1.349262661 +,,29.1498272,0.984611456,29.6601642,1.266205577,35.02021665,1.255915849,38.10042892,1.321335333,46.00089687,1.328227947,50.54573501,1.321039624,56.93386735,1.306851317,63.81213331,1.320795844,71.34426156,1.342055352 +,,29.29473509,0.979351992,29.80760904,1.259441931,35.24281892,1.249205805,38.2898315,1.314277203,46.22957378,1.321132999,50.79700495,1.313983074,57.2168936,1.299870556,64.12935238,1.313740596,71.6989239,1.334886543 +,,29.36745894,0.974122535,29.88160609,1.252716874,35.36926291,1.245863831,38.48017563,1.307256775,46.45938749,1.314075949,51.049524,1.306964217,57.50132681,1.292927083,64.4481484,1.306723034,72.23422592,1.32775342 +,,29.5134487,0.968919099,30.03015175,1.246025281,35.54508848,1.239208844,38.67146599,1.300273848,46.69034362,1.307056596,51.30329835,1.299982852,57.78717398,1.286020701,64.76852919,1.299742958,72.5933124,1.317131605 +,,,,30.17943586,1.239369432,35.7217881,1.232589406,38.86370728,1.293328221,46.80625188,1.300077291,51.55833425,1.289583198,58.07444214,1.279151209,65.09050264,1.292800167,72.95418395,1.31009593 +,,,,30.32946207,1.232749136,35.89936613,1.226005327,38.960186,1.286422221,47.03893233,1.293132714,51.88605929,1.282693278,58.36313834,1.272318413,65.41407667,1.285894462,73.41790943,1.303096416 +,,,,30.40475462,1.226166611,36.07782692,1.219456418,39.05690422,1.279553097,47.15570596,1.286227758,52.07221581,1.279261716,58.6532697,1.265522114,65.73925923,1.279025645,73.68131779,1.299610269 +,,,,30.55590092,1.21961684,36.25717486,1.212942491,39.25106158,1.276128544,47.50776904,1.279354649,52.3310741,1.272428329,58.94484334,1.25876212,66.06605832,1.272193519,73.86423084,1.292670725 +,,,,30.7077986,1.213102056,36.43741437,1.206463359,39.50055676,1.269310509,47.74393683,1.272520766,52.59121922,1.265631444,59.23786643,1.252038235,66.39448197,1.265397888,74.04759797,1.285768236 +,,,,30.86045138,1.206622072,36.61854987,1.200018836,39.64227664,1.265914749,47.98127865,1.265723387,52.85265756,1.255506595,59.53234618,1.245350267,66.72453827,1.258638557,74.41569898,1.285763187 +,,,,31.01386301,1.200176702,36.80058583,1.193608738,39.83934396,1.252431604,48.21980032,1.258962317,53.18860983,1.248798738,59.82828984,1.238698023,67.05623531,1.251915332,74.78562987,1.278895072 +,,,,31.09085458,1.193768104,36.9835267,1.187232881,39.83934396,1.259152657,48.57980791,1.252234904,53.37943963,1.245457853,60.12570467,1.232081314,67.38958128,1.24522802,75.15739973,1.272063643 +,,,,31.16803728,1.187393726,37.16737701,1.180891081,40.03739093,1.245741535,48.82130495,1.245545885,53.64479632,1.238805035,60.42459799,1.225499949,67.72458435,1.23857643,75.53101772,1.261887338 +,,,,31.32297797,1.181051067,37.35214126,1.174583157,40.23642242,1.239087201,48.9425033,1.238895029,53.91147213,1.232187754,60.72497715,1.218953739,68.06125277,1.23196037,76.01112257,1.25514539 +,,,,31.47868889,1.174742289,37.537824,1.168308928,40.43644333,1.23577095,49.18580335,1.232277268,54.17947363,1.22560582,61.02684954,1.212442497,68.39959481,1.225379651,76.28383485,1.251787526 +,,,,31.63517388,1.16846721,37.72442979,1.162068213,40.69347326,1.229168535,49.43031289,1.225694856,54.4488074,1.219059045,61.33022257,1.205966036,68.7396188,1.218834084,76.66305251,1.245100897 +,,,,31.79243677,1.16222565,37.91196323,1.155860835,40.83947308,1.225880167,49.79935812,1.219145211,54.71948007,1.212547241,61.63510372,1.19952417,69.0813331,1.212323481,76.85336768,1.238452417 +,,,,31.87136114,1.1560197,38.03750315,1.148663044,41.04249183,1.219331926,49.92298447,1.212635327,54.99149829,1.20607022,61.94150048,1.193116714,69.4247461,1.205847656,77.0441553,1.231839438 +,,,,32.02979815,1.14984463,38.10042892,1.143549864,41.24651982,1.212818664,50.17115864,1.206157836,55.26486875,1.199627797,62.24942037,1.186743485,69.76986626,1.199406422,77.42715262,1.231834601 +,,,,32.18902277,1.143702546,38.2898315,1.137441404,41.45156207,1.206340193,50.42056651,1.199714946,55.53959817,1.196417154,62.55887098,1.180404299,70.11670207,1.192999595,77.81205387,1.225254554 +,,,,32.34903892,1.137593271,38.48017563,1.131365574,41.6576236,1.199896329,50.67121423,1.193306471,55.81569331,1.186846008,62.86985991,1.174098975,70.46526204,1.186626992,78.19886851,1.218709655 +,,,,32.59055588,1.131514407,38.67146599,1.125322198,41.8647095,1.193486885,50.92310795,1.186932228,56.09316096,1.180506275,63.18239482,1.167827332,70.81555475,1.180288428,78.58760607,1.212199717 +,,,,32.75256811,1.125470237,38.86370728,1.113336492,42.07282485,1.187111678,51.17625387,1.180592034,56.37200794,1.174200406,63.49648337,1.164701798,71.16758882,1.173983723,78.97827609,1.205724553 +,,,,32.91538572,1.119458353,38.86370728,1.119311105,42.28197477,1.180770526,51.43065821,1.174285708,56.73033059,1.171056538,63.81213331,1.155384371,71.52137289,1.167712696,79.37088819,1.199283977 +,,,,32.9970978,1.113480768,39.05690422,1.107389422,42.4921644,1.174463246,51.68632724,1.168013067,56.93386735,1.167923636,64.12935238,1.149212695,71.87691568,1.161475167,79.76545202,1.192877804 +,,,,33.24345314,1.107530752,39.25106158,1.101474119,42.70339892,1.168189657,51.94326723,1.161773933,57.2168936,1.161684979,64.4481484,1.143073986,72.23422592,1.155270956,80.16197728,1.186505851 +,,,,33.40871102,1.101614695,39.44618412,1.095590414,42.91568351,1.16194958,52.2014845,1.155568126,57.50132681,1.155479648,64.76852919,1.136968068,72.5933124,1.149099886,80.56047373,1.180167935 +,,,,33.57479041,1.095730238,39.64227664,1.089738137,43.1290234,1.155742835,52.46098541,1.149395469,57.86682785,1.146234746,65.09050264,1.130894766,72.95418395,1.14296178,80.96095115,1.173863873 +,,,,33.74169541,1.089877215,39.83934396,1.083917122,43.34342383,1.149569244,52.72177634,1.143255784,58.07444214,1.143168248,65.41407667,1.124853906,73.31684944,1.136856461,81.36341941,1.167593486 +,,,,33.90943011,1.084055457,40.03739093,1.0781272,43.55889007,1.143428631,52.98386369,1.137148895,58.36313834,1.137061827,65.73925923,1.118845314,73.68131779,1.130783756,81.76788839,1.161356594 +,,,,34.07799865,1.078264796,40.23642242,1.072368206,43.77542743,1.137320819,53.24725392,1.131074627,58.6532697,1.130988024,66.06605832,1.112868817,74.04759797,1.124743488,82.17436805,1.155153016 +,,,,34.24740517,1.072505067,40.43644333,1.069498156,43.99304123,1.131245633,53.37943963,1.125035015,58.94484334,1.124946665,66.39448197,1.106924245,74.41569898,1.118735486,82.58286837,1.148982576 +,,,,34.41765383,1.066776105,40.69347326,1.063784095,44.21173681,1.125202898,53.64479632,1.119025455,59.23786643,1.115947272,66.89018119,1.101009266,74.78562987,1.112759576,82.9933994,1.142845097 +,,,,34.58874882,1.061077745,40.83947308,1.060938176,44.43151957,1.119192441,53.91147213,1.113047997,59.53234618,1.107019873,67.22270167,1.095128044,75.15739973,1.106815587,83.19942959,1.136742633 +,,,,34.76069435,1.0497763,41.04249183,1.055271,44.65239489,1.113214091,54.17947363,1.107102467,59.82828984,1.101106544,67.55687516,1.089278237,75.53101772,1.10090335,83.82059404,1.130668316 +,,,,34.76069435,1.055409823,41.24651982,1.049634096,44.87436821,1.107267675,54.4488074,1.101188697,60.12570467,1.101102221,67.89270987,1.083459678,75.90649302,1.095022693,84.23727798,1.124628665 +,,,,34.93349464,1.044168747,41.45156207,1.044027303,45.097445,1.101353022,54.71948007,1.095306517,60.42459799,1.095220502,68.23021407,1.0776722,76.28383485,1.08917345,84.65603332,1.118621276 +,,,,35.10715395,1.038591148,41.6576236,1.041233103,45.32163073,1.095469964,54.99149829,1.089455757,60.57460138,1.08937234,68.7396188,1.071913532,76.66305251,1.08335545,85.07687035,1.112645976 +,,,,35.36926291,1.033041314,41.8647095,1.035671185,45.54693092,1.089618331,55.26486875,1.08363625,61.02684954,1.083551151,69.0813331,1.066187729,77.0441553,1.077568529,85.49979942,1.106702595 +,,,,35.54508848,1.027523154,42.07282485,1.030138977,45.77335111,1.083797955,55.53959817,1.077847828,61.33022257,1.074882916,69.4247461,1.060492512,77.42715262,1.071812519,85.92483093,1.100790961 +,,,,35.7217881,1.02203447,42.28197477,1.02463632,46.00089687,1.07800867,55.81569331,1.072090327,61.63510372,1.069141252,69.76986626,1.054827717,77.81205387,1.066087256,86.35197532,1.094910904 +,,,,35.89936613,1.016575105,42.4921644,1.019163057,46.22957378,1.072250309,56.09316096,1.06636358,61.94150048,1.060588293,70.11670207,1.049193181,78.19886851,1.060392576,86.78124312,1.089062258 +,,,,35.9884859,1.011146887,42.70339892,1.01371903,46.45938749,1.066522708,56.37200794,1.060667423,62.24942037,1.054922986,70.46526204,1.043588743,78.58760607,1.054728314,87.21264486,1.083244852 +,,,,36.25717486,1.005743705,42.91568351,1.008304083,46.69034362,1.060825701,56.65224111,1.055001694,62.55887098,1.052099626,70.81555475,1.038014242,78.97827609,1.049094309,87.64619117,1.077458522 +,,,,36.34718289,1.000373323,43.1290234,1.00291806,46.92244788,1.055159126,56.93386735,1.049366228,62.86985991,1.046479662,71.16758882,1.032469518,79.37088819,1.0434904,88.08189269,1.0717031 +,,,,36.61854987,0.995027711,43.34342383,0.997560809,47.15570596,1.04952282,57.2168936,1.043760866,63.18239482,1.038107993,71.52137289,1.026954412,79.76545202,1.037916424,88.51976015,1.065978421 +,,,,36.80058583,0.989712607,43.55889007,0.989580482,47.39012359,1.043916621,57.50132681,1.038185446,63.49648337,1.032562768,71.87691568,1.021468766,80.16197728,1.032372222,88.9598043,1.060284322 +,,,,36.9835267,0.984425894,43.77542743,0.984294475,47.62570655,1.038340369,57.78717398,1.032639807,63.81213331,1.027047164,72.23422592,1.016012423,80.56047373,1.026857636,89.40203598,1.054620639 +,,,,37.16737701,0.979167421,43.99304123,0.979036704,47.86246062,1.032793903,58.07444214,1.027123792,64.12935238,1.021561023,72.5933124,1.010585225,80.96095115,1.021372507,89.84646606,1.048987209 +,,,,37.35214126,0.973937037,44.21173681,0.973807018,48.10039164,1.027277064,58.36313834,1.021637241,64.4481484,1.018826951,72.95418395,1.005187018,81.36341941,1.015916678,90.29310546,1.043383871 +,,,,37.44486753,0.968736494,44.43151957,0.968605268,48.33950544,1.021789694,58.79887579,1.016178002,64.76852919,1.013384719,73.31684944,0.999817646,81.76788839,1.010489992,90.74196516,1.037810465 +,,,,37.63101123,0.963561829,44.65239489,0.963431304,48.57980791,1.016331637,59.09117325,1.01074992,65.09050264,1.007971558,73.68131779,0.994476955,82.17436805,1.005092293,91.19305621,1.032266829 +,,,,,,,,48.82130495,1.010902734,59.38492377,1.005350833,65.41407667,0.999907947,74.04759797,0.989164793,82.58286837,0.999723427,91.6463897,1.026752806 +,,,,,,,,49.06400251,1.005502831,59.68013457,0.999980586,65.73925923,0.994566774,74.41569898,0.983881007,82.9933994,0.99438324,92.10197677,1.021268237 +,,,,,,,,49.30790656,1.000131772,59.9768129,0.994639026,66.06605832,0.989254132,74.78562987,0.978625444,83.40597125,0.989071578,92.55982863,1.015812965 +,,,,,,,,49.55302309,0.994789403,60.42459799,0.989324055,66.39448197,0.983969868,75.15739973,0.973397955,83.82059404,0.98378829,93.01995653,1.010386833 +,,,,,,,,49.79935812,0.989475572,60.72497715,0.984039418,66.72453827,0.978713831,75.53101772,0.96819839,84.23727798,0.978533223,93.4823718,1.004989685 +,,,,,,,,50.04691772,0.984190125,60.87572622,0.978784931,67.05623531,0.97348587,,,84.65603332,0.973306227,93.9470858,0.999621367 +,,,,,,,,50.29570798,0.978932912,61.02684954,0.973558502,67.38958128,0.968285835,,,85.07687035,0.968107151,94.41410995,0.994281725 +,,,,,,,,50.54573501,0.973703781,61.38093117,0.96641588,67.72458435,0.963113577,,,85.49979942,0.962935848,94.88345575,0.988970606 +,,,,,,,,50.79700495,0.968502582,,,67.89270987,0.957970828,,,,,95.35513473,0.983687857 +,,,,,,,,51.049524,0.963329166,,,,,,,,,95.82915849,0.978433326 +,,,,,,,,,,,,,,,,,,96.3055387,0.973206863 +,,,,,,,,,,,,,,,,,,96.78428705,0.968008319 +,,,,,,,,,,,,,,,,,,97.26541533,0.962837543 \ No newline at end of file diff --git a/Assignments/A2/A2Soln/src/input b/Assignments/A2/A2Soln/src/input new file mode 100644 index 0000000000000000000000000000000000000000..aba70b22dec37d1badb9edd77f1611aa70a0be43 --- /dev/null +++ b/Assignments/A2/A2Soln/src/input @@ -0,0 +1,7 @@ +1,2,3 +1,2,2 +1,1,1,5,1,10 +2,2,1.5,7,2,40 +3,3,2,20,3,100 +,,2.5,40,, +,,3,78,, \ No newline at end of file diff --git a/Assignments/A2/A2Soln/src/test_All.py b/Assignments/A2/A2Soln/src/test_All.py new file mode 100644 index 0000000000000000000000000000000000000000..e4d87189ad3f1db51560ee775837f7efbea825c9 --- /dev/null +++ b/Assignments/A2/A2Soln/src/test_All.py @@ -0,0 +1,228 @@ +from CurveADT import * +import Data +import Load +import Plot +import Exceptions +import SeqServices + +from pytest import * + +class TestCurveADT: + def test_minD(self): + curve = CurveT([0, 50, 99], [1, 2, 3], 1) + assert curve.minD() == 0 + + def test_maxD(self): + curve = CurveT([0, 50, 99], [1, 2, 3], 1) + assert curve.maxD() == 99 + + def test_order(self): + curve = CurveT([0, 50, 99], [1, 2, 3], 1) + assert curve.order() == 1 + + def test_raises_indepVarNotAscending(self): + with raises(Exceptions.IndepVarNotAscending): + CurveT([ 0, -1 ], [ 0, 0 ], 1) + + def test_raises_SeqSizeMismatch(self): + with raises(Exceptions.SeqSizeMismatch): + CurveT([ 0 ], [ 0, 0 ], 1) + + def test_raises_OutOfDomain_eval_below(self): + curve = CurveT([ 0, 1, 2 ], [ 0, 0, 0 ], 1) + with raises(Exceptions.OutOfDomain): + curve.eval(-1) + + def test_raises_OutOfDomain_eval_above(self): + curve = CurveT([ 0, 1, 2 ], [ 0, 0, 0 ], 1) + with raises(Exceptions.OutOfDomain): + curve.eval(3) + + def test_raises_OutOfDomain_dfdx_below(self): + curve = CurveT([ 0, 1, 2 ], [ 0, 0, 0 ], 1) + with raises(Exceptions.OutOfDomain): + curve.dfdx(-1) + + def test_raises_OutOfDomain_dfdx_above(self): + curve = CurveT([ 0, 1, 2 ], [ 0, 0, 0 ], 1) + with raises(Exceptions.OutOfDomain): + curve.dfdx(3) + + def test_raises_OutOfDomain_d2fdx2_below(self): + curve = CurveT([ 0, 1, 2 ], [ 0, 0, 0 ], 1) + with raises(Exceptions.OutOfDomain): + curve.d2fdx2(-1) + + def test_raises_OutOfDomain_d2fdx2_above(self): + curve = CurveT([ 0, 1, 2 ], [ 0, 0, 0 ], 1) + with raises(Exceptions.OutOfDomain): + curve.d2fdx2(3) + + def test_eval_linear(self): + curve = CurveT([0, 1, 3], [0, 1, 3], 1) + assert curve.eval(2) == approx(2, 0.1) + + def test_eval_quadratic(self): + curve = CurveT([0, 1, 2], [1, 0, 1], 2) + assert curve.eval(0.5) == approx(1.25, 0.1) + + def test_dfdx(self): + curve = CurveT([0, 1], [0, 1000], 1) + assert curve.dfdx(0) == approx(1, 0.0001) + + def test_dfdx_2(self): + curve = CurveT([0, 1], [0, 1], 1) + assert curve.dfdx(0) == approx(0.001, 0.0001) + + def test_d2fdx2(self): + curve = CurveT([0, 1], [0, 1], 1) + assert curve.d2fdx2(0) == approx(0, 0.0001) + + def test_d2fdx2_2(self): + curve = CurveT([0, 1], [0, 1000], 1) + assert curve.d2fdx2(0) == approx(0, 0.0001) + +class TestData: + def test_constructor_S(self): + Data.Data.init() + assert Data.Data.S == [] + + def test_constructor_Z(self): + Data.Data.init() + assert Data.Data.Z == [] + + def test_constructor_MAX(self): + Data.Data.init() + assert Data.Data.MAX_SIZE == 10 + + def test_add(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2], [0,1,2], 1) + test_curve_b = CurveT([0,1,2], [0,1,2], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + assert Data.Data.S[0] == test_curve_a + assert Data.Data.S[1] == test_curve_b + + def test_add_full_exception(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2], [0,1,2], 1) + with raises(Full): + for x in range(11): + Data.Data.add(test_curve_a, x) + + def test_getC(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2], [0,1,2], 1) + test_curve_b = CurveT([0,1,2], [0,1,2], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + assert Data.Data.getC(0) == test_curve_a + assert Data.Data.getC(1) == test_curve_b + + def test_getC_empty(self): + Data.Data.init() + with raises(InvalidIndex): + Data.Data.getC(0) + + def test_getC_invalid_index_below(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2], [0,1,2], 1) + test_curve_b = CurveT([0,1,2], [0,1,2], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + with raises(InvalidIndex): + Data.Data.getC(-1) + + def test_getC_invalid_index_above(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2], [0,1,2], 1) + test_curve_b = CurveT([0,1,2], [0,1,2], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + with raises(InvalidIndex): + Data.Data.getC(2) + + def test_add_IndepVarNotAscending_exception(self): + Data.Data.init() + test_curve_a = CurveT([-1], [-1], 1) + Data.Data.add(test_curve_a, 3) + with raises(IndepVarNotAscending): + Data.Data.add(test_curve_a, 1) + + def test_eval(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2,3], [0,1,2,3], 1) + test_curve_b = CurveT([0,1,2,3], [1,2,3,4], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + assert Data.Data.eval(1, 0) == approx(1, 0.005) + + def test_eval_OutOfDomain_exception(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2,3], [0,1,2,3], 1) + test_curve_b = CurveT([0,1,2,3], [1,2,3,4], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + with raises(OutOfDomain): + Data.Data.eval(0, 4) + + def test_slice(self): + Data.Data.init() + test_curve_a = CurveT([0,1,2,3], [0,1,2,3], 1) + test_curve_b = CurveT([0,1,2,3], [1,2,3,4], 1) + Data.Data.add(test_curve_a, 0) + Data.Data.add(test_curve_b, 1) + new_curve = Data.Data.slice(1, 1) + assert new_curve.minD() == 0 + assert new_curve.maxD() == 1 + assert new_curve.order() == 1 + +class TestSeqServices: + def test_index(self): + assert SeqServices.index([1,2,3,4,5,6], 3.5) == 2 + assert SeqServices.index([1,2], 1.5) == 0 + + def test_is_ascending_empty(self): + assert SeqServices.isAscending([]) + + def test_isAscending_unit(self): + assert SeqServices.isAscending([ 1 ]) + + def test_isAscending_two(self): + assert SeqServices.isAscending([ 1, 2 ]) + + def test_isAscending_repeat(self): + assert SeqServices.isAscending([ 0, 0, 0 ]) + + def test_isAscending_descending(self): + assert not SeqServices.isAscending([ 2, 1, 0 ]) + + def test_isInBounds(self): + assert SeqServices.isInBounds([ 1, 2 ], 1.5) + assert SeqServices.isInBounds([ 1, 2 ], 2) + assert SeqServices.isInBounds([ 1 ], 1) + + def test_isInBounds_below(self): + assert not SeqServices.isInBounds([ 1, 2 ], 0.9999) + + def test_isInBounds_In(self): + assert SeqServices.isInBounds([ 1, 2 ], 1.000) + assert SeqServices.isInBounds([ 1, 2 ], 1.00001) + assert SeqServices.isInBounds([ 1, 2 ], 1.9999) + assert SeqServices.isInBounds([ 1, 2 ], 1.5) + + def test_isInBounds_above(self): + assert not SeqServices.isInBounds([ 1, 2 ], 2.0001) + + def test_isInBounds_negative(self): + assert not SeqServices.isInBounds([ 1, 2 ], -1) + assert not SeqServices.isInBounds([ 1, 2 ], -2) + + def test_interpLin(self): + assert SeqServices.interpLin(0, 1, 1, 2, 0.5) == 1.5 + + def test_interpQuad(self): + # -3.5 + 2.875x + 1.01786x^2 + assert SeqServices.interpQuad(0, -3.5, 1, 0.39286, 2, 6.32144, 3) == approx(14.2857, 0.0001) + \ No newline at end of file