diff options
Diffstat (limited to 'ml/dlib/docs')
132 files changed, 62336 insertions, 0 deletions
diff --git a/ml/dlib/docs/.logger_revnum b/ml/dlib/docs/.logger_revnum new file mode 100644 index 00000000..bf6b783f --- /dev/null +++ b/ml/dlib/docs/.logger_revnum @@ -0,0 +1 @@ +f9ef9feebe06 diff --git a/ml/dlib/docs/README.txt b/ml/dlib/docs/README.txt new file mode 100644 index 00000000..15504346 --- /dev/null +++ b/ml/dlib/docs/README.txt @@ -0,0 +1,72 @@ +This "package" is just a copy of the stuff I use to generate the documentation +for the dlib library. It contains a copy of the XSLT and XML I use to +generate the HTML documentation. + +The current version of these files can be obtained from the dlib GitHub +repository at: https://github.com/davisking/dlib + +======================== Overview ======================== + +I write all my documentation in XML files. If you look through the files in +the docs folder you will see each of them. There is also a stylesheet.xsl +file which contains all the XSLT I wrote to transform XML files into HTML. +Anyway, I use that stylesheet to generate the dlib documentation from those +XML files. + +There is also a stylesheet inside the docs/chm folder (htmlhelp_stylesheet.xsl) +that knows how to look at the XML files and generate the table of contents +files needed by the htmlhelp tool (the thing that makes chm help files). + +Also note that the first 80 or so lines of the stylesheet.xsl file contains +stuff specific to the dlib project and thus should be changed or removed +as appropriate if you want to reuse it for a different project. + +======================== Installing the required tools ======================== + +To begin with, the XML and XSLT is usable on any operating system, however, +all the scripts I have in the docs folder that automate everything are bash +shell scripts. I also use stuff like wine and other Linux tools and I have +only ever tested any of this in Debian. So if you want to use all the scripts +then you should probably run this stuff in Linux. But if not you can probably +hack something together :) + +There are four scripts in the docs folder. + + - testenv_rel: This script tests your environment for all the needed utilities. + Run it and it should tell you what else you need to install. + Note that the htmlify utility is something I wrote and is in + dlib's repository in the tools/htmlify folder. You should + build and install it. (go into that folder, make a subfolder + called build, then cd into build and say: "cmake ..; make; + sudo make install". You will need to install cmake if you + don't have it already) + + - makedocs: This remakes all the HTML documentation by pulling files out + of the dlib repository. If you want to use this stuff for your + own projects you will need to edit this file a bit. + + Note that this script puts its output in the docs/web and + docs/chm/docs folders. I use the chm folder for off-line + documentation while the web folder contains what goes onto + dlib.net. Both sets of HTML are generated from the same XML + files and are mostly the same. You will see <chm></chm> and + <web></web> tags inside the XML though in cases where the two + differ. + + - makerel: Runs makedocs as well as creates tar and zip files of the project. + It also runs htmlhelp in wine to generate the chm help files. + Note that you will need to run docs/chm/htmlhelp/setup_htmlhelp.sh + before it will work in wine. + + +======================== License for documentation files ======================== + +To the extent possible under law, Davis E King has waived all copyright and +related or neighboring rights to dlib documentation (XML, HTML, and XSLT files). +This work is published from United States. + +That is, I (Davis the author) don't care what you do with this. So do +whatever you want :) + + + diff --git a/ml/dlib/docs/bash_helper_functions b/ml/dlib/docs/bash_helper_functions new file mode 100755 index 00000000..66603e6d --- /dev/null +++ b/ml/dlib/docs/bash_helper_functions @@ -0,0 +1,30 @@ +#/bin/sh +# +# This script defines some helper functions used by other scripts in the docs +# folder. + +get_short_revision_number() +{ + RESULT=`hg log -r $1 | grep changeset | awk '{print $2}' | sed -e 's/:.*//'` +} + +get_last_modified_date() +{ + RESULT=`hg log $1 -l1 --template '{date|date}\n' | awk '{ print $2" "$3", " $5}'` +} + +get_dlib_version() +{ + cat ../dlib/CMakeLists.txt | awk '/set\(CPACK_PACKAGE_VERSION_'$1'/{ match($2,"\"(.*)\"",a); print a[1]}' +} + + +# call like: set_dlib_version MAJOR 42 +set_dlib_version() +{ + sed -i -e 's/\(set(CPACK_PACKAGE_VERSION_'$1' *"\).*\(".*\)/\1'$2'\2/' ../dlib/CMakeLists.txt +} + +MAJOR_NUM=`get_dlib_version MAJOR` +MINOR_NUM=`get_dlib_version MINOR` +PATCH_NUM=`get_dlib_version PATCH` diff --git a/ml/dlib/docs/docs/algorithms.xml b/ml/dlib/docs/docs/algorithms.xml new file mode 100644 index 00000000..82c58f94 --- /dev/null +++ b/ml/dlib/docs/docs/algorithms.xml @@ -0,0 +1,1118 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Algorithms</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + This page documents library components that are all basically just implementations of + mathematical functions or algorithms that don't fit in any of the other pages + of the dlib documentation. So this includes things like checksums, cryptographic hashes, + sorting, etc. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>Tools</name> + <item>bigint</item> + <item>disjoint_subsets</item> + <item>disjoint_subsets_sized</item> + <item nolink="true"> + <name>Quantum Computing</name> + <sub> + <item>quantum_register</item> + <item>gate</item> + </sub> + </item> + <item>hsort_array</item> + <item>isort_array</item> + <item>numeric_constants</item> + <item>put_in_range</item> + <item>qsort_array</item> + <item>split_array</item> + <item>integrate_function_adapt_simp</item> + <item>square_root</item> + <item nolink="true"> + <name>Set Utilities</name> + <sub> + <item>set_intersection_size</item> + <item>set_intersection</item> + <item>set_union</item> + <item>set_difference</item> + </sub> + </item> + </section> + + + + <section> + <name>Statistics</name> + <item>rand</item> + <item>median</item> + <item>running_stats</item> + <item>running_stats_decayed</item> + <item>running_scalar_covariance_decayed</item> + <item>running_gradient</item> + <item>running_scalar_covariance</item> + <item>mean_sign_agreement</item> + <item>correlation</item> + <item>covariance</item> + <item>r_squared</item> + <item>mean_squared_error</item> + <item>running_covariance</item> + <item>running_cross_covariance</item> + <item>random_subset_selector</item> + <item>randomly_subsample</item> + <item>find_upper_quantile</item> + <item>count_steps_without_decrease_robust</item> + <item>count_steps_without_decrease</item> + <item>count_steps_without_increase</item> + + <item>binomial_random_vars_are_different</item> + <item>event_correlation</item> + <item>max_scoring_element</item> + <item>min_scoring_element</item> + + </section> + + <section> + <name>Hashing</name> + <item>md5</item> + <item>crc32</item> + <item>hash</item> + <item>count_bits</item> + <item>hamming_distance</item> + <item>murmur_hash3</item> + <item>murmur_hash3_128bit</item> + <item>gaussian_random_hash</item> + <item>uniform_random_hash</item> + <item>projection_hash</item> + <item>create_random_projection_hash</item> + <item>create_max_margin_projection_hash</item> + <item>hash_samples</item> + <item>hash_similar_angles_64</item> + <item>hash_similar_angles_128</item> + <item>hash_similar_angles_256</item> + <item>hash_similar_angles_512</item> + </section> + + <section> + <name>Filtering</name> + <item>kalman_filter</item> + <item>rls_filter</item> + <item>momentum_filter</item> + <item>rect_filter</item> + <item>find_optimal_rect_filter</item> + <item>find_optimal_momentum_filter</item> + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>hash_similar_angles_64</name> + <file>dlib/lsh.h</file> + <spec_file link="true">dlib/lsh/hashes_abstract.h</spec_file> + <description> + This object is a tool for computing locality sensitive hashes that give + vectors with small angles between each other similar hash values. In + particular, this object creates 64 random planes which pass though the + origin and uses them to create a 64bit hash. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hash_similar_angles_128</name> + <file>dlib/lsh.h</file> + <spec_file link="true">dlib/lsh/hashes_abstract.h</spec_file> + <description> + This object is a tool for computing locality sensitive hashes that give + vectors with small angles between each other similar hash values. In + particular, this object creates 128 random planes which pass though the + origin and uses them to create a 128bit hash. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>hash_similar_angles_256</name> + <file>dlib/lsh.h</file> + <spec_file link="true">dlib/lsh/hashes_abstract.h</spec_file> + <description> + This object is a tool for computing locality sensitive hashes that give + vectors with small angles between each other similar hash values. In + particular, this object creates 256 random planes which pass though the + origin and uses them to create a 256bit hash. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>hash_similar_angles_512</name> + <file>dlib/lsh.h</file> + <spec_file link="true">dlib/lsh/hashes_abstract.h</spec_file> + <description> + This object is a tool for computing locality sensitive hashes that give + vectors with small angles between each other similar hash values. In + particular, this object creates 512 random planes which pass though the + origin and uses them to create a 512bit hash. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hash_samples</name> + <file>dlib/graph_utils_threaded.h</file> + <spec_file link="true">dlib/graph_utils/find_k_nearest_neighbors_lsh_abstract.h</spec_file> + <description> + This is a simple function for hashing a bunch of vectors using a + locality sensitive hashing object such as <a href="#hash_similar_angles_128">hash_similar_angles_128</a>. + It is also capable of running in parallel on a multi-core CPU. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>bigint</name> + <file>dlib/bigint.h</file> + <spec_file>dlib/bigint/bigint_kernel_abstract.h</spec_file> + <description> + This object represents an arbitrary precision unsigned integer. It's pretty simple. + It's interface is just like a normal int, you don't have to tell it how much memory + to use or anything unusual. It just goes :) + </description> + + <implementations> + <implementation> + <name>bigint_kernel_1</name> + <file>dlib/bigint/bigint_kernel_1.h</file> + <description> + This implementation is done using an array of unsigned shorts. It is also reference counted. + For further details see the above link. Also note that kernel_2 should be + faster in almost every case so you should really just use that version of the bigint object. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for bigint_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>bigint_kernel_2</name> + <file>dlib/bigint/bigint_kernel_2.h</file> + <description> + This implementation is basically the same as kernel_1 except it uses the + Fast Fourier Transform to perform multiplications much faster. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for bigint_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>crc32</name> + <file>dlib/crc32.h</file> + <spec_file>dlib/crc32/crc32_kernel_abstract.h</spec_file> + <description> + This object represents the CRC-32 algorithm for calculating checksums. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>gaussian_random_hash</name> + <file>dlib/hash.h</file> + <spec_file link="true">dlib/general_hash/random_hashing_abstract.h</spec_file> + <description> + This function uses hashing to generate Gaussian distributed random values + with mean 0 and variance 1. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>uniform_random_hash</name> + <file>dlib/hash.h</file> + <spec_file link="true">dlib/general_hash/random_hashing_abstract.h</spec_file> + <description> + This function uses hashing to generate uniform random values in the range [0,1). + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>murmur_hash3</name> + <file>dlib/hash.h</file> + <spec_file>dlib/general_hash/murmur_hash3_abstract.h</spec_file> + <description> + This function takes a block of memory and returns a 32bit hash. The + hashing algorithm used is Austin Appleby's excellent + <a href="http://code.google.com/p/smhasher/">MurmurHash3</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>murmur_hash3_128bit</name> + <file>dlib/hash.h</file> + <spec_file link="true">dlib/general_hash/murmur_hash3_abstract.h</spec_file> + <description> + This function takes a block of memory and returns a 128bit hash. The + hashing algorithm used is Austin Appleby's excellent + <a href="http://code.google.com/p/smhasher/">MurmurHash3</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>kalman_filter</name> + <file>dlib/filtering.h</file> + <spec_file>dlib/filtering/kalman_filter_abstract.h</spec_file> + <description> + This object implements the Kalman filter, which is a tool for + recursively estimating the state of a process given measurements + related to that process. To use this tool you will have to + be familiar with the workings of the Kalman filter. An excellent + introduction can be found in the paper: + <blockquote> + An Introduction to the Kalman Filter + by Greg Welch and Gary Bishop + </blockquote> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>momentum_filter</name> + <file>dlib/filtering.h</file> + <spec_file link="true">dlib/filtering/kalman_filter_abstract.h</spec_file> + <description> + This object is a simple tool for filtering a single scalar value that + measures the location of a moving object that has some non-trivial + momentum. Importantly, the measurements are noisy and the object can + experience sudden unpredictable accelerations. To accomplish this + filtering we use a simple <a href="#kalman_filter">Kalman filter</a> with a + state transition model of: +<pre> + + position_{i+1} = position_{i} + velocity_{i} + velocity_{i+1} = velocity_{i} + some_unpredictable_acceleration + +</pre> + + and a measurement model of: +<pre> + + measured_position_{i} = position_{i} + measurement_noise + +</pre> + + Where <tt>some_unpredictable_acceleration</tt> and <tt>measurement_noise</tt> are 0 mean Gaussian + noise sources. + + To allow for really sudden and large but infrequent accelerations, at each + step we check if the current measured position deviates from the predicted + filtered position by more than a user specified amount, + and if so we adjust the filter's state to keep it within these bounds. + This allows the moving object to undergo large unmodeled accelerations, far + in excess of what would be suggested by the basic Kalman filter's noise model, without + then experiencing a long lag time where the Kalman filter has to "catch + up" to the new position. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rect_filter</name> + <file>dlib/filtering.h</file> + <spec_file link="true">dlib/filtering/kalman_filter_abstract.h</spec_file> + <description> + This object is just a <a href="#momentum_filter">momentum_filter</a> applied to the + four corners of a <a href="linear_algebra.html#rectangle">rectangle</a>. It allows + you to filter a stream of rectangles, for instance, bounding boxes from an object detector + applied to a video stream. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_optimal_momentum_filter</name> + <file>dlib/filtering.h</file> + <spec_file link="true">dlib/filtering/kalman_filter_abstract.h</spec_file> + <description> + This function finds the "optimal" settings of a <a href="#momentum_filter">momentum_filter</a> + based on unfiltered measurement data. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_optimal_rect_filter</name> + <file>dlib/filtering.h</file> + <spec_file link="true">dlib/filtering/kalman_filter_abstract.h</spec_file> + <description> + This function finds the "optimal" settings of a <a href="#rect_filter">rect_filter</a> + based on unfiltered measurement data. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rls_filter</name> + <file>dlib/filtering.h</file> + <spec_file>dlib/filtering/rls_filter_abstract.h</spec_file> + <description> + This object is a tool for doing time series prediction using + linear <a href="ml.html#rls">recursive least squares</a>. In particular, + this object takes a sequence of points from the user and, at each + step, attempts to predict the value of the next point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>projection_hash</name> + <file>dlib/lsh.h</file> + <spec_file>dlib/lsh/projection_hash_abstract.h</spec_file> + <description> + This is a tool for hashing elements of a vector space into the integers. + It is intended to represent locality sensitive hashing functions such as + the popular <a href="#create_random_projection_hash">random projection hashing</a> method. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_random_projection_hash</name> + <file>dlib/lsh.h</file> + <spec_file link="true">dlib/lsh/create_random_projection_hash_abstract.h</spec_file> + <description> + Creates a random projection based locality sensitive + <a href="#projection_hash">hashing function</a>. The projection matrix + is generated by sampling its elements from a Gaussian random number generator. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_max_margin_projection_hash</name> + <file>dlib/lsh.h</file> + <spec_file link="true">dlib/lsh/create_random_projection_hash_abstract.h</spec_file> + <description> + Creates a random projection based locality sensitive + <a href="#projection_hash">hashing function</a>. + This is accomplished using a variation on the random hyperplane generation + technique from the paper: + <blockquote> + Random Maximum Margin Hashing by Alexis Joly and Olivier Buisson + </blockquote> + In particular, we use a linear support vector machine to generate planes. + We train it on randomly selected and randomly labeled points from + the data to be hashed. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hash</name> + <file>dlib/hash.h</file> + <spec_file>dlib/general_hash/hash_abstract.h</spec_file> + <description> + This is a set of convenience functions for invoking <a href="#murmur_hash3">murmur_hash3</a> + on std::strings, std::vectors, std::maps, or <a href="linear_algebra.html#matrix">dlib::matrix</a> objects. + <p> + As an aside, the hash() for matrix objects is defined <a href="dlib/matrix/matrix_utilities_abstract.h.html#hash">here</a>. + It has the same interface as all the others. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>count_bits</name> + <file>dlib/hash.h</file> + <spec_file link="true">dlib/general_hash/count_bits_abstract.h</spec_file> + <description> + This function counts the number of bits in an unsigned integer which are + set to 1. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hamming_distance</name> + <file>dlib/hash.h</file> + <spec_file link="true">dlib/general_hash/count_bits_abstract.h</spec_file> + <description> + This function returns the hamming distance between two unsigned integers. + That is, it returns the number of bits which differer in the two integers. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rand</name> + <file>dlib/rand.h</file> + <spec_file>dlib/rand/rand_kernel_abstract.h</spec_file> + <description> + This object represents a pseudorandom number generator. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>disjoint_subsets</name> + <file>dlib/disjoint_subsets.h</file> + <spec_file link="true">dlib/disjoint_subsets/disjoint_subsets_abstract.h</spec_file> + <description> + This object represents a set of integers which is partitioned into + a number of disjoint subsets. It supports the two fundamental operations + of finding which subset a particular integer belongs to as well as + merging subsets. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>disjoint_subsets_sized</name> + <file>dlib/disjoint_subsets.h</file> + <spec_file link="true">dlib/disjoint_subsets/disjoint_subsets_sized_abstract.h</spec_file> + <description> + This object is just like <a href="#disjoint_subsets">disjoint_subsets</a> except that it + also keeps track of the size of each set. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>running_stats</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object represents something that can compute the running mean, + variance, skewness, and kurtosis statistics of a stream of real numbers. + </description> + + <examples> + <example>running_stats_ex.cpp.html</example> + <example>kcentroid_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>running_stats_decayed</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object represents something that can compute the running mean and + variance of a stream of real numbers. It is similar to <a href="#running_stats">running_stats</a> + except that it forgets about data it has seen after a certain period of + time. It does this by exponentially decaying old statistics. + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>running_scalar_covariance_decayed</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object represents something that can compute the running covariance of + a stream of real number pairs. It is essentially the same as + <a href="#running_scalar_covariance">running_scalar_covariance</a> except that it forgets about data it has seen + after a certain period of time. It does this by exponentially decaying old + statistics. + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>running_gradient</name> + <file>dlib/statistics/running_gradient.h</file> + <spec_file link="true">dlib/statistics/running_gradient_abstract.h</spec_file> + <description> + This object is a tool for estimating if a noisy sequence of numbers is + trending up or down and by how much. It does this by finding the least + squares fit of a line to the data and then allows you to perform a + statistical test on the slope of that line. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_upper_quantile</name> + <file>dlib/statistics/running_gradient.h</file> + <spec_file link="true">dlib/statistics/running_gradient_abstract.h</spec_file> + <description> + Finds and returns the scalar value such that a user specified percentage of + the values in a container are greater than said value. For example, 0.5 + would find the median value in a container while 0.1 would find the value + that lower bounded the 10% largest values in a container. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>count_steps_without_increase</name> + <file>dlib/statistics/running_gradient.h</file> + <spec_file link="true">dlib/statistics/running_gradient_abstract.h</spec_file> + <description> + Given a potentially noisy time series, this function returns a count of how + long the time series has gone without noticeably increasing in value. It does + this by adding the elements of the time series into a <a + href="#running_gradient">running_gradient</a> object and counting how many + elements, starting with the most recent, you need to examine before you + are confident that the series has been increasing in value. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binomial_random_vars_are_different</name> + <file>dlib/statistics/statistic.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This function performs a simple statistical test to check if two binomially + distributed random variables have the same parameter (i.e. the chance of + "success"). It uses the simple likelihood ratio test discussed in + the following paper: + <blockquote> + Dunning, Ted. "Accurate methods for the statistics of surprise and + coincidence." Computational linguistics 19.1 (1993): 61-74. + </blockquote> + So for an extended discussion of the method see the above paper. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>event_correlation</name> + <file>dlib/statistics/statistic.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This function does a statistical test to determine if two events co-occur in a + statistically significant way. It uses the simple likelihood ratio + test discussed in the following paper: + <blockquote> + Dunning, Ted. "Accurate methods for the statistics of surprise and + coincidence." Computational linguistics 19.1 (1993): 61-74. + </blockquote> + So for an extended discussion of the method see the above paper. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>max_scoring_element</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This function finds the element of container that has the largest score, + according to a user supplied score function, and returns a std::pair containing + that maximal element along with the score. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>min_scoring_element</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This function finds the element of container that has the smallest score, + according to a user supplied score function, and returns a std::pair containing + that minimal element along with the score. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>count_steps_without_decrease</name> + <file>dlib/statistics/running_gradient.h</file> + <spec_file link="true">dlib/statistics/running_gradient_abstract.h</spec_file> + <description> + Given a potentially noisy time series, this function returns a count of how + long the time series has gone without noticeably decreasing in value. It does + this by adding the elements of the time series into a <a + href="#running_gradient">running_gradient</a> object and counting how many + elements, starting with the most recent, you need to examine before you + are confident that the series has been decreasing in value. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>count_steps_without_decrease_robust</name> + <file>dlib/statistics/running_gradient.h</file> + <spec_file link="true">dlib/statistics/running_gradient_abstract.h</spec_file> + <description> + This function behaves just like <a + href="#count_steps_without_decrease">count_steps_without_decrease</a> except + that it ignores times series values that are anomalously large. This makes it + robust to sudden noisy but transient spikes in the time series values. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>running_covariance</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object is a simple tool for computing the mean and + covariance of a sequence of vectors. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>running_cross_covariance</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object is a simple tool for computing the mean and + cross-covariance matrices of a sequence of pairs of vectors. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>running_scalar_covariance</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object is a simple tool for computing the covariance of a + sequence of scalar values. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>mean_sign_agreement</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This is a function for computing the probability that + matching elements of two std::vectors have the same sign. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>correlation</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This is a function for computing the correlation between + matching elements of two std::vectors. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>covariance</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This is a function for computing the covariance between + matching elements of two std::vectors. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>r_squared</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This is a function for computing the R squared coefficient between + matching elements of two std::vectors. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>mean_squared_error</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This is a function for computing the mean squared error between + matching elements of two std::vectors. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>random_subset_selector</name> + <file>dlib/statistics.h</file> + <spec_file>dlib/statistics/random_subset_selector_abstract.h</spec_file> + <description> + This object is a tool to help you select a random subset of a large body of data. + In particular, it is useful when the body of data is too large to fit into memory. + </description> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>randomly_subsample</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/random_subset_selector_abstract.h</spec_file> + <description> + This is a set of convenience functions for + creating <a href="#random_subset_selector">random subsets</a> of data. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hsort_array</name> + <file>dlib/sort.h</file> + <spec_file link="true">dlib/sort.h</spec_file> + <description> + hsort_array is an implementation of the heapsort algorithm. It will sort anything that has an + array like operator[] interface. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>put_in_range</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a simple function that takes a range and a value and returns the given + value if it is within the range. If it isn't in the range then it returns the + end of range value that is closest. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>isort_array</name> + <file>dlib/sort.h</file> + <spec_file link="true">dlib/sort.h</spec_file> + <description> + isort_array is an implementation of the insertion sort algorithm. It will sort anything that has an + array like operator[] interface. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>numeric_constants</name> + <file>dlib/numeric_constants.h</file> + <spec_file>dlib/numeric_constants.h</spec_file> + <description> + This is just a header file containing definitions of common numeric constants such as pi and e. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>qsort_array</name> + <file>dlib/sort.h</file> + <spec_file link="true">dlib/sort.h</spec_file> + <description> + qsort_array is an implementation of the QuickSort algorithm. It will sort anything that has an array like + operator[] interface. If the quick sort becomes unstable then it switches to a heap sort. This + way sorting is guaranteed to take at most N*log(N) time. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>split_array</name> + <file>dlib/array.h</file> + <spec_file link="true">dlib/array/array_tools_abstract.h</spec_file> + <description> + This function is used to efficiently split <a href="containers.html#array">array</a> + like objects into two parts. It uses the global swap() function instead + of copying to move elements around, so it works on arrays of non-copyable + types. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>integrate_function_adapt_simp</name> + <file>dlib/numerical_integration.h</file> + <spec_file link="true">dlib/numerical_integration/integrate_function_adapt_simpson_abstract.h</spec_file> + <description> + Computes an approximation of the integral of a real valued function using the + adaptive Simpson method outlined in + <blockquote> + Gander, W. and W. Gautshi, "Adaptive + Quadrature -- Revisited" BIT, Vol. 40, (2000), pp.84-101 + </blockquote> + </description> + <examples> + <example>integrate_function_adapt_simp_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>md5</name> + <file>dlib/md5.h</file> + <spec_file>dlib/md5/md5_kernel_abstract.h</spec_file> + <description> + This is an implementation of The MD5 Message-Digest Algorithm as described in rfc1321. + </description> + + </component> + + + + <!-- ************************************************************************* --> + + <component> + <name>median</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This function takes three parameters and finds the median of the three. The median is swapped into + the first parameter and the first parameter ends up in one of the other two, unless the first parameter was + the median to begin with of course. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>square_root</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + square_root is a function which takes an unsigned long and returns the square root of it or + if the root is not an integer then it is rounded up to the next integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_intersection</name> + <file>dlib/set_utils.h</file> + <spec_file link="true">dlib/set_utils/set_utils_abstract.h</spec_file> + <description> + This function takes two <a href="containers.html#set">set</a> objects and + gives you their intersection. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_union</name> + <file>dlib/set_utils.h</file> + <spec_file link="true">dlib/set_utils/set_utils_abstract.h</spec_file> + <description> + This function takes two <a href="containers.html#set">set</a> objects and + gives you their union. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_difference</name> + <file>dlib/set_utils.h</file> + <spec_file link="true">dlib/set_utils/set_utils_abstract.h</spec_file> + <description> + This function takes two <a href="containers.html#set">set</a> objects and + gives you their difference. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_intersection_size</name> + <file>dlib/set_utils.h</file> + <spec_file link="true">dlib/set_utils/set_utils_abstract.h</spec_file> + <description> + This function takes two <a href="containers.html#set">set</a> objects and tells you + how many items they have in common. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>quantum_register</name> + <file>dlib/quantum_computing.h</file> + <spec_file link="true">dlib/quantum_computing/quantum_computing_abstract.h</spec_file> + <description> + This object represents a set of quantum bits. It can be used + with the quantum <a href="#gate">gate</a> object to simulate + quantum algorithms. + </description> + + <examples> + <example>quantum_computing_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>gate</name> + <file>dlib/quantum_computing.h</file> + <spec_file link="true">dlib/quantum_computing/quantum_computing_abstract.h</spec_file> + <description> + This object represents a quantum gate that operates on a + <a href="#quantum_register">quantum_register</a>. + </description> + <examples> + <example>quantum_computing_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> + diff --git a/ml/dlib/docs/docs/api.xml b/ml/dlib/docs/docs/api.xml new file mode 100644 index 00000000..2d6811b4 --- /dev/null +++ b/ml/dlib/docs/docs/api.xml @@ -0,0 +1,1289 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>API Wrappers</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + + These wrappers provide a portable object oriented interface for networking, multithreading, + GUI development, and file browsing. + Programs written using them can be compiled under POSIX or MS Windows platforms without changing the code. + </p> + + + + </body> + + <!-- ************************************************************************* --> + + <menu width="180"> + <top> + <section> + <name>API</name> + + + + <item> + <name>gui_widgets</name> + <sub> + <item nolink="true"> + <name>widgets</name> + <sub> + <item> + <name>draggable</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#draggable</link> + </item> + <item> + <name>tooltip</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#tooltip</link> + </item> + <item> + <name>popup_menu_region</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu_region</link> + </item> + <item> + <name>button_action</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#button_action</link> + </item> + <item> + <name>scrollable_region</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#scrollable_region</link> + </item> + <item> + <name>zoomable_region</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#zoomable_region</link> + </item> + <item> + <name>mouse_over_event</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#mouse_over_event</link> + </item> + <item> + <name>scroll_bar</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#scroll_bar</link> + </item> + <item> + <name>widget_group</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#widget_group</link> + </item> + <item> + <name>image_widget</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#image_widget</link> + </item> + <item> + <name>popup_menu</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu</link> + </item> + <item> + <name>menu_item</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#menu_item</link> + </item> + <item> + <name>menu_item_text</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_text</link> + </item> + <item> + <name>menu_item_separator</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_separator</link> + </item> + <item> + <name>menu_item_submenu</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_submenu</link> + </item> + <item> + <name>named_rectangle</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#named_rectangle</link> + </item> + <item> + <name>menu_bar</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#menu_bar</link> + </item> + <item> + <name>perspective_window</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#perspective_window</link> + </item> + <item> + <name>perspective_display</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#perspective_display</link> + </item> + <item> + <name>image_window</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#image_window</link> + </item> + <item> + <name>image_display</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#image_display</link> + </item> + <item> + <name>message_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#message_box</link> + </item> + <item> + <name>message_box_blocking</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#message_box_blocking</link> + </item> + <item> + <name>open_file_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#open_file_box</link> + </item> + <item> + <name>open_existing_file_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#open_existing_file_box</link> + </item> + <item> + <name>save_file_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#save_file_box</link> + </item> + <item> + <name>label</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#label</link> + </item> + <item> + <name>button</name> + <link>dlib/gui_widgets/base_widgets_abstract.h.html#button</link> + </item> + <item> + <name>toggle_button</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#toggle_button</link> + </item> + <item> + <name>text_grid</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#text_grid</link> + </item> + <item> + <name>directed_graph_drawer</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#directed_graph_drawer</link> + </item> + <item> + <name>list_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#list_box</link> + </item> + <item> + <name>check_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#check_box</link> + </item> + <item> + <name>radio_button</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#radio_button</link> + </item> + <item> + <name>text_field</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#text_field</link> + </item> + <item> + <name>text_box</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#text_box</link> + </item> + <item> + <name>tabbed_display</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#tabbed_display</link> + </item> + <item> + <name>mouse_tracker</name> + <link>dlib/gui_widgets/widgets_abstract.h.html#mouse_tracker</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>styles</name> + <sub> + <item> + <name>button_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#button_style</link> + </item> + <item> + <name>button_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#button_style_default</link> + </item> + <item> + <name>button_style_arrow</name> + <link>dlib/gui_widgets/style_abstract.h.html#button_style_arrow</link> + </item> + <item> + <name>button_style_toolbar1</name> + <link>dlib/gui_widgets/style_abstract.h.html#button_style_toolbar1</link> + </item> + <item> + <name>button_style_toolbar_icon1</name> + <link>dlib/gui_widgets/style_abstract.h.html#button_style_toolbar_icon1</link> + </item> + + + <item> + <name>toggle_button_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#toggle_button_style</link> + </item> + <item> + <name>toggle_button_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#toggle_button_style_default</link> + </item> + <item> + <name>toggle_button_style_check_box</name> + <link>dlib/gui_widgets/style_abstract.h.html#toggle_button_style_check_box</link> + </item> + <item> + <name>toggle_button_style_radio_button</name> + <link>dlib/gui_widgets/style_abstract.h.html#toggle_button_style_radio_button</link> + </item> + + + <item> + <name>scroll_bar_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#scroll_bar_style</link> + </item> + <item> + <name>scroll_bar_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#scroll_bar_style_default</link> + </item> + + + <item> + <name>scrollable_region_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#scrollable_region_style</link> + </item> + <item> + <name>scrollable_region_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#scrollable_region_style_default</link> + </item> + + + <item> + <name>list_box_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#list_box_style</link> + </item> + <item> + <name>list_box_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#list_box_style_default</link> + </item> + + + <item> + <name>text_field_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#text_field_style</link> + </item> + <item> + <name>text_field_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#text_field_style_default</link> + </item> + + + <item> + <name>text_box_style</name> + <link>dlib/gui_widgets/style_abstract.h.html#text_box_style</link> + </item> + <item> + <name>text_box_style_default</name> + <link>dlib/gui_widgets/style_abstract.h.html#text_box_style_default</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>canvas drawing functions</name> + <sub> + <item> + <name>draw_line</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_line</link> + </item> + <item> + <name>draw_rectangle</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rectangle</link> + </item> + <item> + <name>draw_circle</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_circle</link> + </item> + <item> + <name>draw_pixel</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_pixel</link> + </item> + <item> + <name>draw_solid_circle</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_circle</link> + </item> + <item> + <name>draw_solid_convex_polygon</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_convex_polygon</link> + </item> + <item> + <name>draw_button_down</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_button_down</link> + </item> + <item> + <name>draw_sunken_rectangle</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_sunken_rectangle</link> + </item> + <item> + <name>draw_button_up</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_button_up</link> + </item> + <item> + <name>draw_checkered</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_checkered</link> + </item> + <item> + <name>draw_image</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_image</link> + </item> + <item> + <name>fill_rect</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect</link> + </item> + <item> + <name>fill_rect_with_vertical_gradient</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect_with_vertical_gradient</link> + </item> + <item> + <name>fill_gradient_rounded</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_gradient_rounded</link> + </item> + <item> + <name>draw_rounded_rectangle</name> + <link>dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rounded_rectangle</link> + </item> + </sub> + </item> + <item> + <name>drawable</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#drawable</link> + <sub> + <item> + <name>set_main_font</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#set_main_font</link> + </item> + <item> + <name>main_font</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#main_font</link> + </item> + <item> + <name>z_order</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#z_order</link> + </item> + <item> + <name>next_free_user_event_number</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#next_free_user_event_number</link> + </item> + <item> + <name>set_z_order</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#set_z_order</link> + </item> + <item nolink="true"> + <name>shape</name> + <sub> + <item> + <name>get_rect</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#get_rect</link> + </item> + <item> + <name>bottom</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#bottom</link> + </item> + <item> + <name>top</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#top</link> + </item> + <item> + <name>left</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#left</link> + </item> + <item> + <name>right</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#right</link> + </item> + <item> + <name>width</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#width</link> + </item> + <item> + <name>height</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#height</link> + </item> + </sub> + </item> + <item> + <name>set_pos</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#set_pos</link> + </item> + <item> + <name>is_enabled</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#is_enabled</link> + </item> + <item> + <name>enable</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#enable</link> + </item> + <item> + <name>disable</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#disable</link> + </item> + <item> + <name>is_hidden</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#is_hidden</link> + </item> + <item> + <name>show</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#show</link> + </item> + <item> + <name>hide</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#hide</link> + </item> + <item> + <name>parent_window</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#parent_window</link> + </item> + <item> + <name>enable_events</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#enable_events</link> + </item> + <item> + <name>events_are_enabled</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#events_are_enabled</link> + </item> + <item> + <name>disable_events</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#disable_events</link> + </item> + <item nolink="true"> + <name>events</name> + <sub> + <item> + <name>on_window_resized</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_window_resized</link> + </item> + <item> + <name>on_window_moved</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_window_moved</link> + </item> + <item> + <name>on_focus_gained</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_focus_gained</link> + </item> + <item> + <name>on_focus_lost</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_focus_lost</link> + </item> + <item> + <name>on_mouse_up</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_mouse_up</link> + </item> + <item> + <name>on_mouse_move</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_mouse_move</link> + </item> + <item> + <name>on_mouse_enter</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_mouse_enter</link> + </item> + <item> + <name>on_mouse_leave</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_mouse_leave</link> + </item> + <item> + <name>on_mouse_down</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_mouse_down</link> + </item> + <item> + <name>on_wheel_up</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_wheel_up</link> + </item> + <item> + <name>on_wheel_down</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_wheel_down</link> + </item> + <item> + <name>on_keydown</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_keydown</link> + </item> + <item> + <name>on_string_put</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_string_put</link> + </item> + <item> + <name>on_user_event</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#on_user_event</link> + </item> + <item> + <name>draw</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#draw</link> + </item> + </sub> + </item> + </sub> + </item> + <item> + <name>drawable_window</name> + <link>dlib/gui_widgets/drawable_abstract.h.html#drawable_window</link> + </item> + <item nolink="true"> + <name>fonts</name> + <sub> + <item> + <name>letter</name> + <link>dlib/gui_widgets/fonts_abstract.h.html#letter</link> + </item> + <item> + <name>font</name> + <link>dlib/gui_widgets/fonts_abstract.h.html#font</link> + </item> + <item> + <name>default_font</name> + <link>dlib/gui_widgets/fonts_abstract.h.html#default_font</link> + </item> + <item> + <name>get_native_font</name> + <link>dlib/gui_widgets/fonts_abstract.h.html#get_native_font</link> + </item> + <item> + <name>bdf_font</name> + <link>dlib/gui_widgets/fonts_abstract.h.html#bdf_font</link> + </item> + </sub> + </item> + </sub> + </item> + + <item> + <name>gui_core</name> + <sub> + <item> + <name>base_window</name> + <link>dlib/gui_core/gui_core_kernel_abstract.h.html#base_window</link> + </item> + <item> + <name>canvas</name> + <link>dlib/gui_core/gui_core_kernel_abstract.h.html#canvas</link> + </item> + <item> + <name>get_from_clipboard</name> + <link>dlib/gui_core/gui_core_kernel_abstract.h.html#get_from_clipboard</link> + </item> + <item> + <name>put_on_clipboard</name> + <link>dlib/gui_core/gui_core_kernel_abstract.h.html#put_on_clipboard</link> + </item> + </sub> + </item> + + <item> + <name>dir_nav</name> + <sub> + <item> + <name>get_filesystem_roots</name> + <link>dlib/dir_nav/dir_nav_kernel_abstract.h.html#get_filesystem_roots</link> + </item> + <item> + <name>file</name> + <link>dlib/dir_nav/dir_nav_kernel_abstract.h.html#file</link> + </item> + <item> + <name>directory</name> + <link>dlib/dir_nav/dir_nav_kernel_abstract.h.html#directory</link> + </item> + <item> + <name>get_files_in_directory_tree</name> + <link>dlib/dir_nav/dir_nav_extensions_abstract.h.html#get_files_in_directory_tree</link> + </item> + <item> + <name>get_parent_directory</name> + <link>dlib/dir_nav/dir_nav_extensions_abstract.h.html#get_parent_directory</link> + </item> + <item> + <name>file_exists</name> + <link>dlib/dir_nav/dir_nav_extensions_abstract.h.html#file_exists</link> + </item> + <item> + <name>select_oldest_file</name> + <link>dlib/dir_nav/dir_nav_extensions_abstract.h.html#select_oldest_file</link> + </item> + <item> + <name>select_newest_file</name> + <link>dlib/dir_nav/dir_nav_extensions_abstract.h.html#select_newest_file</link> + </item> + </sub> + </item> + <item> + <name>misc_api</name> + <sub> + <item> + <name>sleep</name> + <link>dlib/misc_api/misc_api_kernel_abstract.h.html#sleep</link> + </item> + <item> + <name>get_current_dir</name> + <link>dlib/misc_api/misc_api_kernel_abstract.h.html#get_current_dir</link> + </item> + <item> + <name>set_current_dir</name> + <link>dlib/misc_api/misc_api_kernel_abstract.h.html#set_current_dir</link> + </item> + <item> + <name>locally_change_current_dir</name> + <link>dlib/misc_api/misc_api_kernel_abstract.h.html#locally_change_current_dir</link> + </item> + <item> + <name>create_directory</name> + <link>dlib/misc_api/misc_api_kernel_abstract.h.html#create_directory</link> + </item> + <item> + <name>timestamper</name> + <link>dlib/misc_api/misc_api_kernel_abstract.h.html#timestamper</link> + </item> + </sub> + </item> + <item> + <name>threads</name> + <sub> + <item nolink="true"> + <name>extensions</name> + <sub> + <item>thread_specific_data</item> + <item>create_new_thread_extension</item> + <item>rsignaler</item> + <item>rmutex</item> + <item>read_write_mutex</item> + <item>auto_mutex</item> + <item>auto_mutex_readonly</item> + <item>auto_unlock</item> + <item>auto_unlock_readonly</item> + <item>threaded_object</item> + <item>thread_pool</item> + <item>async</item> + <item>default_thread_pool</item> + <item>parallel_for</item> + <item> + <name>future</name> + <link>dlib/threads/thread_pool_extension_abstract.h.html#future</link> + </item> + <item>thread_function</item> + <item>multithreaded_object</item> + </sub> + </item> + <item> + <name>is_dlib_thread</name> + <link>dlib/threads/threads_kernel_abstract.h.html#is_dlib_thread</link> + </item> + <item> + <name>create_new_thread</name> + <link>dlib/threads/threads_kernel_abstract.h.html#create_new_thread</link> + </item> + <item> + <name>mutex</name> + <link>dlib/threads/threads_kernel_abstract.h.html#mutex</link> + </item> + <item> + <name>unregister_thread_end_handler</name> + <link>dlib/threads/threads_kernel_abstract.h.html#unregister_thread_end_handler</link> + </item> + <item> + <name>register_thread_end_handler</name> + <link>dlib/threads/threads_kernel_abstract.h.html#register_thread_end_handler</link> + </item> + <item> + <name>signaler</name> + <link>dlib/threads/threads_kernel_abstract.h.html#signaler</link> + </item> + <item> + <name>get_thread_id</name> + <link>dlib/threads/threads_kernel_abstract.h.html#get_thread_id</link> + </item> + </sub> + </item> + <item> + <name>sockets</name> + <sub> + <item nolink="true"> + <name>extensions</name> + <sub> + <item> + <name>network_address</name> + <link>dlib/sockets/sockets_extensions_abstract.h.html#network_address</link> + </item> + <item> + <name>connect</name> + <link>dlib/sockets/sockets_extensions_abstract.h.html#connect</link> + </item> + <item> + <name>is_ip_address</name> + <link>dlib/sockets/sockets_extensions_abstract.h.html#is_ip_address</link> + </item> + <item> + <name>close_gracefully</name> + <link>dlib/sockets/sockets_extensions_abstract.h.html#close_gracefully</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>objects</name> + <sub> + <item> + <name>connection</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#connection</link> + </item> + <item> + <name>listener</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#listener</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>functions</name> + <sub> + <item> + <name>create_connection</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#create_connection</link> + </item> + <item> + <name>create_listener</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#create_listener</link> + </item> + <item> + <name>get_local_hostname</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#get_local_hostname</link> + </item> + <item> + <name>hostname_to_ip</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#hostname_to_ip</link> + </item> + <item> + <name>ip_to_hostname</name> + <link>dlib/sockets/sockets_kernel_abstract.h.html#ip_to_hostname</link> + </item> + </sub> + </item> + </sub> + </item> + </section> + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <component> + <name>dir_nav</name> + <file>dlib/dir_nav.h</file> + <spec_file>dlib/dir_nav/dir_nav_kernel_abstract.h</spec_file> + <description> + This is a set of objects that provide an easy and portable way to traverse a directory tree. + </description> + + <examples> + <example>dir_nav_ex.cpp.html</example> + </examples> + + <implementations> + <implementation> + <name>dir_nav_kernel_1</name> + <file>dlib/dir_nav/dir_nav_kernel_1.h</file> + <description> + MS Windows implementation + </description> + + </implementation> + <implementation> + <name>dir_nav_kernel_2</name> + <file>dlib/dir_nav/dir_nav_kernel_2.h</file> + <description> + POSIX implementation + </description> + + </implementation> + </implementations> + + <extensions> + <extension> + <name>dir_nav_extensions</name> + <spec_file>dlib/dir_nav/dir_nav_extensions_abstract.h</spec_file> + <description> + This is just some miscellaneous extensions to the dir_nav component. + </description> + </extension> + </extensions> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>gui_core</name> + <file>dlib/gui_core.h</file> + <spec_file>dlib/gui_core/gui_core_kernel_abstract.h</spec_file> + <description> + This is a set of objects and functions which provide a very basic + framework for manipulating windows. It is intended to provide a portable + interface which can be used to build a more complex windowing toolkit. + </description> + + <implementations> + <implementation> + <name>gui_core_kernel_1</name> + <file>dlib/gui_core/gui_core_kernel_1.h</file> + <description> + MS Windows implementation + </description> + + </implementation> + <implementation> + <name>gui_core_kernel_2</name> + <file>dlib/gui_core/gui_core_kernel_2.h</file> + <description> + X Windows implementation + </description> + + </implementation> + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>misc_api</name> + <file>dlib/misc_api.h</file> + <spec_file>dlib/misc_api/misc_api_kernel_abstract.h</spec_file> + <description> + This is just a collection of miscellaneous APIs that were small/simple + enough not to warrant their own module. + </description> + + <implementations> + <implementation> + <name>misc_api_kernel_1</name> + <file>dlib/misc_api/misc_api_kernel_1.h</file> + <description> + MS Windows implementation + </description> + + </implementation> + <implementation> + <name>misc_api_kernel_2</name> + <file>dlib/misc_api/misc_api_kernel_2.h</file> + <description> + POSIX implementation + </description> + + </implementation> + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>sockets</name> + <file>dlib/sockets.h</file> + <spec_file>dlib/sockets/sockets_kernel_abstract.h</spec_file> + <description> + This is a set of objects that provides an easy to use and object oriented + interface for dealing with TCP networking. There are currently two implementations, + one for UNIX and another for all versions of Windows after Windows95. + Both provide the exact same interface so programs written with them can be + recompiled on either platform without a problem. + <p> + You also may want to take note of the <a href="other.html#timeout">timeout</a> object. + It provides a mechanism which you can use to add a timeout to a network operation. + </p> + </description> + + <examples> + <example>iosockstream_ex.cpp.html</example> + <example>sockets_ex.cpp.html</example> + <example>sockstreambuf_ex.cpp.html</example> + <example>server_http_ex.cpp.html</example> + <example>server_iostream_ex.cpp.html</example> + </examples> + + <implementations> + <implementation> + <name>sockets_kernel_1</name> + <file>dlib/sockets/sockets_kernel_1.h</file> + <description> + MS Windows implementation + </description> + + </implementation> + <implementation> + <name>sockets_kernel_2</name> + <file>dlib/sockets/sockets_kernel_2.h</file> + <description> + POSIX implementation + </description> + + </implementation> + </implementations> + + + <extensions> + <extension> + <name>sockets_extensions</name> + <spec_file>dlib/sockets/sockets_extensions_abstract.h</spec_file> + <description> + This is just some miscellaneous extensions to the socket api. + </description> + </extension> + + </extensions> + + + </component> + + + + <!-- ************************************************************************* --> + + <component> + <name>threads</name> + <file>dlib/threads.h</file> + <spec_file>dlib/threads/threads_kernel_abstract.h</spec_file> + <description> + This is a set of objects that provides an easy to use and object oriented interface + for creating multi-threaded programs. There are currently two implementations, one + for UNIX and another for any variant of MS Windows after Windows 95. Both provide + the exact same interface so programs written with them can be recompiled on either + platform without a problem. + <p> + You also probably want to take note of the <a href="other.html#pipe">pipe</a> object. + It provides an easy to use typesafe mechanism to send messages between threads. + </p> + </description> + + <examples> + <example>threads_ex.cpp.html</example> + <example>logger_ex_2.cpp.html</example> + <example>pipe_ex.cpp.html</example> + <example>multithreaded_object_ex.cpp.html</example> + <example>threaded_object_ex.cpp.html</example> + <example>thread_function_ex.cpp.html</example> + <example>thread_pool_ex.cpp.html</example> + </examples> + + <implementations> + <implementation> + <name>threads_kernel_1</name> + <file>dlib/threads/threads_kernel_1.h</file> + <description> + MS Windows implementation + </description> + + </implementation> + <implementation> + <name>threads_kernel_2</name> + <file>dlib/threads/threads_kernel_2.h</file> + <description> + POSIX implementation + </description> + + </implementation> + </implementations> + + + <extensions> + <extension> + <name>rsignaler</name> + <spec_file>dlib/threads/rsignaler_extension_abstract.h</spec_file> + <description> + This extension adds a signaler object that can be used with the rmutex object. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + </extension> + + + <extension> + <name>thread_specific_data</name> + <spec_file>dlib/threads/thread_specific_data_extension_abstract.h</spec_file> + <description> + This extension adds the ability to easily create thread specific data. + </description> + </extension> + + + <extension> + <name>rmutex</name> + <spec_file>dlib/threads/rmutex_extension_abstract.h</spec_file> + <description> + This extension adds a mutex object that can handle recursive calls + to lock(). + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + </extension> + + <extension> + <name>read_write_mutex</name> + <spec_file>dlib/threads/read_write_mutex_extension_abstract.h</spec_file> + <description> + This extension adds a mutex object that can perform both normal "write locks" as well as "readonly locks". + See the specification for details. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + </extension> + + <extension> + <name>create_new_thread_extension</name> + <spec_file>dlib/threads/create_new_thread_extension_abstract.h</spec_file> + <description> + This extension adds some templated overloads to the + <a href="dlib/threads/threads_kernel_abstract.h.html#create_new_thread">create_new_thread()</a> function. They allow you to create new threads using member functions from a class. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + + + </extension> + + <extension> + <name>auto_mutex</name> + <spec_file>dlib/threads/auto_mutex_extension_abstract.h</spec_file> + <description> + This extension adds a mechanism to automatically lock and unlock a mutex. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + + <examples> + <example>threads_ex.cpp.html</example> + </examples> + + </extension> + + <extension> + <name>auto_mutex_readonly</name> + <spec_file link="true">dlib/threads/auto_mutex_extension_abstract.h</spec_file> + <description> + This extension adds a mechanism to automatically perform a readonly lock and unlock + of a <a href="#read_write_mutex">read_write_mutex</a>. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + </extension> + + <extension> + <name>auto_unlock_readonly</name> + <spec_file link="true">dlib/threads/auto_unlock_extension_abstract.h</spec_file> + <description> + This extension adds a mechanism to automatically remove a readonly unlock from a <a href="#read_write_mutex">read_write_mutex</a>. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + </extension> + + <extension> + <name>thread_function</name> + <spec_file>dlib/threads/thread_function_extension_abstract.h</spec_file> + <description> + This object represents a thread on a global C++ function. That is, it allows you + to run a global function in its own thread. + </description> + + <examples> + <example>thread_function_ex.cpp.html</example> + </examples> + + + </extension> + + <extension> + <name>threaded_object</name> + <spec_file>dlib/threads/threaded_object_extension_abstract.h</spec_file> + <description> + This extension represents a simple threaded object. It provides a convenient + mechanism to create an object that contains a thread. + </description> + + <examples> + <example>threaded_object_ex.cpp.html</example> + </examples> + + + </extension> + + <extension> + <name>thread_pool</name> + <spec_file link="true">dlib/threads/thread_pool_extension_abstract.h</spec_file> + <description> + <p> + This object represents a fixed size group of threads which you can + submit tasks to and then wait for those tasks to be completed. It also + provides a <a href="dlib/threads/thread_pool_extension_abstract.h.html#future">future</a> object + that provides a container which allows you to safely pass objects into the tasks. + </p> + The implementation of this extension can be found + <a href="dlib/threads/thread_pool_extension.h.html">here</a>. It is + implemented such that no memory allocations occur after the thread pool + has been constructed so long as the user doesn't call + any of the add_task_by_value() routines. The future object also doesn't + perform any memory allocations or contain any system resources such as mutex objects. + </description> + + <examples> + <example>thread_pool_ex.cpp.html</example> + </examples> + </extension> + + <extension> + <name>default_thread_pool</name> + <spec_file link="true">dlib/threads/async_abstract.h</spec_file> + <description> + This function returns a reference to a global <a href="#thread_pool">thread_pool</a>. If the DLIB_NUM_THREADS + environment variable is set to an integer then the thread pool will contain + DLIB_NUM_THREADS threads, otherwise it will contain + std::thread::hardware_concurrency() threads. + </description> + </extension> + + <extension> + <name>async</name> + <spec_file link="true">dlib/threads/async_abstract.h</spec_file> + <description> + This function behaves just like std::async() + except that instead of spawning a new thread to process each task it submits + the task to a <a href="#thread_pool">dlib::thread_pool</a>. Therefore, dlib::async() is + guaranteed to use a bounded number of threads unlike std::async(). This also + means that calls to dlib::async() will block if there aren't any free threads + in the thread pool. + </description> + </extension> + + <extension> + <name>parallel_for</name> + <spec_file>dlib/threads/parallel_for_extension_abstract.h</spec_file> + <description> + This is a set of functions for executing the contents of a for loop in parallel. + It is useful for taking advantage of multi-processor systems. + </description> + <examples> + <example>parallel_for_ex.cpp.html</example> + </examples> + </extension> + + <extension> + <name>multithreaded_object</name> + <spec_file>dlib/threads/multithreaded_object_extension_abstract.h</spec_file> + <description> + This object represents a multithreaded object. It is similar to + the <a href="#threaded_object">threaded_object</a> except it allows you to have many threads in a + single object rather than just one. + </description> + + <examples> + <example>multithreaded_object_ex.cpp.html</example> + <example>pipe_ex.cpp.html</example> + </examples> + </extension> + + <extension> + <name>auto_unlock</name> + <spec_file>dlib/threads/auto_unlock_extension_abstract.h</spec_file> + <description> + This extension adds a mechanism to automatically unlock a mutex. + Also note that this extension is included by dlib/threads.h so you don't have to include + anything extra to get it. + </description> + + + </extension> + </extensions> + + + + </component> + + + + + <!-- ************************************************************************* --> + + <component> + <name>gui_widgets</name> + <file>dlib/gui_widgets.h</file> + <description> + <p> + This component is a collection of various windowing widgets such as buttons, + labels, text boxes, and so on. It also includes the drawable + interface, drawable_window, and font handling objects. + <a href="dlib/gui_widgets/widgets_abstract.h.html">dlib/gui_widgets/widgets_abstract.h</a> + defines all of the high level graphical widgets provided by this + component that can appear in a drawable_window. To view the specifications for the other members of this + component look at <a href="dlib/gui_widgets/fonts_abstract.h.html">dlib/gui_widgets/fonts_abstract.h</a>, + <a href="dlib/gui_widgets/drawable_abstract.h.html">dlib/gui_widgets/drawable_abstract.h</a>, + and <a href="dlib/gui_widgets/base_widgets_abstract.h.html">dlib/gui_widgets/base_widgets_abstract.h</a>. + </p> + <p>This component isn't actually a wrapper on top of OS APIs. Rather, it is + implemented on top of the <a href="#gui_core">gui_core</a> + component. I put it on this page just because I expect that people would + look here when searching for the sort of functionality provided by this component. + </p> + + + <center><h2>Primary widgets</h2></center> + <table> + <tr> + <td><a href="dlib/gui_widgets/base_widgets_abstract.h.html#button"><img src="guipics/button.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#check_box"><img src="guipics/check_box.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#radio_button"><img src="guipics/radio_button.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#label"><img src="guipics/label.png"/></a></td> + </tr> + <tr> + <td><a href="dlib/gui_widgets/base_widgets_abstract.h.html#scroll_bar"><img src="guipics/scroll_bar.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#text_field"><img src="guipics/text_field.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#text_box"><img src="guipics/text_box.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#text_grid"><img src="guipics/text_grid.png"/></a></td> + </tr> + <tr> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#list_box"><img src="guipics/list_box.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#menu_bar"><img src="guipics/menu_bar.png"/></a></td> + <td><a href="dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu"><img src="guipics/popup_menu.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#tabbed_display"><img src="guipics/tabbed_display.png"/></a></td> + </tr> + <tr> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#named_rectangle"><img src="guipics/named_rectangle.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#image_window"><img src="guipics/image_window.jpg"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#directed_graph_drawer"><img src="guipics/directed_graph_drawer.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#mouse_tracker"><img src="guipics/mouse_tracker.png"/></a></td> + </tr> + <tr> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#message_box"><img src="guipics/message_box.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#open_existing_file_box"><img src="guipics/open_existing_file_box.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#open_file_box"><img src="guipics/open_file_box.png"/></a></td> + <td><a href="dlib/gui_widgets/widgets_abstract.h.html#save_file_box"><img src="guipics/save_file_box.png"/></a></td> + </tr> + <tr> + <td colspan='3'><a href="dlib/gui_widgets/widgets_abstract.h.html#perspective_window"><img src="guipics/perspective_window.png"/></a></td> + </tr> + </table> + + </description> + + <examples> + <example>gui_api_ex.cpp.html</example> + <example>image_ex.cpp.html</example> + <example>3d_point_cloud_ex.cpp.html</example> + <example>surf_ex.cpp.html</example> + <example>bayes_net_gui_ex.cpp.html</example> + </examples> + </component> + + + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/bayes.xml b/ml/dlib/docs/docs/bayes.xml new file mode 100644 index 00000000..2ed11fe1 --- /dev/null +++ b/ml/dlib/docs/docs/bayes.xml @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Bayesian Networks</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + This page documents all the tools within the dlib library that relate + to the construction and evaluation of Bayesian networks. If you want + a quick introduction to the tools then you should consult the + Bayesian Net <a href="bayes_net_ex.cpp.html">example program</a>. + + </p> + <p> + The + library also comes with a graphical application to assist in the + creation of bayesian networks. This application is one of the + <a href="bayes_net_gui_ex.cpp.html">example programs</a>, so to use it + you have to compile it yourself. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>Tools</name> + <item>assignment</item> + <item>joint_probability_table</item> + <item>conditional_probability_table</item> + <item>bayes_node</item> + <item>bayesian_network_gibbs_sampler</item> + <item>bayesian_network_join_tree</item> + + </section> + + <section> + <name>Node Utilities</name> + <item>set_node_value</item> + <item>node_value</item> + <item>node_is_evidence</item> + <item>set_node_as_evidence</item> + <item>set_node_as_nonevidence</item> + <item>set_node_num_values</item> + <item>node_num_values</item> + <item>node_probability</item> + <item>set_node_probability</item> + <item>node_first_parent_assignment</item> + <item>node_next_parent_assignment</item> + <item>node_cpt_filled_out</item> + + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>bayesian_network_join_tree</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This object represents an implementation of the join tree algorithm + (a.k.a. the junction tree algorithm) + for inference in bayesian networks. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + <example>bayes_net_gui_ex.cpp.html</example> + <example>bayes_net_from_disk_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bayesian_network_gibbs_sampler</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This object performs Markov Chain Monte Carlo sampling of a bayesian + network using the Gibbs sampling technique. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bayes_node</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This object represents a node in a bayesian network. It is + intended to be used inside the <a href="containers.html#directed_graph">directed_graph</a> object to + represent bayesian networks. + </description> + + <examples> + <example>bayes_net_ex.cpp.html</example> + <example>bayes_net_gui_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>conditional_probability_table</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This object represents a conditional probability table. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>joint_probability_table</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This object represents a joint probability table. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assignment</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This object models an assignment of random variables to particular values. + It is used with the <a href="#joint_probability_table">joint_probability_table</a> and + <a href="#conditional_probability_table">conditional_probability_table</a> + objects to represent assignments of various random variables to actual values. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + <example>bayes_net_gui_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_node_probability</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily set the probability of a + <a href="#bayes_node">bayes_node</a> given its parents when it is inside + a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>node_first_parent_assignment</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily obtain an <a href="#assignment">assignment</a> + that contains all the parents of a node in a bayesian network. + </description> + <examples> + <example>bayes_net_gui_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>node_next_parent_assignment</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily loop through all the parent <a href="#assignment">assignments</a> + of a node in a bayesian network. + </description> + <examples> + <example>bayes_net_gui_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>node_cpt_filled_out</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily verify that a node + in a bayesian network has its <a href="#conditional_probability_table">conditional_probability_table</a> + completely filled out. + </description> + <examples> + <example>bayes_net_gui_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>node_probability</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily obtain the probability of a + <a href="#bayes_node">bayes_node</a> given its parents when it is inside + a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>node_num_values</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily obtain the number of values of a + <a href="#bayes_node">bayes_node</a> when it is inside + a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_node_num_values</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily set the number of values of a + <a href="#bayes_node">bayes_node</a> when it is inside + a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_node_as_nonevidence</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily remove the evidence flag of a + <a href="#bayes_node">bayes_node</a> when it is inside + a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_node_as_evidence</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily set the evidence flag of a + <a href="#bayes_node">bayes_node</a> when it is inside + a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>node_is_evidence</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily determine if a + <a href="#bayes_node">bayes_node</a> is evidence when it is inside + a <a href="containers.html#directed_graph"> directed_graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>node_value</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily obtain the value of a + <a href="#bayes_node">bayes_node</a> when it is inside a <a href="containers.html#directed_graph"> + directed_graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_node_value</name> + <file>dlib/bayes_utils.h</file> + <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file> + <description> + This is a function declared in the dlib::bayes_node_utils namespace. It + is a convenience function that allows you to easily modify the value of a + <a href="#bayes_node">bayes_node</a> when it is inside a <a href="containers.html#directed_graph"> + directed_graph</a> object. + </description> + <examples> + <example>bayes_net_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> + + diff --git a/ml/dlib/docs/docs/bayesopt_vs_lipo.svg b/ml/dlib/docs/docs/bayesopt_vs_lipo.svg new file mode 100644 index 00000000..f88f4ab5 --- /dev/null +++ b/ml/dlib/docs/docs/bayesopt_vs_lipo.svg @@ -0,0 +1,21764 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + font-size="12px" + stroke-miterlimit="10" + viewBox="0 0 851.38788 749.17297" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="bayesopt_vs_lipo.svg" + inkscape:export-filename="/home/davis/Desktop/bayesopt_vs_lipo.svg.png" + inkscape:export-xdpi="58.140362" + inkscape:export-ydpi="58.140362" + width="851.38788" + height="749.17297" + style="font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;stroke:#000000;stroke-linecap:square;stroke-miterlimit:10;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <metadata + id="metadata8336"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1855" + inkscape:window-height="1056" + id="namedview8334" + showgrid="false" + inkscape:zoom="0.83543029" + inkscape:cx="207.37356" + inkscape:cy="369.09988" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + <defs + id="defs4"> + <clipPath + id="a"> + <path + d="M 0,0 996,0 996,799 0,799 0,0 Z" + id="path7" + inkscape:connector-curvature="0" /> + </clipPath> + <font + id="b" + horiz-adv-x="60.009766" + horiz-origin-x="0" + horiz-origin-y="0" + vert-origin-x="45" + vert-origin-y="90" + vert-adv-y="90"> + <font-face + font-family="SansSerif" + ascent="92.822266" + descent="23.583984" + units-per-em="100" + id="font-face10" /> + <missing-glyph + d="M4.9844 -17.6719 L4.9844 70.5156 L54.9844 70.5156 L54.9844 -17.6719 L4.9844 -17.6719 ZM10.5938 -12.1094 L49.4219 -12.1094 L49.4219 64.8906 L10.5938 64.8906 L10.5938 -12.1094 Z" + horiz-adv-x="60.009766" + id="missing-glyph12" /> + <glyph + d="M31.7812 66.4062 Q24.1719 66.4062 20.3359 58.9141 Q16.5 51.4219 16.5 36.375 Q16.5 21.3906 20.3359 13.8906 Q24.1719 6.3906 31.7812 6.3906 Q39.4531 6.3906 43.2891 13.8906 Q47.125 21.3906 47.125 36.375 Q47.125 51.4219 43.2891 58.9141 Q39.4531 66.4062 31.7812 66.4062 ZM31.7812 74.2188 Q44.0469 74.2188 50.5156 64.5234 Q56.9844 54.8281 56.9844 36.375 Q56.9844 17.9688 50.5156 8.2734 Q44.0469 -1.4219 31.7812 -1.4219 Q19.5312 -1.4219 13.0625 8.2734 Q6.5938 17.9688 6.5938 36.375 Q6.5938 54.8281 13.0625 64.5234 Q19.5312 74.2188 31.7812 74.2188 Z" + horiz-adv-x="63.623047" + unicode="0" + id="glyph14" /> + <glyph + d="M19.1875 8.2969 L53.6094 8.2969 L53.6094 0 L7.3281 0 L7.3281 8.2969 Q12.9375 14.1094 22.6328 23.8984 Q32.3281 33.6875 34.8125 36.5312 Q39.5469 41.8438 41.4297 45.5312 Q43.3125 49.2188 43.3125 52.7812 Q43.3125 58.5938 39.2344 62.2578 Q35.1562 65.9219 28.6094 65.9219 Q23.9688 65.9219 18.8203 64.3125 Q13.6719 62.7031 7.8125 59.4219 L7.8125 69.3906 Q13.7656 71.7812 18.9453 73 Q24.125 74.2188 28.4219 74.2188 Q39.75 74.2188 46.4844 68.5547 Q53.2188 62.8906 53.2188 53.4219 Q53.2188 48.9219 51.5391 44.8984 Q49.8594 40.875 45.4062 35.4062 Q44.1875 33.9844 37.6484 27.2188 Q31.1094 20.4531 19.1875 8.2969 Z" + horiz-adv-x="63.623047" + unicode="2" + id="glyph16" /> + <glyph + d="M37.7969 64.3125 L12.8906 25.3906 L37.7969 25.3906 L37.7969 64.3125 ZM35.2031 72.9062 L47.6094 72.9062 L47.6094 25.3906 L58.0156 25.3906 L58.0156 17.1875 L47.6094 17.1875 L47.6094 0 L37.7969 0 L37.7969 17.1875 L4.8906 17.1875 L4.8906 26.7031 L35.2031 72.9062 Z" + horiz-adv-x="63.623047" + unicode="4" + id="glyph18" /> + <glyph + d="M33.0156 40.375 Q26.375 40.375 22.4922 35.8359 Q18.6094 31.2969 18.6094 23.3906 Q18.6094 15.5312 22.4922 10.9609 Q26.375 6.3906 33.0156 6.3906 Q39.6562 6.3906 43.5312 10.9609 Q47.4062 15.5312 47.4062 23.3906 Q47.4062 31.2969 43.5312 35.8359 Q39.6562 40.375 33.0156 40.375 ZM52.5938 71.2969 L52.5938 62.3125 Q48.875 64.0625 45.0938 64.9922 Q41.3125 65.9219 37.5938 65.9219 Q27.8281 65.9219 22.6797 59.3281 Q17.5312 52.7344 16.7969 39.4062 Q19.6719 43.6562 24.0234 45.9219 Q28.375 48.1875 33.5938 48.1875 Q44.5781 48.1875 50.9531 41.5234 Q57.3281 34.8594 57.3281 23.3906 Q57.3281 12.1562 50.6875 5.3672 Q44.0469 -1.4219 33.0156 -1.4219 Q20.3594 -1.4219 13.6719 8.2734 Q6.9844 17.9688 6.9844 36.375 Q6.9844 53.6562 15.1875 63.9375 Q23.3906 74.2188 37.2031 74.2188 Q40.9219 74.2188 44.7031 73.4844 Q48.4844 72.75 52.5938 71.2969 Z" + horiz-adv-x="63.623047" + unicode="6" + id="glyph20" /> + <glyph + d="M31.7812 34.625 Q24.75 34.625 20.7266 30.8594 Q16.7031 27.0938 16.7031 20.5156 Q16.7031 13.9219 20.7266 10.1562 Q24.75 6.3906 31.7812 6.3906 Q38.8125 6.3906 42.8672 10.1797 Q46.9219 13.9688 46.9219 20.5156 Q46.9219 27.0938 42.8984 30.8594 Q38.875 34.625 31.7812 34.625 ZM21.9219 38.8125 Q15.5781 40.375 12.0391 44.7266 Q8.5 49.0781 8.5 55.3281 Q8.5 64.0625 14.7266 69.1406 Q20.9531 74.2188 31.7812 74.2188 Q42.6719 74.2188 48.875 69.1406 Q55.0781 64.0625 55.0781 55.3281 Q55.0781 49.0781 51.5391 44.7266 Q48 40.375 41.7031 38.8125 Q48.8281 37.1562 52.8047 32.3203 Q56.7812 27.4844 56.7812 20.5156 Q56.7812 9.9062 50.3125 4.2422 Q43.8438 -1.4219 31.7812 -1.4219 Q19.7344 -1.4219 13.2578 4.2422 Q6.7812 9.9062 6.7812 20.5156 Q6.7812 27.4844 10.7891 32.3203 Q14.7969 37.1562 21.9219 38.8125 ZM18.3125 54.3906 Q18.3125 48.7344 21.8516 45.5625 Q25.3906 42.3906 31.7812 42.3906 Q38.1406 42.3906 41.7266 45.5625 Q45.3125 48.7344 45.3125 54.3906 Q45.3125 60.0625 41.7266 63.2344 Q38.1406 66.4062 31.7812 66.4062 Q25.3906 66.4062 21.8516 63.2344 Q18.3125 60.0625 18.3125 54.3906 Z" + horiz-adv-x="63.623047" + unicode="8" + id="glyph22" /> + <glyph + d="M12.4062 8.2969 L28.5156 8.2969 L28.5156 63.9219 L10.9844 60.4062 L10.9844 69.3906 L28.4219 72.9062 L38.2812 72.9062 L38.2812 8.2969 L54.3906 8.2969 L54.3906 0 L12.4062 0 L12.4062 8.2969 Z" + horiz-adv-x="63.623047" + unicode="1" + id="glyph24" /> + <glyph + d="M44.2812 53.0781 L44.2812 44.5781 Q40.4844 46.5312 36.3828 47.5078 Q32.2812 48.4844 27.875 48.4844 Q21.1875 48.4844 17.8438 46.4375 Q14.5 44.3906 14.5 40.2812 Q14.5 37.1562 16.8906 35.375 Q19.2812 33.5938 26.5156 31.9844 L29.5938 31.2969 Q39.1562 29.25 43.1875 25.5156 Q47.2188 21.7812 47.2188 15.0938 Q47.2188 7.4688 41.1875 3.0234 Q35.1562 -1.4219 24.6094 -1.4219 Q20.2188 -1.4219 15.4531 -0.5625 Q10.6875 0.2969 5.4219 2 L5.4219 11.2812 Q10.4062 8.6875 15.2344 7.3984 Q20.0625 6.1094 24.8125 6.1094 Q31.1562 6.1094 34.5703 8.2812 Q37.9844 10.4531 37.9844 14.4062 Q37.9844 18.0625 35.5234 20.0156 Q33.0625 21.9688 24.7031 23.7812 L21.5781 24.5156 Q13.2344 26.2656 9.5234 29.9062 Q5.8125 33.5469 5.8125 39.8906 Q5.8125 47.6094 11.2812 51.8047 Q16.75 56 26.8125 56 Q31.7812 56 36.1797 55.2734 Q40.5781 54.5469 44.2812 53.0781 Z" + horiz-adv-x="52.09961" + unicode="s" + id="glyph26" /> + <glyph + d="M9.4219 75.9844 L18.4062 75.9844 L18.4062 0 L9.4219 0 L9.4219 75.9844 Z" + horiz-adv-x="27.783203" + unicode="l" + id="glyph28" /> + <glyph + d="M34.2812 27.4844 Q23.3906 27.4844 19.1875 25 Q14.9844 22.5156 14.9844 16.5 Q14.9844 11.7188 18.1406 8.9141 Q21.2969 6.1094 26.7031 6.1094 Q34.1875 6.1094 38.7031 11.4062 Q43.2188 16.7031 43.2188 25.4844 L43.2188 27.4844 L34.2812 27.4844 ZM52.2031 31.2031 L52.2031 0 L43.2188 0 L43.2188 8.2969 Q40.1406 3.3281 35.5469 0.9531 Q30.9531 -1.4219 24.3125 -1.4219 Q15.9219 -1.4219 10.9609 3.2969 Q6 8.0156 6 15.9219 Q6 25.1406 12.1797 29.8281 Q18.3594 34.5156 30.6094 34.5156 L43.2188 34.5156 L43.2188 35.4062 Q43.2188 41.6094 39.1406 45 Q35.0625 48.3906 27.6875 48.3906 Q23 48.3906 18.5547 47.2656 Q14.1094 46.1406 10.0156 43.8906 L10.0156 52.2031 Q14.9375 54.1094 19.5781 55.0547 Q24.2188 56 28.6094 56 Q40.4844 56 46.3438 49.8516 Q52.2031 43.7031 52.2031 31.2031 Z" + horiz-adv-x="61.279297" + unicode="a" + id="glyph30" /> + <glyph + d="M64.4062 67.2812 L64.4062 56.8906 Q59.4219 61.5312 53.7812 63.8203 Q48.1406 66.1094 41.7969 66.1094 Q29.2969 66.1094 22.6562 58.4688 Q16.0156 50.8281 16.0156 36.375 Q16.0156 21.9688 22.6562 14.3281 Q29.2969 6.6875 41.7969 6.6875 Q48.1406 6.6875 53.7812 8.9844 Q59.4219 11.2812 64.4062 15.9219 L64.4062 5.6094 Q59.2344 2.0938 53.4453 0.3359 Q47.6562 -1.4219 41.2188 -1.4219 Q24.6562 -1.4219 15.1328 8.7109 Q5.6094 18.8438 5.6094 36.375 Q5.6094 53.9531 15.1328 64.0859 Q24.6562 74.2188 41.2188 74.2188 Q47.75 74.2188 53.5391 72.4844 Q59.3281 70.75 64.4062 67.2812 Z" + horiz-adv-x="69.82422" + unicode="C" + id="glyph32" /> + <glyph + d="M30.6094 48.3906 Q23.3906 48.3906 19.1875 42.75 Q14.9844 37.1094 14.9844 27.2969 Q14.9844 17.4844 19.1641 11.8438 Q23.3438 6.2031 30.6094 6.2031 Q37.7969 6.2031 41.9922 11.8672 Q46.1875 17.5312 46.1875 27.2969 Q46.1875 37.0156 41.9922 42.7031 Q37.7969 48.3906 30.6094 48.3906 ZM30.6094 56 Q42.3281 56 49.0234 48.3828 Q55.7188 40.7656 55.7188 27.2969 Q55.7188 13.875 49.0234 6.2266 Q42.3281 -1.4219 30.6094 -1.4219 Q18.8438 -1.4219 12.1797 6.2266 Q5.5156 13.875 5.5156 27.2969 Q5.5156 40.7656 12.1797 48.3828 Q18.8438 56 30.6094 56 Z" + horiz-adv-x="61.18164" + unicode="o" + id="glyph34" /> + <glyph + d="M54.8906 33.0156 L54.8906 0 L45.9062 0 L45.9062 32.7188 Q45.9062 40.4844 42.875 44.3359 Q39.8438 48.1875 33.7969 48.1875 Q26.5156 48.1875 22.3125 43.5547 Q18.1094 38.9219 18.1094 30.9062 L18.1094 0 L9.0781 0 L9.0781 54.6875 L18.1094 54.6875 L18.1094 46.1875 Q21.3438 51.125 25.7109 53.5625 Q30.0781 56 35.7969 56 Q45.2188 56 50.0547 50.1719 Q54.8906 44.3438 54.8906 33.0156 Z" + horiz-adv-x="63.378906" + unicode="n" + id="glyph36" /> + <glyph + d="M8.5 21.5781 L8.5 54.6875 L17.4844 54.6875 L17.4844 21.9219 Q17.4844 14.1562 20.5078 10.2734 Q23.5312 6.3906 29.5938 6.3906 Q36.8594 6.3906 41.0859 11.0312 Q45.3125 15.6719 45.3125 23.6875 L45.3125 54.6875 L54.2969 54.6875 L54.2969 0 L45.3125 0 L45.3125 8.4062 Q42.0469 3.4219 37.7266 1 Q33.4062 -1.4219 27.6875 -1.4219 Q18.2656 -1.4219 13.3828 4.4375 Q8.5 10.2969 8.5 21.5781 Z" + horiz-adv-x="63.378906" + unicode="u" + id="glyph38" /> + <glyph + d="M9.8125 72.9062 L51.7031 72.9062 L51.7031 64.5938 L19.6719 64.5938 L19.6719 43.1094 L48.5781 43.1094 L48.5781 34.8125 L19.6719 34.8125 L19.6719 0 L9.8125 0 L9.8125 72.9062 Z" + horiz-adv-x="57.51953" + unicode="F" + id="glyph40" /> + <glyph + d="" + horiz-adv-x="31.78711" + unicode=" " + id="glyph42" /> + <glyph + d="M2.9844 54.6875 L12.5 54.6875 L29.5938 8.7969 L46.6875 54.6875 L56.2031 54.6875 L35.6875 0 L23.4844 0 L2.9844 54.6875 Z" + horiz-adv-x="59.179688" + unicode="v" + id="glyph44" /> + <glyph + d="M9.4219 54.6875 L18.4062 54.6875 L18.4062 0 L9.4219 0 L9.4219 54.6875 ZM9.4219 75.9844 L18.4062 75.9844 L18.4062 64.5938 L9.4219 64.5938 L9.4219 75.9844 Z" + horiz-adv-x="27.783203" + unicode="i" + id="glyph46" /> + <glyph + d="M18.3125 70.2188 L18.3125 54.6875 L36.8125 54.6875 L36.8125 47.7031 L18.3125 47.7031 L18.3125 18.0156 Q18.3125 11.3281 20.1406 9.4219 Q21.9688 7.5156 27.5938 7.5156 L36.8125 7.5156 L36.8125 0 L27.5938 0 Q17.1875 0 13.2344 3.8828 Q9.2812 7.7656 9.2812 18.0156 L9.2812 47.7031 L2.6875 47.7031 L2.6875 54.6875 L9.2812 54.6875 L9.2812 70.2188 L18.3125 70.2188 Z" + horiz-adv-x="39.208984" + unicode="t" + id="glyph48" /> + <glyph + d="M48.7812 52.5938 L48.7812 44.1875 Q44.9688 46.2969 41.1406 47.3438 Q37.3125 48.3906 33.4062 48.3906 Q24.6562 48.3906 19.8203 42.8516 Q14.9844 37.3125 14.9844 27.2969 Q14.9844 17.2812 19.8203 11.7422 Q24.6562 6.2031 33.4062 6.2031 Q37.3125 6.2031 41.1406 7.25 Q44.9688 8.2969 48.7812 10.4062 L48.7812 2.0938 Q45.0156 0.3438 40.9922 -0.5391 Q36.9688 -1.4219 32.4219 -1.4219 Q20.0625 -1.4219 12.7891 6.3438 Q5.5156 14.1094 5.5156 27.2969 Q5.5156 40.6719 12.8672 48.3359 Q20.2188 56 33.0156 56 Q37.1562 56 41.1094 55.1484 Q45.0625 54.2969 48.7812 52.5938 Z" + horiz-adv-x="54.98047" + unicode="c" + id="glyph50" /> + <glyph + d="M56.2031 29.5938 L56.2031 25.2031 L14.8906 25.2031 Q15.4844 15.9219 20.4844 11.0625 Q25.4844 6.2031 34.4219 6.2031 Q39.5938 6.2031 44.4531 7.4688 Q49.3125 8.7344 54.1094 11.2812 L54.1094 2.7812 Q49.2656 0.7344 44.1875 -0.3438 Q39.1094 -1.4219 33.8906 -1.4219 Q20.7969 -1.4219 13.1562 6.1953 Q5.5156 13.8125 5.5156 26.8125 Q5.5156 40.2344 12.7656 48.1172 Q20.0156 56 32.3281 56 Q43.3594 56 49.7812 48.8984 Q56.2031 41.7969 56.2031 29.5938 ZM47.2188 32.2344 Q47.125 39.5938 43.0938 43.9922 Q39.0625 48.3906 32.4219 48.3906 Q24.9062 48.3906 20.3906 44.1406 Q15.875 39.8906 15.1875 32.1719 L47.2188 32.2344 Z" + horiz-adv-x="61.523438" + unicode="e" + id="glyph52" /> + <glyph + d="M9.4219 54.6875 L18.4062 54.6875 L18.4062 -0.9844 Q18.4062 -11.4219 14.4297 -16.1094 Q10.4531 -20.7969 1.6094 -20.7969 L-1.8125 -20.7969 L-1.8125 -13.1875 L0.5938 -13.1875 Q5.7188 -13.1875 7.5703 -10.8203 Q9.4219 -8.4531 9.4219 -0.9844 L9.4219 54.6875 ZM9.4219 75.9844 L18.4062 75.9844 L18.4062 64.5938 L9.4219 64.5938 L9.4219 75.9844 Z" + horiz-adv-x="27.783203" + unicode="j" + id="glyph54" /> + <glyph + d="M48.6875 27.2969 Q48.6875 37.2031 44.6094 42.8438 Q40.5312 48.4844 33.4062 48.4844 Q26.2656 48.4844 22.1875 42.8438 Q18.1094 37.2031 18.1094 27.2969 Q18.1094 17.3906 22.1875 11.75 Q26.2656 6.1094 33.4062 6.1094 Q40.5312 6.1094 44.6094 11.75 Q48.6875 17.3906 48.6875 27.2969 ZM18.1094 46.3906 Q20.9531 51.2656 25.2734 53.6328 Q29.5938 56 35.5938 56 Q45.5625 56 51.7891 48.0938 Q58.0156 40.1875 58.0156 27.2969 Q58.0156 14.4062 51.7891 6.4922 Q45.5625 -1.4219 35.5938 -1.4219 Q29.5938 -1.4219 25.2734 0.9531 Q20.9531 3.3281 18.1094 8.2031 L18.1094 0 L9.0781 0 L9.0781 75.9844 L18.1094 75.9844 L18.1094 46.3906 Z" + horiz-adv-x="63.476562" + unicode="b" + id="glyph56" /> + <glyph + d="M39.4062 66.2188 Q28.6562 66.2188 22.3359 58.2109 Q16.0156 50.2031 16.0156 36.375 Q16.0156 22.6094 22.3359 14.6016 Q28.6562 6.5938 39.4062 6.5938 Q50.1406 6.5938 56.4219 14.6016 Q62.7031 22.6094 62.7031 36.375 Q62.7031 50.2031 56.4219 58.2109 Q50.1406 66.2188 39.4062 66.2188 ZM39.4062 74.2188 Q54.7344 74.2188 63.9141 63.9375 Q73.0938 53.6562 73.0938 36.375 Q73.0938 19.1406 63.9141 8.8594 Q54.7344 -1.4219 39.4062 -1.4219 Q24.0312 -1.4219 14.8203 8.8359 Q5.6094 19.0938 5.6094 36.375 Q5.6094 53.6562 14.8203 63.9375 Q24.0312 74.2188 39.4062 74.2188 Z" + horiz-adv-x="78.71094" + unicode="O" + id="glyph58" /> + <glyph + d="M10.7969 72.9062 L49.5156 72.9062 L49.5156 64.5938 L19.8281 64.5938 L19.8281 46.7344 Q21.9688 47.4688 24.1172 47.8281 Q26.2656 48.1875 28.4219 48.1875 Q40.625 48.1875 47.7578 41.5 Q54.8906 34.8125 54.8906 23.3906 Q54.8906 11.625 47.5625 5.1016 Q40.2344 -1.4219 26.9062 -1.4219 Q22.3125 -1.4219 17.5547 -0.6406 Q12.7969 0.1406 7.7188 1.7031 L7.7188 11.625 Q12.1094 9.2344 16.7969 8.0625 Q21.4844 6.8906 26.7031 6.8906 Q35.1562 6.8906 40.0859 11.3281 Q45.0156 15.7656 45.0156 23.3906 Q45.0156 31 40.0859 35.4453 Q35.1562 39.8906 26.7031 39.8906 Q22.75 39.8906 18.8203 39.0156 Q14.8906 38.1406 10.7969 36.2812 L10.7969 72.9062 Z" + horiz-adv-x="63.623047" + unicode="5" + id="glyph60" /> + <glyph + d="M4.8906 31.3906 L31.2031 31.3906 L31.2031 23.3906 L4.8906 23.3906 L4.8906 31.3906 Z" + horiz-adv-x="36.083984" + unicode="-" + id="glyph62" /> + <glyph + d="M8.0156 75.875 L15.8281 75.875 Q23.1406 64.3594 26.7812 53.3203 Q30.4219 42.2812 30.4219 31.3906 Q30.4219 20.4531 26.7812 9.375 Q23.1406 -1.7031 15.8281 -13.1875 L8.0156 -13.1875 Q14.5 -2 17.7031 9.0625 Q20.9062 20.125 20.9062 31.3906 Q20.9062 42.6719 17.7031 53.6641 Q14.5 64.6562 8.0156 75.875 Z" + horiz-adv-x="39.01367" + unicode=")" + id="glyph64" /> + <glyph + d="M41.1094 46.2969 Q39.5938 47.1719 37.8125 47.5859 Q36.0312 48 33.8906 48 Q26.2656 48 22.1875 43.0469 Q18.1094 38.0938 18.1094 28.8125 L18.1094 0 L9.0781 0 L9.0781 54.6875 L18.1094 54.6875 L18.1094 46.1875 Q20.9531 51.1719 25.4922 53.5859 Q30.0312 56 36.5312 56 Q37.4531 56 38.5781 55.8828 Q39.7031 55.7656 41.0625 55.5156 L41.1094 46.2969 Z" + horiz-adv-x="41.11328" + unicode="r" + id="glyph66" /> + <glyph + d="M31 75.875 Q24.4688 64.6562 21.2891 53.6641 Q18.1094 42.6719 18.1094 31.3906 Q18.1094 20.125 21.3125 9.0625 Q24.5156 -2 31 -13.1875 L23.1875 -13.1875 Q15.875 -1.7031 12.2344 9.375 Q8.5938 20.4531 8.5938 31.3906 Q8.5938 42.2812 12.2109 53.3203 Q15.8281 64.3594 23.1875 75.875 L31 75.875 Z" + horiz-adv-x="39.01367" + unicode="(" + id="glyph68" /> + <glyph + d="M45.4062 27.9844 Q45.4062 37.75 41.3828 43.1172 Q37.3594 48.4844 30.0781 48.4844 Q22.8594 48.4844 18.8281 43.1172 Q14.7969 37.75 14.7969 27.9844 Q14.7969 18.2656 18.8281 12.8906 Q22.8594 7.5156 30.0781 7.5156 Q37.3594 7.5156 41.3828 12.8906 Q45.4062 18.2656 45.4062 27.9844 ZM54.3906 6.7812 Q54.3906 -7.1719 48.1953 -13.9844 Q42 -20.7969 29.2031 -20.7969 Q24.4688 -20.7969 20.2656 -20.0938 Q16.0625 -19.3906 12.1094 -17.9219 L12.1094 -9.1875 Q16.0625 -11.3281 19.9219 -12.3516 Q23.7812 -13.375 27.7812 -13.375 Q36.625 -13.375 41.0156 -8.7656 Q45.4062 -4.1562 45.4062 5.1719 L45.4062 9.625 Q42.625 4.7812 38.2812 2.3906 Q33.9375 0 27.875 0 Q17.8281 0 11.6719 7.6641 Q5.5156 15.3281 5.5156 27.9844 Q5.5156 40.6719 11.6719 48.3359 Q17.8281 56 27.875 56 Q33.9375 56 38.2812 53.6094 Q42.625 51.2188 45.4062 46.3906 L45.4062 54.6875 L54.3906 54.6875 L54.3906 6.7812 Z" + horiz-adv-x="63.476562" + unicode="g" + id="glyph70" /> + <glyph + d="M18.1094 8.2031 L18.1094 -20.7969 L9.0781 -20.7969 L9.0781 54.6875 L18.1094 54.6875 L18.1094 46.3906 Q20.9531 51.2656 25.2734 53.6328 Q29.5938 56 35.5938 56 Q45.5625 56 51.7891 48.0938 Q58.0156 40.1875 58.0156 27.2969 Q58.0156 14.4062 51.7891 6.4922 Q45.5625 -1.4219 35.5938 -1.4219 Q29.5938 -1.4219 25.2734 0.9531 Q20.9531 3.3281 18.1094 8.2031 ZM48.6875 27.2969 Q48.6875 37.2031 44.6094 42.8438 Q40.5312 48.4844 33.4062 48.4844 Q26.2656 48.4844 22.1875 42.8438 Q18.1094 37.2031 18.1094 27.2969 Q18.1094 17.3906 22.1875 11.75 Q26.2656 6.1094 33.4062 6.1094 Q40.5312 6.1094 44.6094 11.75 Q48.6875 17.3906 48.6875 27.2969 Z" + horiz-adv-x="63.476562" + unicode="p" + id="glyph72" /> + <glyph + d="M32.1719 -5.0781 Q28.375 -14.8438 24.7578 -17.8203 Q21.1406 -20.7969 15.0938 -20.7969 L7.9062 -20.7969 L7.9062 -13.2812 L13.1875 -13.2812 Q16.8906 -13.2812 18.9453 -11.5234 Q21 -9.7656 23.4844 -3.2188 L25.0938 0.875 L2.9844 54.6875 L12.5 54.6875 L29.5938 11.9219 L46.6875 54.6875 L56.2031 54.6875 L32.1719 -5.0781 Z" + horiz-adv-x="59.179688" + unicode="y" + id="glyph74" /> + <glyph + d="M19.6719 34.8125 L19.6719 8.1094 L35.5 8.1094 Q43.4531 8.1094 47.2891 11.4062 Q51.125 14.7031 51.125 21.4844 Q51.125 28.3281 47.2891 31.5703 Q43.4531 34.8125 35.5 34.8125 L19.6719 34.8125 ZM19.6719 64.7969 L19.6719 42.8281 L34.2812 42.8281 Q41.5 42.8281 45.0391 45.5391 Q48.5781 48.25 48.5781 53.8125 Q48.5781 59.3281 45.0391 62.0625 Q41.5 64.7969 34.2812 64.7969 L19.6719 64.7969 ZM9.8125 72.9062 L35.0156 72.9062 Q46.2969 72.9062 52.3984 68.2188 Q58.5 63.5312 58.5 54.8906 Q58.5 48.1875 55.375 44.2344 Q52.25 40.2812 46.1875 39.3125 Q53.4688 37.75 57.5 32.7891 Q61.5312 27.8281 61.5312 20.4062 Q61.5312 10.6406 54.8906 5.3203 Q48.25 0 35.9844 0 L9.8125 0 L9.8125 72.9062 Z" + horiz-adv-x="68.603516" + unicode="B" + id="glyph76" /> + <glyph + d="M44.3906 34.1875 Q47.5625 33.1094 50.5625 29.5938 Q53.5625 26.0781 56.5938 19.9219 L66.6094 0 L56 0 L46.6875 18.7031 Q43.0625 26.0312 39.6719 28.4219 Q36.2812 30.8125 30.4219 30.8125 L19.6719 30.8125 L19.6719 0 L9.8125 0 L9.8125 72.9062 L32.0781 72.9062 Q44.5781 72.9062 50.7344 67.6797 Q56.8906 62.4531 56.8906 51.9062 Q56.8906 45.0156 53.6875 40.4766 Q50.4844 35.9375 44.3906 34.1875 ZM19.6719 64.7969 L19.6719 38.9219 L32.0781 38.9219 Q39.2031 38.9219 42.8438 42.2188 Q46.4844 45.5156 46.4844 51.9062 Q46.4844 58.2969 42.8438 61.5469 Q39.2031 64.7969 32.0781 64.7969 L19.6719 64.7969 Z" + horiz-adv-x="69.48242" + unicode="R" + id="glyph78" /> + <glyph + d="M-0.2969 72.9062 L61.375 72.9062 L61.375 64.5938 L35.5 64.5938 L35.5 0 L25.5938 0 L25.5938 64.5938 L-0.2969 64.5938 L-0.2969 72.9062 Z" + horiz-adv-x="61.083984" + unicode="T" + id="glyph80" /> + <glyph + d="M46 62.7031 L46 35.5 L73.1875 35.5 L73.1875 27.2031 L46 27.2031 L46 0 L37.7969 0 L37.7969 27.2031 L10.5938 27.2031 L10.5938 35.5 L37.7969 35.5 L37.7969 62.7031 L46 62.7031 Z" + horiz-adv-x="83.78906" + unicode="+" + id="glyph82" /> + <glyph + d="M19.6719 64.7969 L19.6719 37.4062 L32.0781 37.4062 Q38.9688 37.4062 42.7266 40.9688 Q46.4844 44.5312 46.4844 51.125 Q46.4844 57.6719 42.7266 61.2344 Q38.9688 64.7969 32.0781 64.7969 L19.6719 64.7969 ZM9.8125 72.9062 L32.0781 72.9062 Q44.3438 72.9062 50.6172 67.3594 Q56.8906 61.8125 56.8906 51.125 Q56.8906 40.3281 50.6172 34.8125 Q44.3438 29.2969 32.0781 29.2969 L19.6719 29.2969 L19.6719 0 L9.8125 0 L9.8125 72.9062 Z" + horiz-adv-x="60.302734" + unicode="P" + id="glyph84" /> + <glyph + d="M9.8125 72.9062 L19.6719 72.9062 L19.6719 0 L9.8125 0 L9.8125 72.9062 Z" + horiz-adv-x="29.492188" + unicode="I" + id="glyph86" /> + <glyph + d="M9.8125 72.9062 L19.6719 72.9062 L19.6719 8.2969 L55.1719 8.2969 L55.1719 0 L9.8125 0 L9.8125 72.9062 Z" + horiz-adv-x="55.71289" + unicode="L" + id="glyph88" /> + <glyph + d="M54.8906 54.6875 L35.1094 28.0781 L55.9062 0 L45.3125 0 L29.3906 21.4844 L13.4844 0 L2.875 0 L24.125 28.6094 L4.6875 54.6875 L15.2812 54.6875 L29.7812 35.2031 L44.2812 54.6875 L54.8906 54.6875 Z" + horiz-adv-x="59.179688" + unicode="x" + id="glyph90" /> + <glyph + d="M9.8125 72.9062 L24.5156 72.9062 L43.1094 23.2969 L61.8125 72.9062 L76.5156 72.9062 L76.5156 0 L66.8906 0 L66.8906 64.0156 L48.0938 14.0156 L38.1875 14.0156 L19.3906 64.0156 L19.3906 0 L9.8125 0 L9.8125 72.9062 Z" + horiz-adv-x="86.2793" + unicode="M" + id="glyph92" /> + </font> + </defs> + <g + id="g104" + style="color-interpolation:linearRGB;fill:none;stroke:#262626;stroke-width:0.69440001;stroke-linejoin:round;color-rendering:optimizeQuality;image-rendering:optimizeQuality" + transform="translate(-61.713172,-22.902084)"> + <line + x1="129" + x2="901" + y1="711" + y2="711" + id="line106" /> + <line + x1="129" + x2="901" + y1="60" + y2="60" + id="line108" /> + <line + x1="129" + x2="129" + y1="711" + y2="703.28003" + id="line110" /> + <line + x1="206.2" + x2="206.2" + y1="711" + y2="703.28003" + id="line112" /> + <line + x1="283.39999" + x2="283.39999" + y1="711" + y2="703.28003" + id="line114" /> + <line + x1="360.60001" + x2="360.60001" + y1="711" + y2="703.28003" + id="line116" /> + <line + x1="437.79999" + x2="437.79999" + y1="711" + y2="703.28003" + id="line118" /> + <line + x1="515" + x2="515" + y1="711" + y2="703.28003" + id="line120" /> + <line + x1="592.20001" + x2="592.20001" + y1="711" + y2="703.28003" + id="line122" /> + <line + x1="669.40002" + x2="669.40002" + y1="711" + y2="703.28003" + id="line124" /> + <line + x1="746.59998" + x2="746.59998" + y1="711" + y2="703.28003" + id="line126" /> + <line + x1="823.79999" + x2="823.79999" + y1="711" + y2="703.28003" + id="line128" /> + <line + x1="901" + x2="901" + y1="711" + y2="703.28003" + id="line130" /> + <line + x1="129" + x2="129" + y1="60" + y2="67.720001" + id="line132" /> + <line + x1="206.2" + x2="206.2" + y1="60" + y2="67.720001" + id="line134" /> + <line + x1="283.39999" + x2="283.39999" + y1="60" + y2="67.720001" + id="line136" /> + <line + x1="360.60001" + x2="360.60001" + y1="60" + y2="67.720001" + id="line138" /> + <line + x1="437.79999" + x2="437.79999" + y1="60" + y2="67.720001" + id="line140" /> + <line + x1="515" + x2="515" + y1="60" + y2="67.720001" + id="line142" /> + <line + x1="592.20001" + x2="592.20001" + y1="60" + y2="67.720001" + id="line144" /> + <line + x1="669.40002" + x2="669.40002" + y1="60" + y2="67.720001" + id="line146" /> + <line + x1="746.59998" + x2="746.59998" + y1="60" + y2="67.720001" + id="line148" /> + <line + x1="823.79999" + x2="823.79999" + y1="60" + y2="67.720001" + id="line150" /> + <line + x1="901" + x2="901" + y1="60" + y2="67.720001" + id="line152" /> + </g> + <g + transform="translate(67.286828,693.65792)" + font-size="13.889px" + id="g154" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-4.5" + y="13" + xml:space="preserve" + id="text156" + style="stroke:none">0</text> + </g> + <g + transform="translate(144.48683,693.65792)" + font-size="13.889px" + id="g158" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-9" + y="13" + xml:space="preserve" + id="text160" + style="stroke:none">20</text> + </g> + <g + transform="translate(221.68683,693.65792)" + font-size="13.889px" + id="g162" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-9" + y="13" + xml:space="preserve" + id="text164" + style="stroke:none">40</text> + </g> + <g + transform="translate(298.88683,693.65792)" + font-size="13.889px" + id="g166" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-9" + y="13" + xml:space="preserve" + id="text168" + style="stroke:none">60</text> + </g> + <g + transform="translate(376.08683,693.65792)" + font-size="13.889px" + id="g170" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-9" + y="13" + xml:space="preserve" + id="text172" + style="stroke:none">80</text> + </g> + <g + transform="translate(453.28683,693.65792)" + font-size="13.889px" + id="g174" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-13.5" + y="13" + xml:space="preserve" + id="text176" + style="stroke:none">100</text> + </g> + <g + transform="translate(530.48683,693.65792)" + font-size="13.889px" + id="g178" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-13.5" + y="13" + xml:space="preserve" + id="text180" + style="stroke:none">120</text> + </g> + <g + transform="translate(607.68683,693.65792)" + font-size="13.889px" + id="g182" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-13.5" + y="13" + xml:space="preserve" + id="text184" + style="stroke:none">140</text> + </g> + <g + transform="translate(684.88683,693.65792)" + font-size="13.889px" + id="g186" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-13.5" + y="13" + xml:space="preserve" + id="text188" + style="stroke:none">160</text> + </g> + <g + transform="translate(762.08683,693.65792)" + font-size="13.889px" + id="g190" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-13.5" + y="13" + xml:space="preserve" + id="text192" + style="stroke:none">180</text> + </g> + <g + transform="translate(839.28683,693.65792)" + font-size="13.889px" + id="g194" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-13.5" + y="13" + xml:space="preserve" + id="text196" + style="stroke:none">200</text> + </g> + <g + transform="matrix(1.4,0,0,1.4,457.52116,723.72387)" + font-size="15.278px" + id="g198" + style="font-size:15.27799988px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-92.5" + y="15" + xml:space="preserve" + id="text200" + style="stroke:none">Objective Function Calls</text> + </g> + <g + id="g202" + style="color-interpolation:linearRGB;fill:none;stroke:#262626;stroke-width:0.69440001;stroke-linejoin:round;color-rendering:optimizeQuality;image-rendering:optimizeQuality" + transform="translate(-61.713172,-22.902084)"> + <line + x1="129" + x2="129" + y1="711" + y2="60" + id="line204" /> + <line + x1="901" + x2="901" + y1="711" + y2="60" + id="line206" /> + <line + x1="129" + x2="136.72" + y1="711" + y2="711" + id="line208" /> + <line + x1="129" + x2="136.72" + y1="602.5" + y2="602.5" + id="line210" /> + <line + x1="129" + x2="136.72" + y1="494" + y2="494" + id="line212" /> + <line + x1="129" + x2="136.72" + y1="385.5" + y2="385.5" + id="line214" /> + <line + x1="129" + x2="136.72" + y1="277" + y2="277" + id="line216" /> + <line + x1="129" + x2="136.72" + y1="168.5" + y2="168.5" + id="line218" /> + <line + x1="129" + x2="136.72" + y1="60" + y2="60" + id="line220" /> + <line + x1="901" + x2="893.28003" + y1="711" + y2="711" + id="line222" /> + <line + x1="901" + x2="893.28003" + y1="602.5" + y2="602.5" + id="line224" /> + <line + x1="901" + x2="893.28003" + y1="494" + y2="494" + id="line226" /> + <line + x1="901" + x2="893.28003" + y1="385.5" + y2="385.5" + id="line228" /> + <line + x1="901" + x2="893.28003" + y1="277" + y2="277" + id="line230" /> + <line + x1="901" + x2="893.28003" + y1="168.5" + y2="168.5" + id="line232" /> + <line + x1="901" + x2="893.28003" + y1="60" + y2="60" + id="line234" /> + </g> + <g + transform="translate(61.726828,688.09792)" + font-size="13.889px" + id="g236" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-23" + y="4.5" + xml:space="preserve" + id="text238" + style="stroke:none">-25</text> + </g> + <g + transform="translate(61.726828,579.59792)" + font-size="13.889px" + id="g240" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-23" + y="4.5" + xml:space="preserve" + id="text242" + style="stroke:none">-20</text> + </g> + <g + transform="translate(61.726828,471.09792)" + font-size="13.889px" + id="g244" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-23" + y="4.5" + xml:space="preserve" + id="text246" + style="stroke:none">-15</text> + </g> + <g + transform="translate(61.726828,362.59792)" + font-size="13.889px" + id="g248" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-23" + y="4.5" + xml:space="preserve" + id="text250" + style="stroke:none">-10</text> + </g> + <g + transform="translate(61.726828,254.09792)" + font-size="13.889px" + id="g252" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-14" + y="4.5" + xml:space="preserve" + id="text254" + style="stroke:none">-5</text> + </g> + <g + transform="translate(61.726828,145.59792)" + font-size="13.889px" + id="g256" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-9" + y="4.5" + xml:space="preserve" + id="text258" + style="stroke:none">0</text> + </g> + <g + transform="translate(61.726828,37.097916)" + font-size="13.889px" + id="g260" + style="font-size:13.88899994px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-9" + y="4.5" + xml:space="preserve" + id="text262" + style="stroke:none">5</text> + </g> + <g + transform="matrix(0,-1.4,1.4,0,21.850779,362.36136)" + font-size="15.278px" + id="g264" + style="font-size:15.27799988px;font-family:SansSerif;color-interpolation:linearRGB;fill:#262626;stroke:#262626;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + x="-46.5" + y="-4" + xml:space="preserve" + id="text266" + style="stroke:none">log10(error)</text> + </g> + <g + id="g268" + style="color-interpolation:linearRGB;fill:none;stroke:#0072bd;stroke-width:0.69440001;stroke-linecap:butt;stroke-linejoin:round;color-rendering:optimizeQuality;image-rendering:optimizeQuality" + transform="translate(-61.713172,-22.902084)"> + <line + x1="132.86" + x2="132.86" + y1="142.82001" + y2="146.03999" + id="line270" /> + <line + x1="136.72" + x2="136.72" + y1="144.27" + y2="148.81" + id="line272" /> + <line + x1="140.58" + x2="140.58" + y1="145.39" + y2="150.25999" + id="line274" /> + <line + x1="144.44" + x2="144.44" + y1="146.08" + y2="150.97" + id="line276" /> + <line + x1="148.3" + x2="148.3" + y1="148.57001" + y2="154.34" + id="line278" /> + <line + x1="152.16" + x2="152.16" + y1="150.59" + y2="157.13" + id="line280" /> + <line + x1="156.02" + x2="156.02" + y1="152.22" + y2="159.89" + id="line282" /> + <line + x1="159.88" + x2="159.88" + y1="153.5" + y2="161.96001" + id="line284" /> + <line + x1="163.74001" + x2="163.74001" + y1="154.61" + y2="163" + id="line286" /> + <line + x1="167.60001" + x2="167.60001" + y1="156.24001" + y2="164.75" + id="line288" /> + <line + x1="171.46001" + x2="171.46001" + y1="157.73" + y2="168.07001" + id="line290" /> + <line + x1="175.32001" + x2="175.32001" + y1="159.7" + y2="173.07001" + id="line292" /> + <line + x1="179.17999" + x2="179.17999" + y1="160.50999" + y2="174.87" + id="line294" /> + <line + x1="183.03999" + x2="183.03999" + y1="163.69" + y2="181.61" + id="line296" /> + <line + x1="186.89999" + x2="186.89999" + y1="164.77" + y2="184.14999" + id="line298" /> + <line + x1="190.75999" + x2="190.75999" + y1="165.33" + y2="185.16" + id="line300" /> + <line + x1="194.62" + x2="194.62" + y1="167.74001" + y2="189.62" + id="line302" /> + <line + x1="198.48" + x2="198.48" + y1="169.56" + y2="192.58" + id="line304" /> + <line + x1="202.34" + x2="202.34" + y1="171.05" + y2="194.96001" + id="line306" /> + <line + x1="206.2" + x2="206.2" + y1="172.45" + y2="197.52" + id="line308" /> + <line + x1="210.06" + x2="210.06" + y1="173.88" + y2="199.48" + id="line310" /> + <line + x1="213.92" + x2="213.92" + y1="175.59" + y2="201.78999" + id="line312" /> + <line + x1="217.78" + x2="217.78" + y1="176.39999" + y2="203.11" + id="line314" /> + <line + x1="221.64" + x2="221.64" + y1="177.53" + y2="204.62" + id="line316" /> + <line + x1="225.5" + x2="225.5" + y1="178.8" + y2="206.14999" + id="line318" /> + <line + x1="229.36" + x2="229.36" + y1="180.16" + y2="208.2" + id="line320" /> + <line + x1="233.22" + x2="233.22" + y1="181.88" + y2="210.75999" + id="line322" /> + <line + x1="237.08" + x2="237.08" + y1="182.63" + y2="211.98" + id="line324" /> + <line + x1="240.94" + x2="240.94" + y1="183.14" + y2="212.58" + id="line326" /> + <line + x1="244.8" + x2="244.8" + y1="184.63" + y2="215.27" + id="line328" /> + <line + x1="248.66" + x2="248.66" + y1="184.88" + y2="215.47" + id="line330" /> + <line + x1="252.52" + x2="252.52" + y1="186.25" + y2="217.02" + id="line332" /> + <line + x1="256.38" + x2="256.38" + y1="186.67" + y2="217.32001" + id="line334" /> + <line + x1="260.23999" + x2="260.23999" + y1="188.10001" + y2="219.46001" + id="line336" /> + <line + x1="264.10001" + x2="264.10001" + y1="188.64" + y2="220.25" + id="line338" /> + <line + x1="267.95999" + x2="267.95999" + y1="189.31" + y2="221.00999" + id="line340" /> + <line + x1="271.82001" + x2="271.82001" + y1="190.28999" + y2="222.24001" + id="line342" /> + <line + x1="275.67999" + x2="275.67999" + y1="190.78999" + y2="222.88" + id="line344" /> + <line + x1="279.54001" + x2="279.54001" + y1="191.35001" + y2="223.67999" + id="line346" /> + <line + x1="283.39999" + x2="283.39999" + y1="192.45" + y2="225.22" + id="line348" /> + <line + x1="287.26001" + x2="287.26001" + y1="193.13" + y2="225.98" + id="line350" /> + <line + x1="291.12" + x2="291.12" + y1="193.41" + y2="226.28" + id="line352" /> + <line + x1="294.98001" + x2="294.98001" + y1="194.50999" + y2="227.75999" + id="line354" /> + <line + x1="298.84" + x2="298.84" + y1="195.41" + y2="229.67999" + id="line356" /> + <line + x1="302.70001" + x2="302.70001" + y1="196.25" + y2="230.66" + id="line358" /> + <line + x1="306.56" + x2="306.56" + y1="196.58" + y2="231.03999" + id="line360" /> + <line + x1="310.42001" + x2="310.42001" + y1="197.64999" + y2="232.46001" + id="line362" /> + <line + x1="314.28" + x2="314.28" + y1="198.78" + y2="234.16" + id="line364" /> + <line + x1="318.14001" + x2="318.14001" + y1="198.82001" + y2="234.14999" + id="line366" /> + <line + x1="322" + x2="322" + y1="199.03" + y2="234.52" + id="line368" /> + <line + x1="325.85999" + x2="325.85999" + y1="199.34" + y2="235.02" + id="line370" /> + <line + x1="329.72" + x2="329.72" + y1="199.39999" + y2="235.00999" + id="line372" /> + <line + x1="333.57999" + x2="333.57999" + y1="199.75999" + y2="235.69" + id="line374" /> + <line + x1="337.44" + x2="337.44" + y1="200.52" + y2="236.47" + id="line376" /> + <line + x1="341.29999" + x2="341.29999" + y1="200.95" + y2="237.24001" + id="line378" /> + <line + x1="345.16" + x2="345.16" + y1="201.02" + y2="237.24001" + id="line380" /> + <line + x1="349.01999" + x2="349.01999" + y1="201.03999" + y2="237.24001" + id="line382" /> + <line + x1="352.88" + x2="352.88" + y1="201.28999" + y2="237.38" + id="line384" /> + <line + x1="356.73999" + x2="356.73999" + y1="201.3" + y2="237.39" + id="line386" /> + <line + x1="360.60001" + x2="360.60001" + y1="201.59" + y2="237.84" + id="line388" /> + <line + x1="364.45999" + x2="364.45999" + y1="201.88" + y2="238.41" + id="line390" /> + <line + x1="368.32001" + x2="368.32001" + y1="202.71001" + y2="239.53999" + id="line392" /> + <line + x1="372.17999" + x2="372.17999" + y1="202.82001" + y2="239.53" + id="line394" /> + <line + x1="376.04001" + x2="376.04001" + y1="203.14" + y2="239.78" + id="line396" /> + <line + x1="379.89999" + x2="379.89999" + y1="203.44" + y2="239.71001" + id="line398" /> + <line + x1="383.76001" + x2="383.76001" + y1="203.45" + y2="239.71001" + id="line400" /> + <line + x1="387.62" + x2="387.62" + y1="203.63" + y2="239.78" + id="line402" /> + <line + x1="391.48001" + x2="391.48001" + y1="203.66" + y2="239.78" + id="line404" /> + <line + x1="395.34" + x2="395.34" + y1="204.66" + y2="241.17999" + id="line406" /> + <line + x1="399.20001" + x2="399.20001" + y1="205.13" + y2="241.73" + id="line408" /> + <line + x1="403.06" + x2="403.06" + y1="205.14999" + y2="241.72" + id="line410" /> + <line + x1="406.92001" + x2="406.92001" + y1="205.67" + y2="242.13" + id="line412" /> + <line + x1="410.78" + x2="410.78" + y1="205.78999" + y2="242.31" + id="line414" /> + <line + x1="414.64001" + x2="414.64001" + y1="206.17999" + y2="242.71001" + id="line416" /> + <line + x1="418.5" + x2="418.5" + y1="206.37" + y2="242.81" + id="line418" /> + <line + x1="422.35999" + x2="422.35999" + y1="206.57001" + y2="242.86" + id="line420" /> + <line + x1="426.22" + x2="426.22" + y1="206.8" + y2="243.19" + id="line422" /> + <line + x1="430.07999" + x2="430.07999" + y1="207.03999" + y2="243.48" + id="line424" /> + <line + x1="433.94" + x2="433.94" + y1="208.05" + y2="244.58" + id="line426" /> + <line + x1="437.79999" + x2="437.79999" + y1="208.05" + y2="244.58" + id="line428" /> + <line + x1="441.66" + x2="441.66" + y1="208.27" + y2="244.87" + id="line430" /> + <line + x1="445.51999" + x2="445.51999" + y1="208.53" + y2="245.28999" + id="line432" /> + <line + x1="449.38" + x2="449.38" + y1="208.53" + y2="245.28999" + id="line434" /> + <line + x1="453.23999" + x2="453.23999" + y1="208.61" + y2="245.28" + id="line436" /> + <line + x1="457.10001" + x2="457.10001" + y1="208.64999" + y2="245.28" + id="line438" /> + <line + x1="460.95999" + x2="460.95999" + y1="208.66" + y2="245.28" + id="line440" /> + <line + x1="464.82001" + x2="464.82001" + y1="208.78" + y2="245.39" + id="line442" /> + <line + x1="468.67999" + x2="468.67999" + y1="208.78" + y2="245.38" + id="line444" /> + <line + x1="472.54001" + x2="472.54001" + y1="208.8" + y2="245.38" + id="line446" /> + <line + x1="476.39999" + x2="476.39999" + y1="208.86" + y2="245.42999" + id="line448" /> + <line + x1="480.26001" + x2="480.26001" + y1="208.92" + y2="245.41" + id="line450" /> + <line + x1="484.12" + x2="484.12" + y1="208.97" + y2="245.39" + id="line452" /> + <line + x1="487.98001" + x2="487.98001" + y1="209.00999" + y2="245.39" + id="line454" /> + <line + x1="491.84" + x2="491.84" + y1="209.42999" + y2="245.55" + id="line456" /> + <line + x1="495.70001" + x2="495.70001" + y1="209.61" + y2="245.63" + id="line458" /> + <line + x1="499.56" + x2="499.56" + y1="209.74001" + y2="245.8" + id="line460" /> + <line + x1="503.42001" + x2="503.42001" + y1="209.74001" + y2="245.8" + id="line462" /> + <line + x1="507.28" + x2="507.28" + y1="210.07001" + y2="246.09" + id="line464" /> + <line + x1="511.14001" + x2="511.14001" + y1="210.23" + y2="246.24001" + id="line466" /> + <line + x1="515" + x2="515" + y1="210.44" + y2="246.38" + id="line468" /> + <line + x1="518.85999" + x2="518.85999" + y1="210.44" + y2="246.38" + id="line470" /> + <line + x1="522.71997" + x2="522.71997" + y1="210.46001" + y2="246.37" + id="line472" /> + <line + x1="526.58002" + x2="526.58002" + y1="210.49001" + y2="246.36" + id="line474" /> + <line + x1="530.44" + x2="530.44" + y1="210.53999" + y2="246.35001" + id="line476" /> + <line + x1="534.29999" + x2="534.29999" + y1="210.63" + y2="246.33" + id="line478" /> + <line + x1="538.15997" + x2="538.15997" + y1="210.8" + y2="246.33" + id="line480" /> + <line + x1="542.02002" + x2="542.02002" + y1="210.86" + y2="246.32001" + id="line482" /> + <line + x1="545.88" + x2="545.88" + y1="211" + y2="246.28" + id="line484" /> + <line + x1="549.73999" + x2="549.73999" + y1="211.28" + y2="246.24001" + id="line486" /> + <line + x1="553.59998" + x2="553.59998" + y1="211.77" + y2="246.39999" + id="line488" /> + <line + x1="557.46002" + x2="557.46002" + y1="212.42999" + y2="247.49001" + id="line490" /> + <line + x1="561.32001" + x2="561.32001" + y1="212.42999" + y2="247.49001" + id="line492" /> + <line + x1="565.17999" + x2="565.17999" + y1="212.42999" + y2="247.49001" + id="line494" /> + <line + x1="569.03998" + x2="569.03998" + y1="212.58" + y2="247.44" + id="line496" /> + <line + x1="572.90002" + x2="572.90002" + y1="213.10001" + y2="247.81" + id="line498" /> + <line + x1="576.76001" + x2="576.76001" + y1="213.87" + y2="248.67999" + id="line500" /> + <line + x1="580.62" + x2="580.62" + y1="214.05" + y2="248.8" + id="line502" /> + <line + x1="584.47998" + x2="584.47998" + y1="214.05" + y2="248.8" + id="line504" /> + <line + x1="588.34003" + x2="588.34003" + y1="214.14999" + y2="248.78" + id="line506" /> + <line + x1="592.20001" + x2="592.20001" + y1="214.47" + y2="248.87" + id="line508" /> + <line + x1="596.06" + x2="596.06" + y1="214.96001" + y2="249.28" + id="line510" /> + <line + x1="599.91998" + x2="599.91998" + y1="215.24001" + y2="249.21001" + id="line512" /> + <line + x1="603.78003" + x2="603.78003" + y1="215.27" + y2="249.21001" + id="line514" /> + <line + x1="607.64001" + x2="607.64001" + y1="215.5" + y2="249.32001" + id="line516" /> + <line + x1="611.5" + x2="611.5" + y1="215.62" + y2="249.52" + id="line518" /> + <line + x1="615.35999" + x2="615.35999" + y1="216.12" + y2="249.74001" + id="line520" /> + <line + x1="619.21997" + x2="619.21997" + y1="216.35001" + y2="249.92999" + id="line522" /> + <line + x1="623.08002" + x2="623.08002" + y1="216.44" + y2="249.92" + id="line524" /> + <line + x1="626.94" + x2="626.94" + y1="216.44" + y2="249.92" + id="line526" /> + <line + x1="630.79999" + x2="630.79999" + y1="216.69" + y2="250.39" + id="line528" /> + <line + x1="634.65997" + x2="634.65997" + y1="216.73" + y2="250.44" + id="line530" /> + <line + x1="638.52002" + x2="638.52002" + y1="216.75999" + y2="250.44" + id="line532" /> + <line + x1="642.38" + x2="642.38" + y1="216.78999" + y2="250.42999" + id="line534" /> + <line + x1="646.23999" + x2="646.23999" + y1="216.8" + y2="250.42999" + id="line536" /> + <line + x1="650.09998" + x2="650.09998" + y1="216.86" + y2="250.39" + id="line538" /> + <line + x1="653.96002" + x2="653.96002" + y1="217.05" + y2="250.34" + id="line540" /> + <line + x1="657.82001" + x2="657.82001" + y1="217.08" + y2="250.33" + id="line542" /> + <line + x1="661.67999" + x2="661.67999" + y1="217.17" + y2="250.36" + id="line544" /> + <line + x1="665.53998" + x2="665.53998" + y1="217.25999" + y2="250.35001" + id="line546" /> + <line + x1="669.40002" + x2="669.40002" + y1="217.71001" + y2="251.03" + id="line548" /> + <line + x1="673.26001" + x2="673.26001" + y1="217.78" + y2="251.03" + id="line550" /> + <line + x1="677.12" + x2="677.12" + y1="218.02" + y2="251.14999" + id="line552" /> + <line + x1="680.97998" + x2="680.97998" + y1="218.31" + y2="251.14999" + id="line554" /> + <line + x1="684.84003" + x2="684.84003" + y1="218.31" + y2="251.14999" + id="line556" /> + <line + x1="688.70001" + x2="688.70001" + y1="218.31" + y2="251.14999" + id="line558" /> + <line + x1="692.56" + x2="692.56" + y1="218.35001" + y2="251.14999" + id="line560" /> + <line + x1="696.41998" + x2="696.41998" + y1="218.36" + y2="251.14" + id="line562" /> + <line + x1="700.28003" + x2="700.28003" + y1="218.41" + y2="251.12" + id="line564" /> + <line + x1="704.14001" + x2="704.14001" + y1="218.41" + y2="251.12" + id="line566" /> + <line + x1="708" + x2="708" + y1="218.64999" + y2="251.12" + id="line568" /> + <line + x1="711.85999" + x2="711.85999" + y1="218.85001" + y2="251.45" + id="line570" /> + <line + x1="715.71997" + x2="715.71997" + y1="219.32001" + y2="251.62" + id="line572" /> + <line + x1="719.58002" + x2="719.58002" + y1="219.44" + y2="251.64" + id="line574" /> + <line + x1="723.44" + x2="723.44" + y1="219.50999" + y2="251.71001" + id="line576" /> + <line + x1="727.29999" + x2="727.29999" + y1="219.50999" + y2="251.71001" + id="line578" /> + <line + x1="731.15997" + x2="731.15997" + y1="219.58" + y2="251.78999" + id="line580" /> + <line + x1="735.02002" + x2="735.02002" + y1="219.58" + y2="251.78999" + id="line582" /> + <line + x1="738.88" + x2="738.88" + y1="219.59" + y2="251.78999" + id="line584" /> + <line + x1="742.73999" + x2="742.73999" + y1="219.59" + y2="251.78999" + id="line586" /> + <line + x1="746.59998" + x2="746.59998" + y1="219.78" + y2="252.14" + id="line588" /> + <line + x1="750.46002" + x2="750.46002" + y1="220.33" + y2="252.13" + id="line590" /> + <line + x1="754.32001" + x2="754.32001" + y1="220.39999" + y2="252.22" + id="line592" /> + <line + x1="758.17999" + x2="758.17999" + y1="220.56" + y2="252.12" + id="line594" /> + <line + x1="762.03998" + x2="762.03998" + y1="220.83" + y2="252.06" + id="line596" /> + <line + x1="765.90002" + x2="765.90002" + y1="220.84" + y2="252.05" + id="line598" /> + <line + x1="769.76001" + x2="769.76001" + y1="220.88" + y2="252.03" + id="line600" /> + <line + x1="773.62" + x2="773.62" + y1="220.88" + y2="252.03" + id="line602" /> + <line + x1="777.47998" + x2="777.47998" + y1="220.88" + y2="252.03" + id="line604" /> + <line + x1="781.34003" + x2="781.34003" + y1="221.03" + y2="251.98" + id="line606" /> + <line + x1="785.20001" + x2="785.20001" + y1="221.41" + y2="252.03999" + id="line608" /> + <line + x1="789.06" + x2="789.06" + y1="221.42" + y2="252.03" + id="line610" /> + <line + x1="792.91998" + x2="792.91998" + y1="221.66" + y2="252.14999" + id="line612" /> + <line + x1="796.78003" + x2="796.78003" + y1="221.66" + y2="252.14999" + id="line614" /> + <line + x1="800.64001" + x2="800.64001" + y1="221.67" + y2="252.16" + id="line616" /> + <line + x1="804.5" + x2="804.5" + y1="221.67999" + y2="252.16" + id="line618" /> + <line + x1="808.35999" + x2="808.35999" + y1="221.69" + y2="252.14999" + id="line620" /> + <line + x1="812.21997" + x2="812.21997" + y1="221.75" + y2="252.09" + id="line622" /> + <line + x1="816.08002" + x2="816.08002" + y1="221.75" + y2="252.09" + id="line624" /> + <line + x1="819.94" + x2="819.94" + y1="221.75" + y2="252.09" + id="line626" /> + <line + x1="823.79999" + x2="823.79999" + y1="222.03" + y2="252.25999" + id="line628" /> + <line + x1="827.65997" + x2="827.65997" + y1="222.03" + y2="252.25999" + id="line630" /> + <line + x1="831.52002" + x2="831.52002" + y1="222.16" + y2="252.23" + id="line632" /> + <line + x1="835.38" + x2="835.38" + y1="222.48" + y2="252.72" + id="line634" /> + <line + x1="839.23999" + x2="839.23999" + y1="222.48" + y2="252.72" + id="line636" /> + <line + x1="843.09998" + x2="843.09998" + y1="222.48" + y2="252.72" + id="line638" /> + <line + x1="846.96002" + x2="846.96002" + y1="222.59" + y2="252.87" + id="line640" /> + <line + x1="850.82001" + x2="850.82001" + y1="222.60001" + y2="252.89" + id="line642" /> + <line + x1="854.67999" + x2="854.67999" + y1="222.77" + y2="252.89999" + id="line644" /> + <line + x1="858.53998" + x2="858.53998" + y1="222.77" + y2="252.89999" + id="line646" /> + <line + x1="862.40002" + x2="862.40002" + y1="222.85001" + y2="252.83" + id="line648" /> + <line + x1="866.26001" + x2="866.26001" + y1="222.85001" + y2="252.83" + id="line650" /> + <line + x1="870.12" + x2="870.12" + y1="222.95" + y2="252.98" + id="line652" /> + <line + x1="873.97998" + x2="873.97998" + y1="223.05" + y2="252.87" + id="line654" /> + <line + x1="877.84003" + x2="877.84003" + y1="223.28999" + y2="252.89999" + id="line656" /> + <line + x1="881.70001" + x2="881.70001" + y1="223.28999" + y2="252.89999" + id="line658" /> + <line + x1="885.56" + x2="885.56" + y1="223.37" + y2="252.88" + id="line660" /> + <line + x1="889.41998" + x2="889.41998" + y1="223.5" + y2="253.06" + id="line662" /> + <line + x1="893.28003" + x2="893.28003" + y1="223.8" + y2="253.46001" + id="line664" /> + <line + x1="897.14001" + x2="897.14001" + y1="223.8" + y2="253.46001" + id="line666" /> + <line + x1="901" + x2="901" + y1="223.81" + y2="253.46001" + id="line668" /> + <line + x1="132.86" + x2="132.86" + y1="142.82001" + y2="139.60001" + id="line670" /> + <line + x1="136.72" + x2="136.72" + y1="144.27" + y2="139.74001" + id="line672" /> + <line + x1="140.58" + x2="140.58" + y1="145.39" + y2="140.52" + id="line674" /> + <line + x1="144.44" + x2="144.44" + y1="146.08" + y2="141.2" + id="line676" /> + <line + x1="148.3" + x2="148.3" + y1="148.57001" + y2="142.8" + id="line678" /> + <line + x1="152.16" + x2="152.16" + y1="150.59" + y2="144.06" + id="line680" /> + <line + x1="156.02" + x2="156.02" + y1="152.22" + y2="144.55" + id="line682" /> + <line + x1="159.88" + x2="159.88" + y1="153.5" + y2="145.03" + id="line684" /> + <line + x1="163.74001" + x2="163.74001" + y1="154.61" + y2="146.23" + id="line686" /> + <line + x1="167.60001" + x2="167.60001" + y1="156.24001" + y2="147.73" + id="line688" /> + <line + x1="171.46001" + x2="171.46001" + y1="157.73" + y2="147.39" + id="line690" /> + <line + x1="175.32001" + x2="175.32001" + y1="159.7" + y2="146.32001" + id="line692" /> + <line + x1="179.17999" + x2="179.17999" + y1="160.50999" + y2="146.16" + id="line694" /> + <line + x1="183.03999" + x2="183.03999" + y1="163.69" + y2="145.75999" + id="line696" /> + <line + x1="186.89999" + x2="186.89999" + y1="164.77" + y2="145.39" + id="line698" /> + <line + x1="190.75999" + x2="190.75999" + y1="165.33" + y2="145.49001" + id="line700" /> + <line + x1="194.62" + x2="194.62" + y1="167.74001" + y2="145.86" + id="line702" /> + <line + x1="198.48" + x2="198.48" + y1="169.56" + y2="146.53" + id="line704" /> + <line + x1="202.34" + x2="202.34" + y1="171.05" + y2="147.14999" + id="line706" /> + <line + x1="206.2" + x2="206.2" + y1="172.45" + y2="147.38" + id="line708" /> + <line + x1="210.06" + x2="210.06" + y1="173.88" + y2="148.27" + id="line710" /> + <line + x1="213.92" + x2="213.92" + y1="175.59" + y2="149.38" + id="line712" /> + <line + x1="217.78" + x2="217.78" + y1="176.39999" + y2="149.67999" + id="line714" /> + <line + x1="221.64" + x2="221.64" + y1="177.53" + y2="150.45" + id="line716" /> + <line + x1="225.5" + x2="225.5" + y1="178.8" + y2="151.46001" + id="line718" /> + <line + x1="229.36" + x2="229.36" + y1="180.16" + y2="152.12" + id="line720" /> + <line + x1="233.22" + x2="233.22" + y1="181.88" + y2="153.00999" + id="line722" /> + <line + x1="237.08" + x2="237.08" + y1="182.63" + y2="153.28999" + id="line724" /> + <line + x1="240.94" + x2="240.94" + y1="183.14" + y2="153.69" + id="line726" /> + <line + x1="244.8" + x2="244.8" + y1="184.63" + y2="153.99001" + id="line728" /> + <line + x1="248.66" + x2="248.66" + y1="184.88" + y2="154.28999" + id="line730" /> + <line + x1="252.52" + x2="252.52" + y1="186.25" + y2="155.48" + id="line732" /> + <line + x1="256.38" + x2="256.38" + y1="186.67" + y2="156.03" + id="line734" /> + <line + x1="260.23999" + x2="260.23999" + y1="188.10001" + y2="156.74001" + id="line736" /> + <line + x1="264.10001" + x2="264.10001" + y1="188.64" + y2="157.03" + id="line738" /> + <line + x1="267.95999" + x2="267.95999" + y1="189.31" + y2="157.61" + id="line740" /> + <line + x1="271.82001" + x2="271.82001" + y1="190.28999" + y2="158.35001" + id="line742" /> + <line + x1="275.67999" + x2="275.67999" + y1="190.78999" + y2="158.69" + id="line744" /> + <line + x1="279.54001" + x2="279.54001" + y1="191.35001" + y2="159.03" + id="line746" /> + <line + x1="283.39999" + x2="283.39999" + y1="192.45" + y2="159.67" + id="line748" /> + <line + x1="287.26001" + x2="287.26001" + y1="193.13" + y2="160.27" + id="line750" /> + <line + x1="291.12" + x2="291.12" + y1="193.41" + y2="160.53999" + id="line752" /> + <line + x1="294.98001" + x2="294.98001" + y1="194.50999" + y2="161.25999" + id="line754" /> + <line + x1="298.84" + x2="298.84" + y1="195.41" + y2="161.13" + id="line756" /> + <line + x1="302.70001" + x2="302.70001" + y1="196.25" + y2="161.85001" + id="line758" /> + <line + x1="306.56" + x2="306.56" + y1="196.58" + y2="162.12" + id="line760" /> + <line + x1="310.42001" + x2="310.42001" + y1="197.64999" + y2="162.83" + id="line762" /> + <line + x1="314.28" + x2="314.28" + y1="198.78" + y2="163.41" + id="line764" /> + <line + x1="318.14001" + x2="318.14001" + y1="198.82001" + y2="163.48" + id="line766" /> + <line + x1="322" + x2="322" + y1="199.03" + y2="163.55" + id="line768" /> + <line + x1="325.85999" + x2="325.85999" + y1="199.34" + y2="163.67" + id="line770" /> + <line + x1="329.72" + x2="329.72" + y1="199.39999" + y2="163.8" + id="line772" /> + <line + x1="333.57999" + x2="333.57999" + y1="199.75999" + y2="163.83" + id="line774" /> + <line + x1="337.44" + x2="337.44" + y1="200.52" + y2="164.57001" + id="line776" /> + <line + x1="341.29999" + x2="341.29999" + y1="200.95" + y2="164.66" + id="line778" /> + <line + x1="345.16" + x2="345.16" + y1="201.02" + y2="164.8" + id="line780" /> + <line + x1="349.01999" + x2="349.01999" + y1="201.03999" + y2="164.85001" + id="line782" /> + <line + x1="352.88" + x2="352.88" + y1="201.28999" + y2="165.2" + id="line784" /> + <line + x1="356.73999" + x2="356.73999" + y1="201.3" + y2="165.21001" + id="line786" /> + <line + x1="360.60001" + x2="360.60001" + y1="201.59" + y2="165.34" + id="line788" /> + <line + x1="364.45999" + x2="364.45999" + y1="201.88" + y2="165.35001" + id="line790" /> + <line + x1="368.32001" + x2="368.32001" + y1="202.71001" + y2="165.87" + id="line792" /> + <line + x1="372.17999" + x2="372.17999" + y1="202.82001" + y2="166.11" + id="line794" /> + <line + x1="376.04001" + x2="376.04001" + y1="203.14" + y2="166.5" + id="line796" /> + <line + x1="379.89999" + x2="379.89999" + y1="203.44" + y2="167.17999" + id="line798" /> + <line + x1="383.76001" + x2="383.76001" + y1="203.45" + y2="167.19" + id="line800" /> + <line + x1="387.62" + x2="387.62" + y1="203.63" + y2="167.48" + id="line802" /> + <line + x1="391.48001" + x2="391.48001" + y1="203.66" + y2="167.53999" + id="line804" /> + <line + x1="395.34" + x2="395.34" + y1="204.66" + y2="168.13" + id="line806" /> + <line + x1="399.20001" + x2="399.20001" + y1="205.13" + y2="168.53" + id="line808" /> + <line + x1="403.06" + x2="403.06" + y1="205.14999" + y2="168.58" + id="line810" /> + <line + x1="406.92001" + x2="406.92001" + y1="205.67" + y2="169.21001" + id="line812" /> + <line + x1="410.78" + x2="410.78" + y1="205.78999" + y2="169.27" + id="line814" /> + <line + x1="414.64001" + x2="414.64001" + y1="206.17999" + y2="169.66" + id="line816" /> + <line + x1="418.5" + x2="418.5" + y1="206.37" + y2="169.94" + id="line818" /> + <line + x1="422.35999" + x2="422.35999" + y1="206.57001" + y2="170.28" + id="line820" /> + <line + x1="426.22" + x2="426.22" + y1="206.8" + y2="170.39999" + id="line822" /> + <line + x1="430.07999" + x2="430.07999" + y1="207.03999" + y2="170.60001" + id="line824" /> + <line + x1="433.94" + x2="433.94" + y1="208.05" + y2="171.52" + id="line826" /> + <line + x1="437.79999" + x2="437.79999" + y1="208.05" + y2="171.52" + id="line828" /> + <line + x1="441.66" + x2="441.66" + y1="208.27" + y2="171.66" + id="line830" /> + <line + x1="445.51999" + x2="445.51999" + y1="208.53" + y2="171.75999" + id="line832" /> + <line + x1="449.38" + x2="449.38" + y1="208.53" + y2="171.75999" + id="line834" /> + <line + x1="453.23999" + x2="453.23999" + y1="208.61" + y2="171.92999" + id="line836" /> + <line + x1="457.10001" + x2="457.10001" + y1="208.64999" + y2="172.02" + id="line838" /> + <line + x1="460.95999" + x2="460.95999" + y1="208.66" + y2="172.03999" + id="line840" /> + <line + x1="464.82001" + x2="464.82001" + y1="208.78" + y2="172.17" + id="line842" /> + <line + x1="468.67999" + x2="468.67999" + y1="208.78" + y2="172.17999" + id="line844" /> + <line + x1="472.54001" + x2="472.54001" + y1="208.8" + y2="172.22" + id="line846" /> + <line + x1="476.39999" + x2="476.39999" + y1="208.86" + y2="172.3" + id="line848" /> + <line + x1="480.26001" + x2="480.26001" + y1="208.92" + y2="172.42999" + id="line850" /> + <line + x1="484.12" + x2="484.12" + y1="208.97" + y2="172.55" + id="line852" /> + <line + x1="487.98001" + x2="487.98001" + y1="209.00999" + y2="172.63" + id="line854" /> + <line + x1="491.84" + x2="491.84" + y1="209.42999" + y2="173.31" + id="line856" /> + <line + x1="495.70001" + x2="495.70001" + y1="209.61" + y2="173.59" + id="line858" /> + <line + x1="499.56" + x2="499.56" + y1="209.74001" + y2="173.67" + id="line860" /> + <line + x1="503.42001" + x2="503.42001" + y1="209.74001" + y2="173.67" + id="line862" /> + <line + x1="507.28" + x2="507.28" + y1="210.07001" + y2="174.06" + id="line864" /> + <line + x1="511.14001" + x2="511.14001" + y1="210.23" + y2="174.21001" + id="line866" /> + <line + x1="515" + x2="515" + y1="210.44" + y2="174.5" + id="line868" /> + <line + x1="518.85999" + x2="518.85999" + y1="210.44" + y2="174.5" + id="line870" /> + <line + x1="522.71997" + x2="522.71997" + y1="210.46001" + y2="174.55" + id="line872" /> + <line + x1="526.58002" + x2="526.58002" + y1="210.49001" + y2="174.61" + id="line874" /> + <line + x1="530.44" + x2="530.44" + y1="210.53999" + y2="174.73" + id="line876" /> + <line + x1="534.29999" + x2="534.29999" + y1="210.63" + y2="174.92999" + id="line878" /> + <line + x1="538.15997" + x2="538.15997" + y1="210.8" + y2="175.25999" + id="line880" /> + <line + x1="542.02002" + x2="542.02002" + y1="210.86" + y2="175.39" + id="line882" /> + <line + x1="545.88" + x2="545.88" + y1="211" + y2="175.72" + id="line884" /> + <line + x1="549.73999" + x2="549.73999" + y1="211.28" + y2="176.33" + id="line886" /> + <line + x1="553.59998" + x2="553.59998" + y1="211.77" + y2="177.14" + id="line888" /> + <line + x1="557.46002" + x2="557.46002" + y1="212.42999" + y2="177.37" + id="line890" /> + <line + x1="561.32001" + x2="561.32001" + y1="212.42999" + y2="177.37" + id="line892" /> + <line + x1="565.17999" + x2="565.17999" + y1="212.42999" + y2="177.37" + id="line894" /> + <line + x1="569.03998" + x2="569.03998" + y1="212.58" + y2="177.73" + id="line896" /> + <line + x1="572.90002" + x2="572.90002" + y1="213.10001" + y2="178.38" + id="line898" /> + <line + x1="576.76001" + x2="576.76001" + y1="213.87" + y2="179.06" + id="line900" /> + <line + x1="580.62" + x2="580.62" + y1="214.05" + y2="179.28999" + id="line902" /> + <line + x1="584.47998" + x2="584.47998" + y1="214.05" + y2="179.28999" + id="line904" /> + <line + x1="588.34003" + x2="588.34003" + y1="214.14999" + y2="179.52" + id="line906" /> + <line + x1="592.20001" + x2="592.20001" + y1="214.47" + y2="180.06" + id="line908" /> + <line + x1="596.06" + x2="596.06" + y1="214.96001" + y2="180.64999" + id="line910" /> + <line + x1="599.91998" + x2="599.91998" + y1="215.24001" + y2="181.25999" + id="line912" /> + <line + x1="603.78003" + x2="603.78003" + y1="215.27" + y2="181.34" + id="line914" /> + <line + x1="607.64001" + x2="607.64001" + y1="215.5" + y2="181.69" + id="line916" /> + <line + x1="611.5" + x2="611.5" + y1="215.62" + y2="181.73" + id="line918" /> + <line + x1="615.35999" + x2="615.35999" + y1="216.12" + y2="182.5" + id="line920" /> + <line + x1="619.21997" + x2="619.21997" + y1="216.35001" + y2="182.78" + id="line922" /> + <line + x1="623.08002" + x2="623.08002" + y1="216.44" + y2="182.96001" + id="line924" /> + <line + x1="626.94" + x2="626.94" + y1="216.44" + y2="182.96001" + id="line926" /> + <line + x1="630.79999" + x2="630.79999" + y1="216.69" + y2="182.98" + id="line928" /> + <line + x1="634.65997" + x2="634.65997" + y1="216.73" + y2="183.02" + id="line930" /> + <line + x1="638.52002" + x2="638.52002" + y1="216.75999" + y2="183.08" + id="line932" /> + <line + x1="642.38" + x2="642.38" + y1="216.78999" + y2="183.14999" + id="line934" /> + <line + x1="646.23999" + x2="646.23999" + y1="216.8" + y2="183.16" + id="line936" /> + <line + x1="650.09998" + x2="650.09998" + y1="216.86" + y2="183.33" + id="line938" /> + <line + x1="653.96002" + x2="653.96002" + y1="217.05" + y2="183.75999" + id="line940" /> + <line + x1="657.82001" + x2="657.82001" + y1="217.08" + y2="183.84" + id="line942" /> + <line + x1="661.67999" + x2="661.67999" + y1="217.17" + y2="183.99001" + id="line944" /> + <line + x1="665.53998" + x2="665.53998" + y1="217.25999" + y2="184.17999" + id="line946" /> + <line + x1="669.40002" + x2="669.40002" + y1="217.71001" + y2="184.39" + id="line948" /> + <line + x1="673.26001" + x2="673.26001" + y1="217.78" + y2="184.53999" + id="line950" /> + <line + x1="677.12" + x2="677.12" + y1="218.02" + y2="184.89" + id="line952" /> + <line + x1="680.97998" + x2="680.97998" + y1="218.31" + y2="185.48" + id="line954" /> + <line + x1="684.84003" + x2="684.84003" + y1="218.31" + y2="185.48" + id="line956" /> + <line + x1="688.70001" + x2="688.70001" + y1="218.31" + y2="185.48" + id="line958" /> + <line + x1="692.56" + x2="692.56" + y1="218.35001" + y2="185.55" + id="line960" /> + <line + x1="696.41998" + x2="696.41998" + y1="218.36" + y2="185.59" + id="line962" /> + <line + x1="700.28003" + x2="700.28003" + y1="218.41" + y2="185.71001" + id="line964" /> + <line + x1="704.14001" + x2="704.14001" + y1="218.41" + y2="185.71001" + id="line966" /> + <line + x1="708" + x2="708" + y1="218.64999" + y2="186.19" + id="line968" /> + <line + x1="711.85999" + x2="711.85999" + y1="218.85001" + y2="186.25" + id="line970" /> + <line + x1="715.71997" + x2="715.71997" + y1="219.32001" + y2="187.02" + id="line972" /> + <line + x1="719.58002" + x2="719.58002" + y1="219.44" + y2="187.24001" + id="line974" /> + <line + x1="723.44" + x2="723.44" + y1="219.50999" + y2="187.31" + id="line976" /> + <line + x1="727.29999" + x2="727.29999" + y1="219.50999" + y2="187.31" + id="line978" /> + <line + x1="731.15997" + x2="731.15997" + y1="219.58" + y2="187.37" + id="line980" /> + <line + x1="735.02002" + x2="735.02002" + y1="219.58" + y2="187.37" + id="line982" /> + <line + x1="738.88" + x2="738.88" + y1="219.59" + y2="187.39" + id="line984" /> + <line + x1="742.73999" + x2="742.73999" + y1="219.59" + y2="187.39" + id="line986" /> + <line + x1="746.59998" + x2="746.59998" + y1="219.78" + y2="187.41" + id="line988" /> + <line + x1="750.46002" + x2="750.46002" + y1="220.33" + y2="188.53999" + id="line990" /> + <line + x1="754.32001" + x2="754.32001" + y1="220.39999" + y2="188.59" + id="line992" /> + <line + x1="758.17999" + x2="758.17999" + y1="220.56" + y2="189" + id="line994" /> + <line + x1="762.03998" + x2="762.03998" + y1="220.83" + y2="189.60001" + id="line996" /> + <line + x1="765.90002" + x2="765.90002" + y1="220.84" + y2="189.64" + id="line998" /> + <line + x1="769.76001" + x2="769.76001" + y1="220.88" + y2="189.73" + id="line1000" /> + <line + x1="773.62" + x2="773.62" + y1="220.88" + y2="189.73" + id="line1002" /> + <line + x1="777.47998" + x2="777.47998" + y1="220.88" + y2="189.73" + id="line1004" /> + <line + x1="781.34003" + x2="781.34003" + y1="221.03" + y2="190.08" + id="line1006" /> + <line + x1="785.20001" + x2="785.20001" + y1="221.41" + y2="190.78999" + id="line1008" /> + <line + x1="789.06" + x2="789.06" + y1="221.42" + y2="190.8" + id="line1010" /> + <line + x1="792.91998" + x2="792.91998" + y1="221.66" + y2="191.17" + id="line1012" /> + <line + x1="796.78003" + x2="796.78003" + y1="221.66" + y2="191.17" + id="line1014" /> + <line + x1="800.64001" + x2="800.64001" + y1="221.67" + y2="191.19" + id="line1016" /> + <line + x1="804.5" + x2="804.5" + y1="221.67999" + y2="191.2" + id="line1018" /> + <line + x1="808.35999" + x2="808.35999" + y1="221.69" + y2="191.23" + id="line1020" /> + <line + x1="812.21997" + x2="812.21997" + y1="221.75" + y2="191.39999" + id="line1022" /> + <line + x1="816.08002" + x2="816.08002" + y1="221.75" + y2="191.39999" + id="line1024" /> + <line + x1="819.94" + x2="819.94" + y1="221.75" + y2="191.39999" + id="line1026" /> + <line + x1="823.79999" + x2="823.79999" + y1="222.03" + y2="191.78999" + id="line1028" /> + <line + x1="827.65997" + x2="827.65997" + y1="222.03" + y2="191.78999" + id="line1030" /> + <line + x1="831.52002" + x2="831.52002" + y1="222.16" + y2="192.08" + id="line1032" /> + <line + x1="835.38" + x2="835.38" + y1="222.48" + y2="192.25" + id="line1034" /> + <line + x1="839.23999" + x2="839.23999" + y1="222.48" + y2="192.25" + id="line1036" /> + <line + x1="843.09998" + x2="843.09998" + y1="222.48" + y2="192.25" + id="line1038" /> + <line + x1="846.96002" + x2="846.96002" + y1="222.59" + y2="192.32001" + id="line1040" /> + <line + x1="850.82001" + x2="850.82001" + y1="222.60001" + y2="192.32001" + id="line1042" /> + <line + x1="854.67999" + x2="854.67999" + y1="222.77" + y2="192.64" + id="line1044" /> + <line + x1="858.53998" + x2="858.53998" + y1="222.77" + y2="192.64" + id="line1046" /> + <line + x1="862.40002" + x2="862.40002" + y1="222.85001" + y2="192.86" + id="line1048" /> + <line + x1="866.26001" + x2="866.26001" + y1="222.85001" + y2="192.86" + id="line1050" /> + <line + x1="870.12" + x2="870.12" + y1="222.95" + y2="192.92" + id="line1052" /> + <line + x1="873.97998" + x2="873.97998" + y1="223.05" + y2="193.23" + id="line1054" /> + <line + x1="877.84003" + x2="877.84003" + y1="223.28999" + y2="193.67999" + id="line1056" /> + <line + x1="881.70001" + x2="881.70001" + y1="223.28999" + y2="193.67999" + id="line1058" /> + <line + x1="885.56" + x2="885.56" + y1="223.37" + y2="193.86" + id="line1060" /> + <line + x1="889.41998" + x2="889.41998" + y1="223.5" + y2="193.94" + id="line1062" /> + <line + x1="893.28003" + x2="893.28003" + y1="223.8" + y2="194.14" + id="line1064" /> + <line + x1="897.14001" + x2="897.14001" + y1="223.8" + y2="194.14" + id="line1066" /> + <line + x1="901" + x2="901" + y1="223.81" + y2="194.14999" + id="line1068" /> + <path + d="m 132.86,142.82 3.86,1.4461 3.86,1.1207 3.86,0.6922 3.86,2.4881 3.86,2.0203 3.86,1.6242 3.86,1.2814 3.86,1.1169 3.86,1.6234 3.86,1.495 3.86,1.9656 3.86,0.8128 3.86,3.1753 3.86,1.0834 3.86,0.5584 3.86,2.4075 3.86,1.8209 3.86,1.4976 3.86,1.3958 3.86,1.4258 3.86,1.7091 3.86,0.8125 3.86,1.1363 3.86,1.2705 3.86,1.356 3.86,1.7212 3.86,0.7493 3.86,0.5085 3.86,1.4917 3.86,0.2491 3.86,1.3694 3.86,0.4248 3.86,1.4253 3.86,0.5371 3.86,0.6729 3.86,0.9816 3.86,0.4946 3.86,0.5675 3.86,1.0936 3.86,0.6779 3.86,0.2832 3.86,1.102 3.86,0.8967 3.86,0.8452 3.86,0.3301 3.86,1.0629 3.86,1.1374 3.86,0.0324 3.86,0.2198 3.86,0.3075 3.86,0.0613 3.86,0.3523 3.86,0.7656 3.86,0.4277 3.86,0.067 3.86,0.0244 3.86,0.2466 3.86,0.0133 3.86,0.2888 3.86,0.2906 3.86,0.8256 3.86,0.1121 3.86,0.3233 3.86,0.3027 3.86,0.005 3.86,0.1835 3.86,0.0235 3.86,1.0001 3.86,0.4745 3.86,0.0202 3.86,0.5201 3.86,0.1182 3.86,0.3965 3.86,0.1895 3.86,0.1943 3.86,0.2263 3.86,0.2498 3.86,1.0059 3.86,0 3.86,0.2155 3.86,0.2615 3.86,0.001 3.86,0.0776 3.86,0.0444 3.86,0.007 3.86,0.1207 3.86,0.005 3.86,0.0175 3.86,0.0634 3.86,0.055 3.86,0.052 3.86,0.0394 3.86,0.4216 3.86,0.1788 3.86,0.1244 3.86,0 3.86,0.3374 3.86,0.1559 3.86,0.2137 3.86,0 3.86,0.0218 3.86,0.025 3.86,0.0503 3.86,0.0935 3.86,0.1639 3.86,0.0597 3.86,0.1436 3.86,0.2851 3.86,0.4849 3.86,0.6588 3.86,0 3.86,6e-4 3.86,0.1549 3.86,0.5134 3.86,0.772 3.86,0.1798 3.86,0 3.86,0.0975 3.86,0.3185 3.86,0.4971 3.86,0.2731 3.86,0.0393 3.86,0.2292 3.86,0.1206 3.86,0.4961 3.86,0.2322 3.86,0.0842 3.86,0 3.86,0.2488 3.86,0.0422 3.86,0.0327 3.86,0.0334 3.86,0.002 3.86,0.0644 3.86,0.1931 3.86,0.0289 3.86,0.0906 3.86,0.0903 3.86,0.4481 3.86,0.0719 3.86,0.2394 3.86,0.2914 3.86,0 3.86,0 3.86,0.0335 3.86,0.0166 3.86,0.0468 3.86,0 3.86,0.2429 3.86,0.1982 3.86,0.4677 3.86,0.1176 3.86,0.0718 3.86,0 3.86,0.0713 3.86,0 3.86,0.007 3.86,0 3.86,0.1896 3.86,0.5556 3.86,0.069 3.86,0.1573 3.86,0.2661 3.86,0.0184 3.86,0.0378 3.86,0 3.86,0 3.86,0.145 3.86,0.3837 3.86,0.007 3.86,0.2453 3.86,0 3.86,0.0109 3.86,0.002 3.86,0.0147 3.86,0.054 3.86,0 3.86,0 3.86,0.2833 3.86,0 3.86,0.1281 3.86,0.3275 3.86,0 3.86,0 3.86,0.1088 3.86,0.01 3.86,0.171 3.86,0 3.86,0.0724 3.86,0 3.86,0.1039 3.86,0.1041 3.86,0.2324 3.86,0 3.86,0.0819 3.86,0.1306 3.86,0.3042 3.86,0 3.86,0.004" + id="path1070" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(71.146828,123.13792)" + id="g1072" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1074" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(71.146828,123.13792)" + id="g1076" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1078" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(75.006828,125.90792)" + id="g1080" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1082" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(75.006828,125.90792)" + id="g1084" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1086" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(78.866828,127.35792)" + id="g1088" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1090" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(78.866828,127.35792)" + id="g1092" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1094" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(82.726828,128.06792)" + id="g1096" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1098" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(82.726828,128.06792)" + id="g1100" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1102" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(86.586828,131.43792)" + id="g1104" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1106" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(86.586828,131.43792)" + id="g1108" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1110" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(90.446828,134.22792)" + id="g1112" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1114" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(90.446828,134.22792)" + id="g1116" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1118" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(94.306828,136.98792)" + id="g1120" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1122" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(94.306828,136.98792)" + id="g1124" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1126" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(98.166828,139.05792)" + id="g1128" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1130" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(98.166828,139.05792)" + id="g1132" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1134" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(102.02683,140.09792)" + id="g1136" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1138" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(102.02683,140.09792)" + id="g1140" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1142" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(105.88683,141.84792)" + id="g1144" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1146" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(105.88683,141.84792)" + id="g1148" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1150" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(109.74683,145.16792)" + id="g1152" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1154" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(109.74683,145.16792)" + id="g1156" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1158" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(113.60683,150.16792)" + id="g1160" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1162" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(113.60683,150.16792)" + id="g1164" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1166" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(117.46683,151.96792)" + id="g1168" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1170" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(117.46683,151.96792)" + id="g1172" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1174" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(121.32683,158.70792)" + id="g1176" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1178" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(121.32683,158.70792)" + id="g1180" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1182" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(125.18683,161.24792)" + id="g1184" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1186" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(125.18683,161.24792)" + id="g1188" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1190" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(129.04683,162.25792)" + id="g1192" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1194" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(129.04683,162.25792)" + id="g1196" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1198" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(132.90683,166.71792)" + id="g1200" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1202" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(132.90683,166.71792)" + id="g1204" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1206" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(136.76683,169.67792)" + id="g1208" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1210" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(136.76683,169.67792)" + id="g1212" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1214" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(140.62683,172.05792)" + id="g1216" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1218" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(140.62683,172.05792)" + id="g1220" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1222" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(144.48683,174.61792)" + id="g1224" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1226" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(144.48683,174.61792)" + id="g1228" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1230" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(148.34683,176.57792)" + id="g1232" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1234" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(148.34683,176.57792)" + id="g1236" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1238" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(152.20683,178.88792)" + id="g1240" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1242" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(152.20683,178.88792)" + id="g1244" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1246" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(156.06683,180.20792)" + id="g1248" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1250" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(156.06683,180.20792)" + id="g1252" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1254" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(159.92683,181.71792)" + id="g1256" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1258" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(159.92683,181.71792)" + id="g1260" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1262" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(163.78683,183.24792)" + id="g1264" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1266" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(163.78683,183.24792)" + id="g1268" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1270" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(167.64683,185.29792)" + id="g1272" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1274" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(167.64683,185.29792)" + id="g1276" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1278" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(171.50683,187.85792)" + id="g1280" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1282" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(171.50683,187.85792)" + id="g1284" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1286" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(175.36683,189.07792)" + id="g1288" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1290" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(175.36683,189.07792)" + id="g1292" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1294" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(179.22683,189.67792)" + id="g1296" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1298" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(179.22683,189.67792)" + id="g1300" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1302" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(183.08683,192.36792)" + id="g1304" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1306" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(183.08683,192.36792)" + id="g1308" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1310" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(186.94683,192.56792)" + id="g1312" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1314" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(186.94683,192.56792)" + id="g1316" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1318" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(190.80683,194.11792)" + id="g1320" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1322" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(190.80683,194.11792)" + id="g1324" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1326" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(194.66683,194.41792)" + id="g1328" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1330" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(194.66683,194.41792)" + id="g1332" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1334" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(198.52683,196.55792)" + id="g1336" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1338" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(198.52683,196.55792)" + id="g1340" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1342" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(202.38683,197.34792)" + id="g1344" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1346" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(202.38683,197.34792)" + id="g1348" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1350" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(206.24683,198.10792)" + id="g1352" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1354" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(206.24683,198.10792)" + id="g1356" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1358" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(210.10683,199.33792)" + id="g1360" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1362" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(210.10683,199.33792)" + id="g1364" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1366" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(213.96683,199.97792)" + id="g1368" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1370" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(213.96683,199.97792)" + id="g1372" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1374" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(217.82683,200.77792)" + id="g1376" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1378" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(217.82683,200.77792)" + id="g1380" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1382" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(221.68683,202.31792)" + id="g1384" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1386" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(221.68683,202.31792)" + id="g1388" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1390" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(225.54683,203.07792)" + id="g1392" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1394" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(225.54683,203.07792)" + id="g1396" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1398" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(229.40683,203.37792)" + id="g1400" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1402" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(229.40683,203.37792)" + id="g1404" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1406" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(233.26683,204.85792)" + id="g1408" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1410" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(233.26683,204.85792)" + id="g1412" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1414" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(237.12683,206.77792)" + id="g1416" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1418" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(237.12683,206.77792)" + id="g1420" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1422" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(240.98683,207.75792)" + id="g1424" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1426" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(240.98683,207.75792)" + id="g1428" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1430" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(244.84683,208.13792)" + id="g1432" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1434" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(244.84683,208.13792)" + id="g1436" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1438" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(248.70683,209.55792)" + id="g1440" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1442" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(248.70683,209.55792)" + id="g1444" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1446" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(252.56683,211.25792)" + id="g1448" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1450" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(252.56683,211.25792)" + id="g1452" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1454" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(256.42683,211.24792)" + id="g1456" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1458" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(256.42683,211.24792)" + id="g1460" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1462" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(260.28683,211.61792)" + id="g1464" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1466" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(260.28683,211.61792)" + id="g1468" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1470" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(264.14683,212.11792)" + id="g1472" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1474" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(264.14683,212.11792)" + id="g1476" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1478" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(268.00683,212.10792)" + id="g1480" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1482" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(268.00683,212.10792)" + id="g1484" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1486" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(271.86683,212.78792)" + id="g1488" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1490" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(271.86683,212.78792)" + id="g1492" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1494" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(275.72683,213.56792)" + id="g1496" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1498" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(275.72683,213.56792)" + id="g1500" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1502" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(279.58683,214.33792)" + id="g1504" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1506" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(279.58683,214.33792)" + id="g1508" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1510" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(283.44683,214.33792)" + id="g1512" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1514" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(283.44683,214.33792)" + id="g1516" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1518" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(287.30683,214.33792)" + id="g1520" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1522" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(287.30683,214.33792)" + id="g1524" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1526" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(291.16683,214.47792)" + id="g1528" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1530" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(291.16683,214.47792)" + id="g1532" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1534" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(295.02683,214.48792)" + id="g1536" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1538" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(295.02683,214.48792)" + id="g1540" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1542" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(298.88683,214.93792)" + id="g1544" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1546" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(298.88683,214.93792)" + id="g1548" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1550" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(302.74683,215.50792)" + id="g1552" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1554" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(302.74683,215.50792)" + id="g1556" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1558" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(306.60683,216.63792)" + id="g1560" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1562" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(306.60683,216.63792)" + id="g1564" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1566" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(310.46683,216.62792)" + id="g1568" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1570" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(310.46683,216.62792)" + id="g1572" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1574" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(314.32683,216.87792)" + id="g1576" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1578" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(314.32683,216.87792)" + id="g1580" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1582" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(318.18683,216.80792)" + id="g1584" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1586" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(318.18683,216.80792)" + id="g1588" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1590" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(322.04683,216.80792)" + id="g1592" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1594" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(322.04683,216.80792)" + id="g1596" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1598" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(325.90683,216.87792)" + id="g1600" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1602" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(325.90683,216.87792)" + id="g1604" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1606" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(329.76683,216.87792)" + id="g1608" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1610" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(329.76683,216.87792)" + id="g1612" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1614" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(333.62683,218.27792)" + id="g1616" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1618" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(333.62683,218.27792)" + id="g1620" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1622" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(337.48683,218.82792)" + id="g1624" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1626" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(337.48683,218.82792)" + id="g1628" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1630" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(341.34683,218.81792)" + id="g1632" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1634" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(341.34683,218.81792)" + id="g1636" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1638" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(345.20683,219.22792)" + id="g1640" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1642" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(345.20683,219.22792)" + id="g1644" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1646" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(349.06683,219.40792)" + id="g1648" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1650" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(349.06683,219.40792)" + id="g1652" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1654" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(352.92683,219.80792)" + id="g1656" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1658" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(352.92683,219.80792)" + id="g1660" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1662" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(356.78683,219.90792)" + id="g1664" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1666" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(356.78683,219.90792)" + id="g1668" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1670" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(360.64683,219.95792)" + id="g1672" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1674" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(360.64683,219.95792)" + id="g1676" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1678" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(364.50683,220.28792)" + id="g1680" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1682" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(364.50683,220.28792)" + id="g1684" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1686" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(368.36683,220.57792)" + id="g1688" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1690" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(368.36683,220.57792)" + id="g1692" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1694" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(372.22683,221.67792)" + id="g1696" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1698" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(372.22683,221.67792)" + id="g1700" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1702" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(376.08683,221.67792)" + id="g1704" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1706" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(376.08683,221.67792)" + id="g1708" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1710" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(379.94683,221.96792)" + id="g1712" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1714" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(379.94683,221.96792)" + id="g1716" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1718" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(383.80683,222.38792)" + id="g1720" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1722" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(383.80683,222.38792)" + id="g1724" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1726" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(387.66683,222.38792)" + id="g1728" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1730" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(387.66683,222.38792)" + id="g1732" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1734" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(391.52683,222.37792)" + id="g1736" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1738" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(391.52683,222.37792)" + id="g1740" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1742" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(395.38683,222.37792)" + id="g1744" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1746" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(395.38683,222.37792)" + id="g1748" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1750" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(399.24683,222.37792)" + id="g1752" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1754" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(399.24683,222.37792)" + id="g1756" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1758" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(403.10683,222.48792)" + id="g1760" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1762" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(403.10683,222.48792)" + id="g1764" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1766" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(406.96683,222.47792)" + id="g1768" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1770" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(406.96683,222.47792)" + id="g1772" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1774" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(410.82683,222.47792)" + id="g1776" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1778" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(410.82683,222.47792)" + id="g1780" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1782" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(414.68683,222.52792)" + id="g1784" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1786" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(414.68683,222.52792)" + id="g1788" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1790" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(418.54683,222.50792)" + id="g1792" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1794" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(418.54683,222.50792)" + id="g1796" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1798" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(422.40683,222.48792)" + id="g1800" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1802" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(422.40683,222.48792)" + id="g1804" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1806" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(426.26683,222.48792)" + id="g1808" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1810" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(426.26683,222.48792)" + id="g1812" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1814" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(430.12683,222.64792)" + id="g1816" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1818" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(430.12683,222.64792)" + id="g1820" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1822" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(433.98683,222.72792)" + id="g1824" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1826" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(433.98683,222.72792)" + id="g1828" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1830" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(437.84683,222.89792)" + id="g1832" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1834" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(437.84683,222.89792)" + id="g1836" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1838" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(441.70683,222.89792)" + id="g1840" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1842" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(441.70683,222.89792)" + id="g1844" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1846" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(445.56683,223.18792)" + id="g1848" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1850" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(445.56683,223.18792)" + id="g1852" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1854" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(449.42683,223.33792)" + id="g1856" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1858" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(449.42683,223.33792)" + id="g1860" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1862" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(453.28683,223.47792)" + id="g1864" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1866" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(453.28683,223.47792)" + id="g1868" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1870" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(457.14683,223.47792)" + id="g1872" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1874" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(457.14683,223.47792)" + id="g1876" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1878" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(461.00683,223.46792)" + id="g1880" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1882" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(461.00683,223.46792)" + id="g1884" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1886" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(464.86683,223.45792)" + id="g1888" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1890" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(464.86683,223.45792)" + id="g1892" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1894" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(468.72683,223.44792)" + id="g1896" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1898" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(468.72683,223.44792)" + id="g1900" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1902" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(472.58683,223.42792)" + id="g1904" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1906" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(472.58683,223.42792)" + id="g1908" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1910" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(476.44683,223.42792)" + id="g1912" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1914" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(476.44683,223.42792)" + id="g1916" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1918" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(480.30683,223.41792)" + id="g1920" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1922" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(480.30683,223.41792)" + id="g1924" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1926" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(484.16683,223.37792)" + id="g1928" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1930" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(484.16683,223.37792)" + id="g1932" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1934" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(488.02683,223.33792)" + id="g1936" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1938" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(488.02683,223.33792)" + id="g1940" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1942" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(491.88683,223.49792)" + id="g1944" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1946" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(491.88683,223.49792)" + id="g1948" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1950" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(495.74683,224.58792)" + id="g1952" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1954" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(495.74683,224.58792)" + id="g1956" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1958" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(499.60683,224.58792)" + id="g1960" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1962" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(499.60683,224.58792)" + id="g1964" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1966" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(503.46683,224.58792)" + id="g1968" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1970" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(503.46683,224.58792)" + id="g1972" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1974" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(507.32683,224.53792)" + id="g1976" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1978" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(507.32683,224.53792)" + id="g1980" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1982" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(511.18683,224.90792)" + id="g1984" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1986" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(511.18683,224.90792)" + id="g1988" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1990" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(515.04683,225.77792)" + id="g1992" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1994" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(515.04683,225.77792)" + id="g1996" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path1998" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(518.90683,225.89792)" + id="g2000" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2002" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(518.90683,225.89792)" + id="g2004" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2006" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(522.76683,225.89792)" + id="g2008" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2010" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(522.76683,225.89792)" + id="g2012" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2014" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(526.62683,225.87792)" + id="g2016" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2018" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(526.62683,225.87792)" + id="g2020" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2022" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(530.48683,225.96792)" + id="g2024" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2026" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(530.48683,225.96792)" + id="g2028" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2030" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(534.34683,226.37792)" + id="g2032" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2034" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(534.34683,226.37792)" + id="g2036" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2038" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(538.20683,226.30792)" + id="g2040" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2042" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(538.20683,226.30792)" + id="g2044" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2046" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(542.06683,226.30792)" + id="g2048" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2050" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(542.06683,226.30792)" + id="g2052" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2054" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(545.92683,226.41792)" + id="g2056" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2058" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(545.92683,226.41792)" + id="g2060" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2062" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(549.78683,226.61792)" + id="g2064" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2066" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(549.78683,226.61792)" + id="g2068" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2070" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(553.64683,226.83792)" + id="g2072" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2074" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(553.64683,226.83792)" + id="g2076" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2078" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(557.50683,227.02792)" + id="g2080" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2082" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(557.50683,227.02792)" + id="g2084" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2086" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(561.36683,227.01792)" + id="g2088" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2090" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(561.36683,227.01792)" + id="g2092" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2094" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(565.22683,227.01792)" + id="g2096" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2098" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(565.22683,227.01792)" + id="g2100" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2102" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(569.08683,227.48792)" + id="g2104" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2106" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(569.08683,227.48792)" + id="g2108" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2110" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(572.94683,227.53792)" + id="g2112" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2114" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(572.94683,227.53792)" + id="g2116" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2118" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(576.80683,227.53792)" + id="g2120" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2122" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(576.80683,227.53792)" + id="g2124" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2126" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(580.66683,227.52792)" + id="g2128" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2130" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(580.66683,227.52792)" + id="g2132" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2134" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(584.52683,227.52792)" + id="g2136" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2138" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(584.52683,227.52792)" + id="g2140" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2142" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(588.38683,227.48792)" + id="g2144" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2146" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(588.38683,227.48792)" + id="g2148" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2150" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(592.24683,227.43792)" + id="g2152" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2154" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(592.24683,227.43792)" + id="g2156" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2158" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(596.10683,227.42792)" + id="g2160" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2162" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(596.10683,227.42792)" + id="g2164" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2166" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(599.96683,227.45792)" + id="g2168" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2170" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(599.96683,227.45792)" + id="g2172" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2174" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(603.82683,227.44792)" + id="g2176" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2178" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(603.82683,227.44792)" + id="g2180" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2182" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(607.68683,228.12792)" + id="g2184" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2186" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(607.68683,228.12792)" + id="g2188" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2190" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(611.54683,228.12792)" + id="g2192" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2194" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(611.54683,228.12792)" + id="g2196" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2198" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(615.40683,228.24792)" + id="g2200" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2202" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(615.40683,228.24792)" + id="g2204" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2206" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(619.26683,228.24792)" + id="g2208" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2210" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(619.26683,228.24792)" + id="g2212" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2214" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(623.12683,228.24792)" + id="g2216" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2218" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(623.12683,228.24792)" + id="g2220" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2222" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(626.98683,228.24792)" + id="g2224" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2226" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(626.98683,228.24792)" + id="g2228" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2230" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(630.84683,228.24792)" + id="g2232" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2234" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(630.84683,228.24792)" + id="g2236" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2238" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(634.70683,228.23792)" + id="g2240" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2242" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(634.70683,228.23792)" + id="g2244" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2246" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(638.56683,228.21792)" + id="g2248" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2250" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(638.56683,228.21792)" + id="g2252" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2254" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(642.42683,228.21792)" + id="g2256" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2258" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(642.42683,228.21792)" + id="g2260" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2262" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(646.28683,228.21792)" + id="g2264" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2266" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(646.28683,228.21792)" + id="g2268" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2270" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(650.14683,228.54792)" + id="g2272" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2274" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(650.14683,228.54792)" + id="g2276" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2278" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(654.00683,228.71792)" + id="g2280" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2282" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(654.00683,228.71792)" + id="g2284" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2286" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(657.86683,228.73792)" + id="g2288" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2290" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(657.86683,228.73792)" + id="g2292" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2294" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(661.72683,228.80792)" + id="g2296" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2298" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(661.72683,228.80792)" + id="g2300" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2302" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(665.58683,228.80792)" + id="g2304" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2306" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(665.58683,228.80792)" + id="g2308" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2310" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(669.44683,228.88792)" + id="g2312" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2314" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(669.44683,228.88792)" + id="g2316" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2318" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(673.30683,228.88792)" + id="g2320" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2322" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(673.30683,228.88792)" + id="g2324" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2326" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(677.16683,228.88792)" + id="g2328" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2330" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(677.16683,228.88792)" + id="g2332" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2334" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(681.02683,228.88792)" + id="g2336" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2338" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(681.02683,228.88792)" + id="g2340" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2342" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(684.88683,229.23792)" + id="g2344" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2346" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(684.88683,229.23792)" + id="g2348" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2350" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(688.74683,229.22792)" + id="g2352" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2354" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(688.74683,229.22792)" + id="g2356" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2358" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(692.60683,229.31792)" + id="g2360" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2362" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(692.60683,229.31792)" + id="g2364" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2366" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(696.46683,229.21792)" + id="g2368" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2370" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(696.46683,229.21792)" + id="g2372" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2374" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(700.32683,229.15792)" + id="g2376" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2378" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(700.32683,229.15792)" + id="g2380" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2382" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(704.18683,229.14792)" + id="g2384" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2386" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(704.18683,229.14792)" + id="g2388" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2390" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(708.04683,229.12792)" + id="g2392" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2394" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(708.04683,229.12792)" + id="g2396" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2398" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(711.90683,229.12792)" + id="g2400" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2402" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(711.90683,229.12792)" + id="g2404" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2406" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(715.76683,229.12792)" + id="g2408" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2410" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(715.76683,229.12792)" + id="g2412" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2414" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(719.62683,229.07792)" + id="g2416" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2418" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(719.62683,229.07792)" + id="g2420" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2422" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(723.48683,229.13792)" + id="g2424" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2426" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(723.48683,229.13792)" + id="g2428" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2430" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(727.34683,229.12792)" + id="g2432" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2434" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(727.34683,229.12792)" + id="g2436" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2438" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(731.20683,229.24792)" + id="g2440" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2442" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(731.20683,229.24792)" + id="g2444" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2446" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(735.06683,229.24792)" + id="g2448" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2450" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(735.06683,229.24792)" + id="g2452" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2454" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(738.92683,229.25792)" + id="g2456" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2458" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(738.92683,229.25792)" + id="g2460" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2462" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(742.78683,229.25792)" + id="g2464" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2466" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(742.78683,229.25792)" + id="g2468" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2470" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(746.64683,229.24792)" + id="g2472" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2474" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(746.64683,229.24792)" + id="g2476" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2478" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(750.50683,229.18792)" + id="g2480" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2482" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(750.50683,229.18792)" + id="g2484" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2486" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(754.36683,229.18792)" + id="g2488" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2490" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(754.36683,229.18792)" + id="g2492" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2494" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(758.22683,229.18792)" + id="g2496" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2498" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(758.22683,229.18792)" + id="g2500" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2502" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(762.08683,229.35792)" + id="g2504" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2506" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(762.08683,229.35792)" + id="g2508" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2510" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(765.94683,229.35792)" + id="g2512" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2514" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(765.94683,229.35792)" + id="g2516" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2518" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(769.80683,229.32792)" + id="g2520" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2522" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(769.80683,229.32792)" + id="g2524" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2526" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(773.66683,229.81792)" + id="g2528" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2530" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(773.66683,229.81792)" + id="g2532" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2534" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(777.52683,229.81792)" + id="g2536" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2538" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(777.52683,229.81792)" + id="g2540" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2542" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(781.38683,229.81792)" + id="g2544" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2546" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(781.38683,229.81792)" + id="g2548" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2550" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(785.24683,229.96792)" + id="g2552" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2554" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(785.24683,229.96792)" + id="g2556" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2558" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(789.10683,229.98792)" + id="g2560" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2562" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(789.10683,229.98792)" + id="g2564" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2566" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(792.96683,229.99792)" + id="g2568" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2570" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(792.96683,229.99792)" + id="g2572" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2574" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(796.82683,229.99792)" + id="g2576" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2578" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(796.82683,229.99792)" + id="g2580" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2582" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(800.68683,229.92792)" + id="g2584" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2586" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(800.68683,229.92792)" + id="g2588" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2590" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(804.54683,229.92792)" + id="g2592" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2594" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(804.54683,229.92792)" + id="g2596" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2598" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(808.40683,230.07792)" + id="g2600" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2602" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(808.40683,230.07792)" + id="g2604" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2606" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(812.26683,229.96792)" + id="g2608" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2610" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(812.26683,229.96792)" + id="g2612" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2614" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(816.12683,229.99792)" + id="g2616" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2618" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(816.12683,229.99792)" + id="g2620" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2622" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(819.98683,229.99792)" + id="g2624" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2626" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(819.98683,229.99792)" + id="g2628" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2630" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(823.84683,229.97792)" + id="g2632" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2634" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(823.84683,229.97792)" + id="g2636" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2638" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(827.70683,230.15792)" + id="g2640" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2642" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(827.70683,230.15792)" + id="g2644" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2646" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(831.56683,230.55792)" + id="g2648" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2650" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(831.56683,230.55792)" + id="g2652" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2654" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(835.42683,230.55792)" + id="g2656" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2658" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(835.42683,230.55792)" + id="g2660" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2662" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(839.28683,230.55792)" + id="g2664" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2666" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(839.28683,230.55792)" + id="g2668" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2670" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(71.146828,116.69792)" + id="g2672" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2674" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(71.146828,116.69792)" + id="g2676" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2678" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(75.006828,116.83792)" + id="g2680" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2682" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(75.006828,116.83792)" + id="g2684" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2686" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(78.866828,117.61792)" + id="g2688" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2690" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(78.866828,117.61792)" + id="g2692" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2694" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(82.726828,118.29792)" + id="g2696" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2698" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(82.726828,118.29792)" + id="g2700" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2702" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(86.586828,119.89792)" + id="g2704" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2706" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(86.586828,119.89792)" + id="g2708" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2710" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(90.446828,121.15792)" + id="g2712" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2714" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(90.446828,121.15792)" + id="g2716" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2718" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(94.306828,121.64792)" + id="g2720" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2722" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(94.306828,121.64792)" + id="g2724" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2726" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(98.166828,122.12792)" + id="g2728" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2730" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(98.166828,122.12792)" + id="g2732" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2734" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(102.02683,123.32792)" + id="g2736" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2738" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(102.02683,123.32792)" + id="g2740" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2742" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(105.88683,124.82792)" + id="g2744" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2746" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(105.88683,124.82792)" + id="g2748" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2750" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(109.74683,124.48792)" + id="g2752" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2754" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(109.74683,124.48792)" + id="g2756" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2758" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(113.60683,123.41792)" + id="g2760" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2762" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(113.60683,123.41792)" + id="g2764" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2766" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(117.46683,123.25792)" + id="g2768" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2770" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(117.46683,123.25792)" + id="g2772" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2774" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(121.32683,122.85792)" + id="g2776" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2778" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(121.32683,122.85792)" + id="g2780" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2782" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(125.18683,122.48792)" + id="g2784" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2786" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(125.18683,122.48792)" + id="g2788" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2790" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(129.04683,122.58792)" + id="g2792" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2794" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(129.04683,122.58792)" + id="g2796" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2798" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(132.90683,122.95792)" + id="g2800" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2802" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(132.90683,122.95792)" + id="g2804" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2806" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(136.76683,123.62792)" + id="g2808" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2810" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(136.76683,123.62792)" + id="g2812" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2814" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(140.62683,124.24792)" + id="g2816" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2818" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(140.62683,124.24792)" + id="g2820" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2822" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(144.48683,124.47792)" + id="g2824" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2826" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(144.48683,124.47792)" + id="g2828" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2830" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(148.34683,125.36792)" + id="g2832" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2834" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(148.34683,125.36792)" + id="g2836" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2838" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(152.20683,126.47792)" + id="g2840" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2842" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(152.20683,126.47792)" + id="g2844" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2846" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(156.06683,126.77792)" + id="g2848" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2850" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(156.06683,126.77792)" + id="g2852" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2854" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(159.92683,127.54792)" + id="g2856" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2858" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(159.92683,127.54792)" + id="g2860" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2862" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(163.78683,128.55792)" + id="g2864" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2866" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(163.78683,128.55792)" + id="g2868" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2870" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(167.64683,129.21792)" + id="g2872" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2874" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(167.64683,129.21792)" + id="g2876" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2878" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(171.50683,130.10792)" + id="g2880" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2882" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(171.50683,130.10792)" + id="g2884" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2886" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(175.36683,130.38792)" + id="g2888" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2890" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(175.36683,130.38792)" + id="g2892" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2894" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(179.22683,130.78792)" + id="g2896" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2898" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(179.22683,130.78792)" + id="g2900" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2902" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(183.08683,131.08792)" + id="g2904" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2906" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(183.08683,131.08792)" + id="g2908" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2910" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(186.94683,131.38792)" + id="g2912" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2914" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(186.94683,131.38792)" + id="g2916" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2918" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(190.80683,132.57792)" + id="g2920" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2922" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(190.80683,132.57792)" + id="g2924" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2926" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(194.66683,133.12792)" + id="g2928" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2930" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(194.66683,133.12792)" + id="g2932" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2934" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(198.52683,133.83792)" + id="g2936" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2938" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(198.52683,133.83792)" + id="g2940" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2942" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(202.38683,134.12792)" + id="g2944" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2946" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(202.38683,134.12792)" + id="g2948" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2950" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(206.24683,134.70792)" + id="g2952" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2954" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(206.24683,134.70792)" + id="g2956" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2958" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(210.10683,135.44792)" + id="g2960" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2962" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(210.10683,135.44792)" + id="g2964" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2966" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(213.96683,135.78792)" + id="g2968" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2970" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(213.96683,135.78792)" + id="g2972" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2974" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(217.82683,136.12792)" + id="g2976" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2978" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(217.82683,136.12792)" + id="g2980" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2982" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(221.68683,136.76792)" + id="g2984" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2986" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(221.68683,136.76792)" + id="g2988" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2990" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(225.54683,137.36792)" + id="g2992" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2994" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(225.54683,137.36792)" + id="g2996" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path2998" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(229.40683,137.63792)" + id="g3000" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3002" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(229.40683,137.63792)" + id="g3004" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3006" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(233.26683,138.35792)" + id="g3008" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3010" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(233.26683,138.35792)" + id="g3012" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3014" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(237.12683,138.22792)" + id="g3016" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3018" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(237.12683,138.22792)" + id="g3020" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3022" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(240.98683,138.94792)" + id="g3024" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3026" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(240.98683,138.94792)" + id="g3028" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3030" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(244.84683,139.21792)" + id="g3032" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3034" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(244.84683,139.21792)" + id="g3036" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3038" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(248.70683,139.92792)" + id="g3040" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3042" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(248.70683,139.92792)" + id="g3044" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3046" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(252.56683,140.50792)" + id="g3048" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3050" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(252.56683,140.50792)" + id="g3052" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3054" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(256.42683,140.57792)" + id="g3056" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3058" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(256.42683,140.57792)" + id="g3060" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3062" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(260.28683,140.64792)" + id="g3064" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3066" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(260.28683,140.64792)" + id="g3068" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3070" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(264.14683,140.76792)" + id="g3072" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3074" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(264.14683,140.76792)" + id="g3076" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3078" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(268.00683,140.89792)" + id="g3080" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3082" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(268.00683,140.89792)" + id="g3084" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3086" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(271.86683,140.92792)" + id="g3088" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3090" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(271.86683,140.92792)" + id="g3092" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3094" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(275.72683,141.66792)" + id="g3096" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3098" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(275.72683,141.66792)" + id="g3100" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3102" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(279.58683,141.75792)" + id="g3104" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3106" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(279.58683,141.75792)" + id="g3108" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3110" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(283.44683,141.89792)" + id="g3112" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3114" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(283.44683,141.89792)" + id="g3116" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3118" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(287.30683,141.94792)" + id="g3120" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3122" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(287.30683,141.94792)" + id="g3124" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3126" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(291.16683,142.29792)" + id="g3128" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3130" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(291.16683,142.29792)" + id="g3132" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3134" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(295.02683,142.30792)" + id="g3136" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3138" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(295.02683,142.30792)" + id="g3140" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3142" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(298.88683,142.43792)" + id="g3144" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3146" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(298.88683,142.43792)" + id="g3148" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3150" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(302.74683,142.44792)" + id="g3152" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3154" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(302.74683,142.44792)" + id="g3156" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3158" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(306.60683,142.96792)" + id="g3160" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3162" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(306.60683,142.96792)" + id="g3164" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3166" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(310.46683,143.20792)" + id="g3168" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3170" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(310.46683,143.20792)" + id="g3172" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3174" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(314.32683,143.59792)" + id="g3176" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3178" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(314.32683,143.59792)" + id="g3180" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3182" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(318.18683,144.27792)" + id="g3184" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3186" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(318.18683,144.27792)" + id="g3188" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3190" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(322.04683,144.28792)" + id="g3192" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3194" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(322.04683,144.28792)" + id="g3196" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3198" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(325.90683,144.57792)" + id="g3200" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3202" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(325.90683,144.57792)" + id="g3204" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3206" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(329.76683,144.63792)" + id="g3208" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3210" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(329.76683,144.63792)" + id="g3212" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3214" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(333.62683,145.22792)" + id="g3216" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3218" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(333.62683,145.22792)" + id="g3220" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3222" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(337.48683,145.62792)" + id="g3224" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3226" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(337.48683,145.62792)" + id="g3228" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3230" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(341.34683,145.67792)" + id="g3232" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3234" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(341.34683,145.67792)" + id="g3236" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3238" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(345.20683,146.30792)" + id="g3240" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3242" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(345.20683,146.30792)" + id="g3244" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3246" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(349.06683,146.36792)" + id="g3248" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3250" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(349.06683,146.36792)" + id="g3252" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3254" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(352.92683,146.75792)" + id="g3256" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3258" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(352.92683,146.75792)" + id="g3260" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3262" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(356.78683,147.03792)" + id="g3264" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3266" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(356.78683,147.03792)" + id="g3268" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3270" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(360.64683,147.37792)" + id="g3272" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3274" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(360.64683,147.37792)" + id="g3276" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3278" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(364.50683,147.49792)" + id="g3280" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3282" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(364.50683,147.49792)" + id="g3284" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3286" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(368.36683,147.69792)" + id="g3288" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3290" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(368.36683,147.69792)" + id="g3292" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3294" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(372.22683,148.61792)" + id="g3296" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3298" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(372.22683,148.61792)" + id="g3300" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3302" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(376.08683,148.61792)" + id="g3304" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3306" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(376.08683,148.61792)" + id="g3308" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3310" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(379.94683,148.75792)" + id="g3312" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3314" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(379.94683,148.75792)" + id="g3316" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3318" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(383.80683,148.85792)" + id="g3320" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3322" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(383.80683,148.85792)" + id="g3324" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3326" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(387.66683,148.85792)" + id="g3328" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3330" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(387.66683,148.85792)" + id="g3332" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3334" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(391.52683,149.02792)" + id="g3336" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3338" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(391.52683,149.02792)" + id="g3340" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3342" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(395.38683,149.11792)" + id="g3344" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3346" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(395.38683,149.11792)" + id="g3348" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3350" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(399.24683,149.13792)" + id="g3352" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3354" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(399.24683,149.13792)" + id="g3356" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3358" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(403.10683,149.26792)" + id="g3360" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3362" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(403.10683,149.26792)" + id="g3364" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3366" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(406.96683,149.27792)" + id="g3368" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3370" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(406.96683,149.27792)" + id="g3372" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3374" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(410.82683,149.31792)" + id="g3376" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3378" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(410.82683,149.31792)" + id="g3380" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3382" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(414.68683,149.39792)" + id="g3384" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3386" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(414.68683,149.39792)" + id="g3388" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3390" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(418.54683,149.52792)" + id="g3392" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3394" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(418.54683,149.52792)" + id="g3396" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3398" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(422.40683,149.64792)" + id="g3400" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3402" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(422.40683,149.64792)" + id="g3404" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3406" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(426.26683,149.72792)" + id="g3408" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3410" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(426.26683,149.72792)" + id="g3412" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3414" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(430.12683,150.40792)" + id="g3416" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3418" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(430.12683,150.40792)" + id="g3420" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3422" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(433.98683,150.68792)" + id="g3424" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3426" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(433.98683,150.68792)" + id="g3428" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3430" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(437.84683,150.76792)" + id="g3432" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3434" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(437.84683,150.76792)" + id="g3436" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3438" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(441.70683,150.76792)" + id="g3440" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3442" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(441.70683,150.76792)" + id="g3444" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3446" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(445.56683,151.15792)" + id="g3448" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3450" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(445.56683,151.15792)" + id="g3452" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3454" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(449.42683,151.30792)" + id="g3456" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3458" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(449.42683,151.30792)" + id="g3460" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3462" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(453.28683,151.59792)" + id="g3464" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3466" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(453.28683,151.59792)" + id="g3468" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3470" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(457.14683,151.59792)" + id="g3472" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3474" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(457.14683,151.59792)" + id="g3476" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3478" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(461.00683,151.64792)" + id="g3480" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3482" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(461.00683,151.64792)" + id="g3484" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3486" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(464.86683,151.70792)" + id="g3488" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3490" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(464.86683,151.70792)" + id="g3492" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3494" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(468.72683,151.82792)" + id="g3496" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3498" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(468.72683,151.82792)" + id="g3500" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3502" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(472.58683,152.02792)" + id="g3504" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3506" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(472.58683,152.02792)" + id="g3508" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3510" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(476.44683,152.35792)" + id="g3512" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3514" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(476.44683,152.35792)" + id="g3516" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3518" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(480.30683,152.48792)" + id="g3520" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3522" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(480.30683,152.48792)" + id="g3524" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3526" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(484.16683,152.81792)" + id="g3528" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3530" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(484.16683,152.81792)" + id="g3532" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3534" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(488.02683,153.42792)" + id="g3536" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3538" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(488.02683,153.42792)" + id="g3540" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3542" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(491.88683,154.23792)" + id="g3544" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3546" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(491.88683,154.23792)" + id="g3548" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3550" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(495.74683,154.46792)" + id="g3552" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3554" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(495.74683,154.46792)" + id="g3556" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3558" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(499.60683,154.46792)" + id="g3560" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3562" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(499.60683,154.46792)" + id="g3564" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3566" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(503.46683,154.46792)" + id="g3568" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3570" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(503.46683,154.46792)" + id="g3572" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3574" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(507.32683,154.82792)" + id="g3576" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3578" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(507.32683,154.82792)" + id="g3580" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3582" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(511.18683,155.47792)" + id="g3584" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3586" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(511.18683,155.47792)" + id="g3588" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3590" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(515.04683,156.15792)" + id="g3592" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3594" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(515.04683,156.15792)" + id="g3596" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3598" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(518.90683,156.38792)" + id="g3600" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3602" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(518.90683,156.38792)" + id="g3604" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3606" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(522.76683,156.38792)" + id="g3608" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3610" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(522.76683,156.38792)" + id="g3612" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3614" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(526.62683,156.61792)" + id="g3616" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3618" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(526.62683,156.61792)" + id="g3620" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3622" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(530.48683,157.15792)" + id="g3624" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3626" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(530.48683,157.15792)" + id="g3628" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3630" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(534.34683,157.74792)" + id="g3632" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3634" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(534.34683,157.74792)" + id="g3636" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3638" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(538.20683,158.35792)" + id="g3640" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3642" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(538.20683,158.35792)" + id="g3644" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3646" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(542.06683,158.43792)" + id="g3648" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3650" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(542.06683,158.43792)" + id="g3652" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3654" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(545.92683,158.78792)" + id="g3656" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3658" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(545.92683,158.78792)" + id="g3660" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3662" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(549.78683,158.82792)" + id="g3664" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3666" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(549.78683,158.82792)" + id="g3668" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3670" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(553.64683,159.59792)" + id="g3672" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3674" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(553.64683,159.59792)" + id="g3676" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3678" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(557.50683,159.87792)" + id="g3680" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3682" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(557.50683,159.87792)" + id="g3684" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3686" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(561.36683,160.05792)" + id="g3688" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3690" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(561.36683,160.05792)" + id="g3692" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3694" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(565.22683,160.05792)" + id="g3696" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3698" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(565.22683,160.05792)" + id="g3700" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3702" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(569.08683,160.07792)" + id="g3704" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3706" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(569.08683,160.07792)" + id="g3708" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3710" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(572.94683,160.11792)" + id="g3712" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3714" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(572.94683,160.11792)" + id="g3716" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3718" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(576.80683,160.17792)" + id="g3720" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3722" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(576.80683,160.17792)" + id="g3724" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3726" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(580.66683,160.24792)" + id="g3728" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3730" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(580.66683,160.24792)" + id="g3732" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3734" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(584.52683,160.25792)" + id="g3736" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3738" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(584.52683,160.25792)" + id="g3740" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3742" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(588.38683,160.42792)" + id="g3744" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3746" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(588.38683,160.42792)" + id="g3748" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3750" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(592.24683,160.85792)" + id="g3752" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3754" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(592.24683,160.85792)" + id="g3756" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3758" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(596.10683,160.93792)" + id="g3760" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3762" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(596.10683,160.93792)" + id="g3764" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3766" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(599.96683,161.08792)" + id="g3768" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3770" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(599.96683,161.08792)" + id="g3772" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3774" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(603.82683,161.27792)" + id="g3776" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3778" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(603.82683,161.27792)" + id="g3780" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3782" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(607.68683,161.48792)" + id="g3784" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3786" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(607.68683,161.48792)" + id="g3788" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3790" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(611.54683,161.63792)" + id="g3792" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3794" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(611.54683,161.63792)" + id="g3796" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3798" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(615.40683,161.98792)" + id="g3800" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3802" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(615.40683,161.98792)" + id="g3804" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3806" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(619.26683,162.57792)" + id="g3808" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3810" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(619.26683,162.57792)" + id="g3812" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3814" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(623.12683,162.57792)" + id="g3816" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3818" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(623.12683,162.57792)" + id="g3820" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3822" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(626.98683,162.57792)" + id="g3824" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3826" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(626.98683,162.57792)" + id="g3828" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3830" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(630.84683,162.64792)" + id="g3832" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3834" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(630.84683,162.64792)" + id="g3836" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3838" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(634.70683,162.68792)" + id="g3840" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3842" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(634.70683,162.68792)" + id="g3844" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3846" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(638.56683,162.80792)" + id="g3848" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3850" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(638.56683,162.80792)" + id="g3852" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3854" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(642.42683,162.80792)" + id="g3856" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3858" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(642.42683,162.80792)" + id="g3860" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3862" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(646.28683,163.28792)" + id="g3864" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3866" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(646.28683,163.28792)" + id="g3868" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3870" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(650.14683,163.34792)" + id="g3872" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3874" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(650.14683,163.34792)" + id="g3876" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3878" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(654.00683,164.11792)" + id="g3880" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3882" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(654.00683,164.11792)" + id="g3884" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3886" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(657.86683,164.33792)" + id="g3888" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3890" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(657.86683,164.33792)" + id="g3892" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3894" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(661.72683,164.40792)" + id="g3896" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3898" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(661.72683,164.40792)" + id="g3900" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3902" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(665.58683,164.40792)" + id="g3904" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3906" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(665.58683,164.40792)" + id="g3908" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3910" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(669.44683,164.46792)" + id="g3912" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3914" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(669.44683,164.46792)" + id="g3916" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3918" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(673.30683,164.46792)" + id="g3920" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3922" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(673.30683,164.46792)" + id="g3924" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3926" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(677.16683,164.48792)" + id="g3928" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3930" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(677.16683,164.48792)" + id="g3932" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3934" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(681.02683,164.48792)" + id="g3936" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3938" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(681.02683,164.48792)" + id="g3940" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3942" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(684.88683,164.50792)" + id="g3944" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3946" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(684.88683,164.50792)" + id="g3948" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3950" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(688.74683,165.63792)" + id="g3952" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3954" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(688.74683,165.63792)" + id="g3956" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3958" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(692.60683,165.68792)" + id="g3960" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3962" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(692.60683,165.68792)" + id="g3964" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3966" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(696.46683,166.09792)" + id="g3968" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3970" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(696.46683,166.09792)" + id="g3972" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3974" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(700.32683,166.69792)" + id="g3976" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3978" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(700.32683,166.69792)" + id="g3980" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3982" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(704.18683,166.73792)" + id="g3984" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3986" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(704.18683,166.73792)" + id="g3988" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3990" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(708.04683,166.82792)" + id="g3992" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3994" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(708.04683,166.82792)" + id="g3996" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path3998" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(711.90683,166.82792)" + id="g4000" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4002" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(711.90683,166.82792)" + id="g4004" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4006" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(715.76683,166.82792)" + id="g4008" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4010" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(715.76683,166.82792)" + id="g4012" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4014" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(719.62683,167.17792)" + id="g4016" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4018" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(719.62683,167.17792)" + id="g4020" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4022" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(723.48683,167.88792)" + id="g4024" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4026" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(723.48683,167.88792)" + id="g4028" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4030" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(727.34683,167.89792)" + id="g4032" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4034" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(727.34683,167.89792)" + id="g4036" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4038" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(731.20683,168.26792)" + id="g4040" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4042" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(731.20683,168.26792)" + id="g4044" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4046" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(735.06683,168.26792)" + id="g4048" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4050" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(735.06683,168.26792)" + id="g4052" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4054" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(738.92683,168.28792)" + id="g4056" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4058" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(738.92683,168.28792)" + id="g4060" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4062" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(742.78683,168.29792)" + id="g4064" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4066" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(742.78683,168.29792)" + id="g4068" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4070" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(746.64683,168.32792)" + id="g4072" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4074" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(746.64683,168.32792)" + id="g4076" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4078" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(750.50683,168.49792)" + id="g4080" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4082" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(750.50683,168.49792)" + id="g4084" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4086" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(754.36683,168.49792)" + id="g4088" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4090" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(754.36683,168.49792)" + id="g4092" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4094" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(758.22683,168.49792)" + id="g4096" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4098" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(758.22683,168.49792)" + id="g4100" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4102" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(762.08683,168.88792)" + id="g4104" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4106" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(762.08683,168.88792)" + id="g4108" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4110" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(765.94683,168.88792)" + id="g4112" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4114" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(765.94683,168.88792)" + id="g4116" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4118" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(769.80683,169.17792)" + id="g4120" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4122" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(769.80683,169.17792)" + id="g4124" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4126" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(773.66683,169.34792)" + id="g4128" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4130" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(773.66683,169.34792)" + id="g4132" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4134" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(777.52683,169.34792)" + id="g4136" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4138" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(777.52683,169.34792)" + id="g4140" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4142" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(781.38683,169.34792)" + id="g4144" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4146" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(781.38683,169.34792)" + id="g4148" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4150" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(785.24683,169.41792)" + id="g4152" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4154" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(785.24683,169.41792)" + id="g4156" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4158" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(789.10683,169.41792)" + id="g4160" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4162" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(789.10683,169.41792)" + id="g4164" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4166" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(792.96683,169.73792)" + id="g4168" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4170" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(792.96683,169.73792)" + id="g4172" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4174" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(796.82683,169.73792)" + id="g4176" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4178" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(796.82683,169.73792)" + id="g4180" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4182" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(800.68683,169.95792)" + id="g4184" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4186" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(800.68683,169.95792)" + id="g4188" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4190" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(804.54683,169.95792)" + id="g4192" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4194" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(804.54683,169.95792)" + id="g4196" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4198" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(808.40683,170.01792)" + id="g4200" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4202" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(808.40683,170.01792)" + id="g4204" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4206" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(812.26683,170.32792)" + id="g4208" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4210" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(812.26683,170.32792)" + id="g4212" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4214" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(816.12683,170.77792)" + id="g4216" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4218" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(816.12683,170.77792)" + id="g4220" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4222" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(819.98683,170.77792)" + id="g4224" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4226" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(819.98683,170.77792)" + id="g4228" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4230" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(823.84683,170.95792)" + id="g4232" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4234" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(823.84683,170.95792)" + id="g4236" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4238" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(827.70683,171.03792)" + id="g4240" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4242" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(827.70683,171.03792)" + id="g4244" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4246" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(831.56683,171.23792)" + id="g4248" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4250" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(831.56683,171.23792)" + id="g4252" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4254" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(835.42683,171.23792)" + id="g4256" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4258" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(835.42683,171.23792)" + id="g4260" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4262" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(839.28683,171.24792)" + id="g4264" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4266" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(839.28683,171.24792)" + id="g4268" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path4270" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + id="g4272" + style="color-interpolation:linearRGB;fill:none;stroke:#d95319;stroke-width:0.69440001;stroke-linecap:butt;stroke-linejoin:round;color-rendering:optimizeQuality;image-rendering:optimizeQuality" + transform="translate(-61.713172,-22.902084)"> + <line + x1="132.86" + x2="132.86" + y1="140.64999" + y2="140.64999" + id="line4274" /> + <line + x1="136.72" + x2="136.72" + y1="142.64999" + y2="147.53999" + id="line4276" /> + <line + x1="140.58" + x2="140.58" + y1="143.91" + y2="149.78999" + id="line4278" /> + <line + x1="144.44" + x2="144.44" + y1="151.45" + y2="157.28999" + id="line4280" /> + <line + x1="148.3" + x2="148.3" + y1="155.55" + y2="159.24001" + id="line4282" /> + <line + x1="152.16" + x2="152.16" + y1="155.85001" + y2="159.36" + id="line4284" /> + <line + x1="156.02" + x2="156.02" + y1="156.12" + y2="159.56" + id="line4286" /> + <line + x1="159.88" + x2="159.88" + y1="157.12" + y2="162.66" + id="line4288" /> + <line + x1="163.74001" + x2="163.74001" + y1="157.64" + y2="163.28" + id="line4290" /> + <line + x1="167.60001" + x2="167.60001" + y1="158.32001" + y2="164.87" + id="line4292" /> + <line + x1="171.46001" + x2="171.46001" + y1="158.42999" + y2="164.97" + id="line4294" /> + <line + x1="175.32001" + x2="175.32001" + y1="158.45" + y2="164.98" + id="line4296" /> + <line + x1="179.17999" + x2="179.17999" + y1="159.10001" + y2="165.92" + id="line4298" /> + <line + x1="183.03999" + x2="183.03999" + y1="159.17999" + y2="166" + id="line4300" /> + <line + x1="186.89999" + x2="186.89999" + y1="159.74001" + y2="166.98" + id="line4302" /> + <line + x1="190.75999" + x2="190.75999" + y1="160.09" + y2="167.27" + id="line4304" /> + <line + x1="194.62" + x2="194.62" + y1="160.77" + y2="168.28999" + id="line4306" /> + <line + x1="198.48" + x2="198.48" + y1="161.49001" + y2="169.42999" + id="line4308" /> + <line + x1="202.34" + x2="202.34" + y1="162.42999" + y2="171.89999" + id="line4310" /> + <line + x1="206.2" + x2="206.2" + y1="163.05" + y2="172.99001" + id="line4312" /> + <line + x1="210.06" + x2="210.06" + y1="164.63" + y2="176.57001" + id="line4314" /> + <line + x1="213.92" + x2="213.92" + y1="165.24001" + y2="177.25" + id="line4316" /> + <line + x1="217.78" + x2="217.78" + y1="167.46001" + y2="183.13" + id="line4318" /> + <line + x1="221.64" + x2="221.64" + y1="168.03999" + y2="183.92" + id="line4320" /> + <line + x1="225.5" + x2="225.5" + y1="170.24001" + y2="188.8" + id="line4322" /> + <line + x1="229.36" + x2="229.36" + y1="170.75999" + y2="189.55" + id="line4324" /> + <line + x1="233.22" + x2="233.22" + y1="174.39999" + y2="198.34" + id="line4326" /> + <line + x1="237.08" + x2="237.08" + y1="175.61" + y2="201.39" + id="line4328" /> + <line + x1="240.94" + x2="240.94" + y1="179.67" + y2="211.11" + id="line4330" /> + <line + x1="244.8" + x2="244.8" + y1="180.8" + y2="212.52" + id="line4332" /> + <line + x1="248.66" + x2="248.66" + y1="187.8" + y2="231.12" + id="line4334" /> + <line + x1="252.52" + x2="252.52" + y1="188.81" + y2="232.71001" + id="line4336" /> + <line + x1="256.38" + x2="256.38" + y1="195.8" + y2="248.89999" + id="line4338" /> + <line + x1="260.23999" + x2="260.23999" + y1="199.16" + y2="253.48" + id="line4340" /> + <line + x1="264.10001" + x2="264.10001" + y1="205.78999" + y2="269.57999" + id="line4342" /> + <line + x1="267.95999" + x2="267.95999" + y1="208.64999" + y2="274.20001" + id="line4344" /> + <line + x1="271.82001" + x2="271.82001" + y1="214.95" + y2="289.17001" + id="line4346" /> + <line + x1="275.67999" + x2="275.67999" + y1="218.46001" + y2="293.70001" + id="line4348" /> + <line + x1="279.54001" + x2="279.54001" + y1="227.28" + y2="314.81" + id="line4350" /> + <line + x1="283.39999" + x2="283.39999" + y1="231.77" + y2="323.51001" + id="line4352" /> + <line + x1="287.26001" + x2="287.26001" + y1="245.73" + y2="354.59" + id="line4354" /> + <line + x1="291.12" + x2="291.12" + y1="248.95" + y2="357.92001" + id="line4356" /> + <line + x1="294.98001" + x2="294.98001" + y1="259.95001" + y2="381" + id="line4358" /> + <line + x1="298.84" + x2="298.84" + y1="267.04999" + y2="392.57001" + id="line4360" /> + <line + x1="302.70001" + x2="302.70001" + y1="279.67001" + y2="420.04001" + id="line4362" /> + <line + x1="306.56" + x2="306.56" + y1="285.98999" + y2="427.59" + id="line4364" /> + <line + x1="310.42001" + x2="310.42001" + y1="293.67999" + y2="438.16" + id="line4366" /> + <line + x1="314.28" + x2="314.28" + y1="298.20999" + y2="443.88" + id="line4368" /> + <line + x1="318.14001" + x2="318.14001" + y1="306.79999" + y2="457.14001" + id="line4370" /> + <line + x1="322" + x2="322" + y1="313.35999" + y2="464.70001" + id="line4372" /> + <line + x1="325.85999" + x2="325.85999" + y1="317.88" + y2="469.38" + id="line4374" /> + <line + x1="329.72" + x2="329.72" + y1="324.20999" + y2="478.63" + id="line4376" /> + <line + x1="333.57999" + x2="333.57999" + y1="330.29001" + y2="485.48999" + id="line4378" /> + <line + x1="337.44" + x2="337.44" + y1="340.16" + y2="497.76999" + id="line4380" /> + <line + x1="341.29999" + x2="341.29999" + y1="345.75" + y2="503.09" + id="line4382" /> + <line + x1="345.16" + x2="345.16" + y1="349.94" + y2="507.29001" + id="line4384" /> + <line + x1="349.01999" + x2="349.01999" + y1="354.73001" + y2="511.76001" + id="line4386" /> + <line + x1="352.88" + x2="352.88" + y1="357.69" + y2="514.06" + id="line4388" /> + <line + x1="356.73999" + x2="356.73999" + y1="362.79001" + y2="517.42999" + id="line4390" /> + <line + x1="360.60001" + x2="360.60001" + y1="368.12" + y2="522.19" + id="line4392" /> + <line + x1="364.45999" + x2="364.45999" + y1="371.66" + y2="523.92999" + id="line4394" /> + <line + x1="368.32001" + x2="368.32001" + y1="375.44" + y2="527.48999" + id="line4396" /> + <line + x1="372.17999" + x2="372.17999" + y1="379.95001" + y2="530.82001" + id="line4398" /> + <line + x1="376.04001" + x2="376.04001" + y1="382.66" + y2="534.5" + id="line4400" /> + <line + x1="379.89999" + x2="379.89999" + y1="390.31" + y2="542.13" + id="line4402" /> + <line + x1="383.76001" + x2="383.76001" + y1="396.73999" + y2="549.47998" + id="line4404" /> + <line + x1="387.62" + x2="387.62" + y1="401.69" + y2="552.82001" + id="line4406" /> + <line + x1="391.48001" + x2="391.48001" + y1="402.97" + y2="553.46997" + id="line4408" /> + <line + x1="395.34" + x2="395.34" + y1="408.32001" + y2="556.19" + id="line4410" /> + <line + x1="399.20001" + x2="399.20001" + y1="410.98001" + y2="557.81" + id="line4412" /> + <line + x1="403.06" + x2="403.06" + y1="415.85001" + y2="561.34003" + id="line4414" /> + <line + x1="406.92001" + x2="406.92001" + y1="416.51001" + y2="561.21002" + id="line4416" /> + <line + x1="410.78" + x2="410.78" + y1="419.26999" + y2="562.54999" + id="line4418" /> + <line + x1="414.64001" + x2="414.64001" + y1="421.70001" + y2="562.78998" + id="line4420" /> + <line + x1="418.5" + x2="418.5" + y1="424.97" + y2="563.39001" + id="line4422" /> + <line + x1="422.35999" + x2="422.35999" + y1="427.57001" + y2="563.97998" + id="line4424" /> + <line + x1="426.22" + x2="426.22" + y1="430.10001" + y2="564.84003" + id="line4426" /> + <line + x1="430.07999" + x2="430.07999" + y1="432.54001" + y2="565.5" + id="line4428" /> + <line + x1="433.94" + x2="433.94" + y1="435.01999" + y2="565.37" + id="line4430" /> + <line + x1="437.79999" + x2="437.79999" + y1="436.81" + y2="565.65002" + id="line4432" /> + <line + x1="441.66" + x2="441.66" + y1="441.38" + y2="567.57001" + id="line4434" /> + <line + x1="445.51999" + x2="445.51999" + y1="441.88" + y2="567.53998" + id="line4436" /> + <line + x1="449.38" + x2="449.38" + y1="443.76999" + y2="567.92999" + id="line4438" /> + <line + x1="453.23999" + x2="453.23999" + y1="446.14999" + y2="569.31" + id="line4440" /> + <line + x1="457.10001" + x2="457.10001" + y1="449.5" + y2="571.12" + id="line4442" /> + <line + x1="460.95999" + x2="460.95999" + y1="451.09" + y2="571.25" + id="line4444" /> + <line + x1="464.82001" + x2="464.82001" + y1="452.51001" + y2="571.67999" + id="line4446" /> + <line + x1="468.67999" + x2="468.67999" + y1="453.01001" + y2="571.85999" + id="line4448" /> + <line + x1="472.54001" + x2="472.54001" + y1="454.76999" + y2="571.22998" + id="line4450" /> + <line + x1="476.39999" + x2="476.39999" + y1="456.63" + y2="571.46997" + id="line4452" /> + <line + x1="480.26001" + x2="480.26001" + y1="461.69" + y2="577.03998" + id="line4454" /> + <line + x1="484.12" + x2="484.12" + y1="462.79999" + y2="577.84998" + id="line4456" /> + <line + x1="487.98001" + x2="487.98001" + y1="464.25" + y2="577.94" + id="line4458" /> + <line + x1="491.84" + x2="491.84" + y1="464.75" + y2="577.88" + id="line4460" /> + <line + x1="495.70001" + x2="495.70001" + y1="465.95001" + y2="578.46002" + id="line4462" /> + <line + x1="499.56" + x2="499.56" + y1="466.37" + y2="578.34003" + id="line4464" /> + <line + x1="503.42001" + x2="503.42001" + y1="469.98001" + y2="580.39001" + id="line4466" /> + <line + x1="507.28" + x2="507.28" + y1="470.44" + y2="580.13" + id="line4468" /> + <line + x1="511.14001" + x2="511.14001" + y1="472.64001" + y2="583.03998" + id="line4470" /> + <line + x1="515" + x2="515" + y1="473.54999" + y2="583.41998" + id="line4472" /> + <line + x1="518.85999" + x2="518.85999" + y1="473.88" + y2="583.63" + id="line4474" /> + <line + x1="522.71997" + x2="522.71997" + y1="474.10001" + y2="583.28998" + id="line4476" /> + <line + x1="526.58002" + x2="526.58002" + y1="474.97" + y2="583.46997" + id="line4478" /> + <line + x1="530.44" + x2="530.44" + y1="475.42999" + y2="583.03998" + id="line4480" /> + <line + x1="534.29999" + x2="534.29999" + y1="477.51999" + y2="585.57001" + id="line4482" /> + <line + x1="538.15997" + x2="538.15997" + y1="477.82001" + y2="585.52002" + id="line4484" /> + <line + x1="542.02002" + x2="542.02002" + y1="478.14999" + y2="585.66998" + id="line4486" /> + <line + x1="545.88" + x2="545.88" + y1="480.29001" + y2="587.62" + id="line4488" /> + <line + x1="549.73999" + x2="549.73999" + y1="484.16" + y2="593.09003" + id="line4490" /> + <line + x1="553.59998" + x2="553.59998" + y1="484.16" + y2="593.09003" + id="line4492" /> + <line + x1="557.46002" + x2="557.46002" + y1="488.73001" + y2="599.76001" + id="line4494" /> + <line + x1="561.32001" + x2="561.32001" + y1="487.60001" + y2="597.28003" + id="line4496" /> + <line + x1="565.17999" + x2="565.17999" + y1="489.57999" + y2="599" + id="line4498" /> + <line + x1="569.03998" + x2="569.03998" + y1="490.76001" + y2="599.20001" + id="line4500" /> + <line + x1="572.90002" + x2="572.90002" + y1="489.73999" + y2="596.66998" + id="line4502" /> + <line + x1="576.76001" + x2="576.76001" + y1="491.39001" + y2="599.12" + id="line4504" /> + <line + x1="580.62" + x2="580.62" + y1="491.73001" + y2="598.65002" + id="line4506" /> + <line + x1="584.47998" + x2="584.47998" + y1="491.82001" + y2="598.71997" + id="line4508" /> + <line + x1="588.34003" + x2="588.34003" + y1="492.51999" + y2="598.07001" + id="line4510" /> + <line + x1="592.20001" + x2="592.20001" + y1="492.51999" + y2="598.07001" + id="line4512" /> + <line + x1="596.06" + x2="596.06" + y1="496.14999" + y2="602.15002" + id="line4514" /> + <line + x1="599.91998" + x2="599.91998" + y1="497.67001" + y2="604.45001" + id="line4516" /> + <line + x1="603.78003" + x2="603.78003" + y1="498.29001" + y2="603.58002" + id="line4518" /> + <line + x1="607.64001" + x2="607.64001" + y1="495.51001" + y2="599.12" + id="line4520" /> + <line + x1="611.5" + x2="611.5" + y1="496.48999" + y2="598.89001" + id="line4522" /> + <line + x1="615.35999" + x2="615.35999" + y1="497.91" + y2="601.09003" + id="line4524" /> + <line + x1="619.21997" + x2="619.21997" + y1="496.82999" + y2="598.35999" + id="line4526" /> + <line + x1="623.08002" + x2="623.08002" + y1="499.89001" + y2="602.90997" + id="line4528" /> + <line + x1="626.94" + x2="626.94" + y1="498.76999" + y2="600.34003" + id="line4530" /> + <line + x1="630.79999" + x2="630.79999" + y1="498.84" + y2="600.19" + id="line4532" /> + <line + x1="634.65997" + x2="634.65997" + y1="502.79001" + y2="600.56" + id="line4534" /> + <line + x1="638.52002" + x2="638.52002" + y1="503.07001" + y2="599.91998" + id="line4536" /> + <line + x1="642.38" + x2="642.38" + y1="509.26001" + y2="608.03998" + id="line4538" /> + <line + x1="646.23999" + x2="646.23999" + y1="509.26001" + y2="608.03998" + id="line4540" /> + <line + x1="650.09998" + x2="650.09998" + y1="511.39999" + y2="610.06" + id="line4542" /> + <line + x1="653.96002" + x2="653.96002" + y1="511.76001" + y2="609.42999" + id="line4544" /> + <line + x1="657.82001" + x2="657.82001" + y1="511.62" + y2="607.25" + id="line4546" /> + <line + x1="661.67999" + x2="661.67999" + y1="511.70999" + y2="607.23999" + id="line4548" /> + <line + x1="665.53998" + x2="665.53998" + y1="515.02002" + y2="611.03003" + id="line4550" /> + <line + x1="669.40002" + x2="669.40002" + y1="516.88" + y2="612.28003" + id="line4552" /> + <line + x1="673.26001" + x2="673.26001" + y1="519.47998" + y2="614.23999" + id="line4554" /> + <line + x1="677.12" + x2="677.12" + y1="519.47998" + y2="614.23999" + id="line4556" /> + <line + x1="680.97998" + x2="680.97998" + y1="518.5" + y2="611.73999" + id="line4558" /> + <line + x1="684.84003" + x2="684.84003" + y1="515.67999" + y2="607.76001" + id="line4560" /> + <line + x1="688.70001" + x2="688.70001" + y1="514.47998" + y2="605.42999" + id="line4562" /> + <line + x1="692.56" + x2="692.56" + y1="514.66998" + y2="605.34998" + id="line4564" /> + <line + x1="696.41998" + x2="696.41998" + y1="516.53003" + y2="606.78998" + id="line4566" /> + <line + x1="700.28003" + x2="700.28003" + y1="518.28003" + y2="607.90002" + id="line4568" /> + <line + x1="704.14001" + x2="704.14001" + y1="519.91998" + y2="609.90002" + id="line4570" /> + <line + x1="708" + x2="708" + y1="522.90997" + y2="613.65997" + id="line4572" /> + <line + x1="711.85999" + x2="711.85999" + y1="522.90997" + y2="613.65997" + id="line4574" /> + <line + x1="715.71997" + x2="715.71997" + y1="524.40002" + y2="615.58002" + id="line4576" /> + <line + x1="719.58002" + x2="719.58002" + y1="527" + y2="616.90997" + id="line4578" /> + <line + x1="723.44" + x2="723.44" + y1="530.70001" + y2="619.53003" + id="line4580" /> + <line + x1="727.29999" + x2="727.29999" + y1="530.94" + y2="619.62" + id="line4582" /> + <line + x1="731.15997" + x2="731.15997" + y1="531.27002" + y2="618.81" + id="line4584" /> + <line + x1="735.02002" + x2="735.02002" + y1="532.72998" + y2="620.58002" + id="line4586" /> + <line + x1="738.88" + x2="738.88" + y1="533.15002" + y2="619.92999" + id="line4588" /> + <line + x1="742.73999" + x2="742.73999" + y1="534.57001" + y2="621.66998" + id="line4590" /> + <line + x1="746.59998" + x2="746.59998" + y1="535.58002" + y2="620.79999" + id="line4592" /> + <line + x1="750.46002" + x2="750.46002" + y1="535.58002" + y2="620.79999" + id="line4594" /> + <line + x1="754.32001" + x2="754.32001" + y1="535.77002" + y2="620.5" + id="line4596" /> + <line + x1="758.17999" + x2="758.17999" + y1="537.47998" + y2="621.62" + id="line4598" /> + <line + x1="762.03998" + x2="762.03998" + y1="537.87" + y2="621.15002" + id="line4600" /> + <line + x1="765.90002" + x2="765.90002" + y1="539.46002" + y2="622.32001" + id="line4602" /> + <line + x1="769.76001" + x2="769.76001" + y1="537.35999" + y2="618.08002" + id="line4604" /> + <line + x1="773.62" + x2="773.62" + y1="538.84003" + y2="619.57001" + id="line4606" /> + <line + x1="777.47998" + x2="777.47998" + y1="539.16998" + y2="619.41998" + id="line4608" /> + <line + x1="781.34003" + x2="781.34003" + y1="539.25" + y2="619.15997" + id="line4610" /> + <line + x1="785.20001" + x2="785.20001" + y1="539.44" + y2="619.09003" + id="line4612" /> + <line + x1="789.06" + x2="789.06" + y1="539.51001" + y2="619.09998" + id="line4614" /> + <line + x1="792.91998" + x2="792.91998" + y1="539.96002" + y2="619.09998" + id="line4616" /> + <line + x1="796.78003" + x2="796.78003" + y1="542.03003" + y2="619.17999" + id="line4618" /> + <line + x1="800.64001" + x2="800.64001" + y1="543.45001" + y2="620.81" + id="line4620" /> + <line + x1="804.5" + x2="804.5" + y1="542.13" + y2="618.96002" + id="line4622" /> + <line + x1="808.35999" + x2="808.35999" + y1="542.13" + y2="618.96002" + id="line4624" /> + <line + x1="812.21997" + x2="812.21997" + y1="542.83002" + y2="617.65997" + id="line4626" /> + <line + x1="816.08002" + x2="816.08002" + y1="542.92999" + y2="617.66998" + id="line4628" /> + <line + x1="819.94" + x2="819.94" + y1="542.92999" + y2="617.66998" + id="line4630" /> + <line + x1="823.79999" + x2="823.79999" + y1="544.35999" + y2="619.27002" + id="line4632" /> + <line + x1="827.65997" + x2="827.65997" + y1="544.88" + y2="618.67999" + id="line4634" /> + <line + x1="831.52002" + x2="831.52002" + y1="544.88" + y2="618.67999" + id="line4636" /> + <line + x1="835.38" + x2="835.38" + y1="546.83002" + y2="620" + id="line4638" /> + <line + x1="839.23999" + x2="839.23999" + y1="546.83002" + y2="620" + id="line4640" /> + <line + x1="843.09998" + x2="843.09998" + y1="546.97998" + y2="620" + id="line4642" /> + <line + x1="846.96002" + x2="846.96002" + y1="547.04999" + y2="620.01001" + id="line4644" /> + <line + x1="850.82001" + x2="850.82001" + y1="547.04999" + y2="620.01001" + id="line4646" /> + <line + x1="854.67999" + x2="854.67999" + y1="547.04999" + y2="620.01001" + id="line4648" /> + <line + x1="858.53998" + x2="858.53998" + y1="547.04999" + y2="620.01001" + id="line4650" /> + <line + x1="862.40002" + x2="862.40002" + y1="548.53998" + y2="621.53003" + id="line4652" /> + <line + x1="866.26001" + x2="866.26001" + y1="548.53998" + y2="621.53003" + id="line4654" /> + <line + x1="870.12" + x2="870.12" + y1="548.53998" + y2="621.53003" + id="line4656" /> + <line + x1="873.97998" + x2="873.97998" + y1="548.53998" + y2="621.53003" + id="line4658" /> + <line + x1="877.84003" + x2="877.84003" + y1="548.53998" + y2="621.53003" + id="line4660" /> + <line + x1="881.70001" + x2="881.70001" + y1="547.10999" + y2="620.03003" + id="line4662" /> + <line + x1="885.56" + x2="885.56" + y1="547.10999" + y2="620.03003" + id="line4664" /> + <line + x1="889.41998" + x2="889.41998" + y1="547.10999" + y2="620.03003" + id="line4666" /> + <line + x1="893.28003" + x2="893.28003" + y1="547.10999" + y2="620.03003" + id="line4668" /> + <line + x1="897.14001" + x2="897.14001" + y1="547.10999" + y2="620.03003" + id="line4670" /> + <line + x1="901" + x2="901" + y1="547.10999" + y2="620.03003" + id="line4672" /> + <line + x1="132.86" + x2="132.86" + y1="140.64999" + y2="140.64999" + id="line4674" /> + <line + x1="136.72" + x2="136.72" + y1="142.64999" + y2="137.75999" + id="line4676" /> + <line + x1="140.58" + x2="140.58" + y1="143.91" + y2="138.03" + id="line4678" /> + <line + x1="144.44" + x2="144.44" + y1="151.45" + y2="145.60001" + id="line4680" /> + <line + x1="148.3" + x2="148.3" + y1="155.55" + y2="151.87" + id="line4682" /> + <line + x1="152.16" + x2="152.16" + y1="155.85001" + y2="152.35001" + id="line4684" /> + <line + x1="156.02" + x2="156.02" + y1="156.12" + y2="152.69" + id="line4686" /> + <line + x1="159.88" + x2="159.88" + y1="157.12" + y2="151.59" + id="line4688" /> + <line + x1="163.74001" + x2="163.74001" + y1="157.64" + y2="151.99001" + id="line4690" /> + <line + x1="167.60001" + x2="167.60001" + y1="158.32001" + y2="151.77" + id="line4692" /> + <line + x1="171.46001" + x2="171.46001" + y1="158.42999" + y2="151.89" + id="line4694" /> + <line + x1="175.32001" + x2="175.32001" + y1="158.45" + y2="151.92" + id="line4696" /> + <line + x1="179.17999" + x2="179.17999" + y1="159.10001" + y2="152.28999" + id="line4698" /> + <line + x1="183.03999" + x2="183.03999" + y1="159.17999" + y2="152.37" + id="line4700" /> + <line + x1="186.89999" + x2="186.89999" + y1="159.74001" + y2="152.5" + id="line4702" /> + <line + x1="190.75999" + x2="190.75999" + y1="160.09" + y2="152.89999" + id="line4704" /> + <line + x1="194.62" + x2="194.62" + y1="160.77" + y2="153.25999" + id="line4706" /> + <line + x1="198.48" + x2="198.48" + y1="161.49001" + y2="153.56" + id="line4708" /> + <line + x1="202.34" + x2="202.34" + y1="162.42999" + y2="152.95" + id="line4710" /> + <line + x1="206.2" + x2="206.2" + y1="163.05" + y2="153.12" + id="line4712" /> + <line + x1="210.06" + x2="210.06" + y1="164.63" + y2="152.7" + id="line4714" /> + <line + x1="213.92" + x2="213.92" + y1="165.24001" + y2="153.22" + id="line4716" /> + <line + x1="217.78" + x2="217.78" + y1="167.46001" + y2="151.78" + id="line4718" /> + <line + x1="221.64" + x2="221.64" + y1="168.03999" + y2="152.14999" + id="line4720" /> + <line + x1="225.5" + x2="225.5" + y1="170.24001" + y2="151.69" + id="line4722" /> + <line + x1="229.36" + x2="229.36" + y1="170.75999" + y2="151.98" + id="line4724" /> + <line + x1="233.22" + x2="233.22" + y1="174.39999" + y2="150.46001" + id="line4726" /> + <line + x1="237.08" + x2="237.08" + y1="175.61" + y2="149.83" + id="line4728" /> + <line + x1="240.94" + x2="240.94" + y1="179.67" + y2="148.22" + id="line4730" /> + <line + x1="244.8" + x2="244.8" + y1="180.8" + y2="149.08" + id="line4732" /> + <line + x1="248.66" + x2="248.66" + y1="187.8" + y2="144.48" + id="line4734" /> + <line + x1="252.52" + x2="252.52" + y1="188.81" + y2="144.91" + id="line4736" /> + <line + x1="256.38" + x2="256.38" + y1="195.8" + y2="142.71001" + id="line4738" /> + <line + x1="260.23999" + x2="260.23999" + y1="199.16" + y2="144.84" + id="line4740" /> + <line + x1="264.10001" + x2="264.10001" + y1="205.78999" + y2="142.00999" + id="line4742" /> + <line + x1="267.95999" + x2="267.95999" + y1="208.64999" + y2="143.11" + id="line4744" /> + <line + x1="271.82001" + x2="271.82001" + y1="214.95" + y2="140.72" + id="line4746" /> + <line + x1="275.67999" + x2="275.67999" + y1="218.46001" + y2="143.23" + id="line4748" /> + <line + x1="279.54001" + x2="279.54001" + y1="227.28" + y2="139.74001" + id="line4750" /> + <line + x1="283.39999" + x2="283.39999" + y1="231.77" + y2="140.03" + id="line4752" /> + <line + x1="287.26001" + x2="287.26001" + y1="245.73" + y2="136.88" + id="line4754" /> + <line + x1="291.12" + x2="291.12" + y1="248.95" + y2="139.98" + id="line4756" /> + <line + x1="294.98001" + x2="294.98001" + y1="259.95001" + y2="138.91" + id="line4758" /> + <line + x1="298.84" + x2="298.84" + y1="267.04999" + y2="141.53999" + id="line4760" /> + <line + x1="302.70001" + x2="302.70001" + y1="279.67001" + y2="139.31" + id="line4762" /> + <line + x1="306.56" + x2="306.56" + y1="285.98999" + y2="144.39" + id="line4764" /> + <line + x1="310.42001" + x2="310.42001" + y1="293.67999" + y2="149.2" + id="line4766" /> + <line + x1="314.28" + x2="314.28" + y1="298.20999" + y2="152.55" + id="line4768" /> + <line + x1="318.14001" + x2="318.14001" + y1="306.79999" + y2="156.47" + id="line4770" /> + <line + x1="322" + x2="322" + y1="313.35999" + y2="162.02" + id="line4772" /> + <line + x1="325.85999" + x2="325.85999" + y1="317.88" + y2="166.38" + id="line4774" /> + <line + x1="329.72" + x2="329.72" + y1="324.20999" + y2="169.78" + id="line4776" /> + <line + x1="333.57999" + x2="333.57999" + y1="330.29001" + y2="175.10001" + id="line4778" /> + <line + x1="337.44" + x2="337.44" + y1="340.16" + y2="182.56" + id="line4780" /> + <line + x1="341.29999" + x2="341.29999" + y1="345.75" + y2="188.39999" + id="line4782" /> + <line + x1="345.16" + x2="345.16" + y1="349.94" + y2="192.59" + id="line4784" /> + <line + x1="349.01999" + x2="349.01999" + y1="354.73001" + y2="197.7" + id="line4786" /> + <line + x1="352.88" + x2="352.88" + y1="357.69" + y2="201.31" + id="line4788" /> + <line + x1="356.73999" + x2="356.73999" + y1="362.79001" + y2="208.14999" + id="line4790" /> + <line + x1="360.60001" + x2="360.60001" + y1="368.12" + y2="214.05" + id="line4792" /> + <line + x1="364.45999" + x2="364.45999" + y1="371.66" + y2="219.39" + id="line4794" /> + <line + x1="368.32001" + x2="368.32001" + y1="375.44" + y2="223.38" + id="line4796" /> + <line + x1="372.17999" + x2="372.17999" + y1="379.95001" + y2="229.08" + id="line4798" /> + <line + x1="376.04001" + x2="376.04001" + y1="382.66" + y2="230.81" + id="line4800" /> + <line + x1="379.89999" + x2="379.89999" + y1="390.31" + y2="238.49001" + id="line4802" /> + <line + x1="383.76001" + x2="383.76001" + y1="396.73999" + y2="243.99001" + id="line4804" /> + <line + x1="387.62" + x2="387.62" + y1="401.69" + y2="250.56" + id="line4806" /> + <line + x1="391.48001" + x2="391.48001" + y1="402.97" + y2="252.46001" + id="line4808" /> + <line + x1="395.34" + x2="395.34" + y1="408.32001" + y2="260.45999" + id="line4810" /> + <line + x1="399.20001" + x2="399.20001" + y1="410.98001" + y2="264.14999" + id="line4812" /> + <line + x1="403.06" + x2="403.06" + y1="415.85001" + y2="270.35999" + id="line4814" /> + <line + x1="406.92001" + x2="406.92001" + y1="416.51001" + y2="271.81" + id="line4816" /> + <line + x1="410.78" + x2="410.78" + y1="419.26999" + y2="275.98999" + id="line4818" /> + <line + x1="414.64001" + x2="414.64001" + y1="421.70001" + y2="280.60999" + id="line4820" /> + <line + x1="418.5" + x2="418.5" + y1="424.97" + y2="286.54001" + id="line4822" /> + <line + x1="422.35999" + x2="422.35999" + y1="427.57001" + y2="291.17001" + id="line4824" /> + <line + x1="426.22" + x2="426.22" + y1="430.10001" + y2="295.35999" + id="line4826" /> + <line + x1="430.07999" + x2="430.07999" + y1="432.54001" + y2="299.57001" + id="line4828" /> + <line + x1="433.94" + x2="433.94" + y1="435.01999" + y2="304.67001" + id="line4830" /> + <line + x1="437.79999" + x2="437.79999" + y1="436.81" + y2="307.97" + id="line4832" /> + <line + x1="441.66" + x2="441.66" + y1="441.38" + y2="315.17999" + id="line4834" /> + <line + x1="445.51999" + x2="445.51999" + y1="441.88" + y2="316.22" + id="line4836" /> + <line + x1="449.38" + x2="449.38" + y1="443.76999" + y2="319.60999" + id="line4838" /> + <line + x1="453.23999" + x2="453.23999" + y1="446.14999" + y2="322.98999" + id="line4840" /> + <line + x1="457.10001" + x2="457.10001" + y1="449.5" + y2="327.88" + id="line4842" /> + <line + x1="460.95999" + x2="460.95999" + y1="451.09" + y2="330.92999" + id="line4844" /> + <line + x1="464.82001" + x2="464.82001" + y1="452.51001" + y2="333.32999" + id="line4846" /> + <line + x1="468.67999" + x2="468.67999" + y1="453.01001" + y2="334.16" + id="line4848" /> + <line + x1="472.54001" + x2="472.54001" + y1="454.76999" + y2="338.29999" + id="line4850" /> + <line + x1="476.39999" + x2="476.39999" + y1="456.63" + y2="341.78" + id="line4852" /> + <line + x1="480.26001" + x2="480.26001" + y1="461.69" + y2="346.34" + id="line4854" /> + <line + x1="484.12" + x2="484.12" + y1="462.79999" + y2="347.73999" + id="line4856" /> + <line + x1="487.98001" + x2="487.98001" + y1="464.25" + y2="350.56" + id="line4858" /> + <line + x1="491.84" + x2="491.84" + y1="464.75" + y2="351.62" + id="line4860" /> + <line + x1="495.70001" + x2="495.70001" + y1="465.95001" + y2="353.42999" + id="line4862" /> + <line + x1="499.56" + x2="499.56" + y1="466.37" + y2="354.39999" + id="line4864" /> + <line + x1="503.42001" + x2="503.42001" + y1="469.98001" + y2="359.57999" + id="line4866" /> + <line + x1="507.28" + x2="507.28" + y1="470.44" + y2="360.76001" + id="line4868" /> + <line + x1="511.14001" + x2="511.14001" + y1="472.64001" + y2="362.23999" + id="line4870" /> + <line + x1="515" + x2="515" + y1="473.54999" + y2="363.67999" + id="line4872" /> + <line + x1="518.85999" + x2="518.85999" + y1="473.88" + y2="364.12" + id="line4874" /> + <line + x1="522.71997" + x2="522.71997" + y1="474.10001" + y2="364.89999" + id="line4876" /> + <line + x1="526.58002" + x2="526.58002" + y1="474.97" + y2="366.47" + id="line4878" /> + <line + x1="530.44" + x2="530.44" + y1="475.42999" + y2="367.82999" + id="line4880" /> + <line + x1="534.29999" + x2="534.29999" + y1="477.51999" + y2="369.47" + id="line4882" /> + <line + x1="538.15997" + x2="538.15997" + y1="477.82001" + y2="370.10999" + id="line4884" /> + <line + x1="542.02002" + x2="542.02002" + y1="478.14999" + y2="370.64001" + id="line4886" /> + <line + x1="545.88" + x2="545.88" + y1="480.29001" + y2="372.95999" + id="line4888" /> + <line + x1="549.73999" + x2="549.73999" + y1="484.16" + y2="375.22" + id="line4890" /> + <line + x1="553.59998" + x2="553.59998" + y1="484.16" + y2="375.22" + id="line4892" /> + <line + x1="557.46002" + x2="557.46002" + y1="488.73001" + y2="377.69" + id="line4894" /> + <line + x1="561.32001" + x2="561.32001" + y1="487.60001" + y2="377.91" + id="line4896" /> + <line + x1="565.17999" + x2="565.17999" + y1="489.57999" + y2="380.16" + id="line4898" /> + <line + x1="569.03998" + x2="569.03998" + y1="490.76001" + y2="382.32001" + id="line4900" /> + <line + x1="572.90002" + x2="572.90002" + y1="489.73999" + y2="382.79999" + id="line4902" /> + <line + x1="576.76001" + x2="576.76001" + y1="491.39001" + y2="383.67001" + id="line4904" /> + <line + x1="580.62" + x2="580.62" + y1="491.73001" + y2="384.82001" + id="line4906" /> + <line + x1="584.47998" + x2="584.47998" + y1="491.82001" + y2="384.92001" + id="line4908" /> + <line + x1="588.34003" + x2="588.34003" + y1="492.51999" + y2="386.97" + id="line4910" /> + <line + x1="592.20001" + x2="592.20001" + y1="492.51999" + y2="386.97" + id="line4912" /> + <line + x1="596.06" + x2="596.06" + y1="496.14999" + y2="390.14001" + id="line4914" /> + <line + x1="599.91998" + x2="599.91998" + y1="497.67001" + y2="390.89999" + id="line4916" /> + <line + x1="603.78003" + x2="603.78003" + y1="498.29001" + y2="393.01001" + id="line4918" /> + <line + x1="607.64001" + x2="607.64001" + y1="495.51001" + y2="391.91" + id="line4920" /> + <line + x1="611.5" + x2="611.5" + y1="496.48999" + y2="394.09" + id="line4922" /> + <line + x1="615.35999" + x2="615.35999" + y1="497.91" + y2="394.73999" + id="line4924" /> + <line + x1="619.21997" + x2="619.21997" + y1="496.82999" + y2="395.29999" + id="line4926" /> + <line + x1="623.08002" + x2="623.08002" + y1="499.89001" + y2="396.87" + id="line4928" /> + <line + x1="626.94" + x2="626.94" + y1="498.76999" + y2="397.20001" + id="line4930" /> + <line + x1="630.79999" + x2="630.79999" + y1="498.84" + y2="397.48001" + id="line4932" /> + <line + x1="634.65997" + x2="634.65997" + y1="502.79001" + y2="405.01999" + id="line4934" /> + <line + x1="638.52002" + x2="638.52002" + y1="503.07001" + y2="406.22" + id="line4936" /> + <line + x1="642.38" + x2="642.38" + y1="509.26001" + y2="410.48001" + id="line4938" /> + <line + x1="646.23999" + x2="646.23999" + y1="509.26001" + y2="410.48001" + id="line4940" /> + <line + x1="650.09998" + x2="650.09998" + y1="511.39999" + y2="412.73999" + id="line4942" /> + <line + x1="653.96002" + x2="653.96002" + y1="511.76001" + y2="414.09" + id="line4944" /> + <line + x1="657.82001" + x2="657.82001" + y1="511.62" + y2="415.98999" + id="line4946" /> + <line + x1="661.67999" + x2="661.67999" + y1="511.70999" + y2="416.17001" + id="line4948" /> + <line + x1="665.53998" + x2="665.53998" + y1="515.02002" + y2="419" + id="line4950" /> + <line + x1="669.40002" + x2="669.40002" + y1="516.88" + y2="421.47" + id="line4952" /> + <line + x1="673.26001" + x2="673.26001" + y1="519.47998" + y2="424.70999" + id="line4954" /> + <line + x1="677.12" + x2="677.12" + y1="519.47998" + y2="424.70999" + id="line4956" /> + <line + x1="680.97998" + x2="680.97998" + y1="518.5" + y2="425.26001" + id="line4958" /> + <line + x1="684.84003" + x2="684.84003" + y1="515.67999" + y2="423.60001" + id="line4960" /> + <line + x1="688.70001" + x2="688.70001" + y1="514.47998" + y2="423.53" + id="line4962" /> + <line + x1="692.56" + x2="692.56" + y1="514.66998" + y2="424" + id="line4964" /> + <line + x1="696.41998" + x2="696.41998" + y1="516.53003" + y2="426.26001" + id="line4966" /> + <line + x1="700.28003" + x2="700.28003" + y1="518.28003" + y2="428.66" + id="line4968" /> + <line + x1="704.14001" + x2="704.14001" + y1="519.91998" + y2="429.94" + id="line4970" /> + <line + x1="708" + x2="708" + y1="522.90997" + y2="432.16" + id="line4972" /> + <line + x1="711.85999" + x2="711.85999" + y1="522.90997" + y2="432.16" + id="line4974" /> + <line + x1="715.71997" + x2="715.71997" + y1="524.40002" + y2="433.22" + id="line4976" /> + <line + x1="719.58002" + x2="719.58002" + y1="527" + y2="437.09" + id="line4978" /> + <line + x1="723.44" + x2="723.44" + y1="530.70001" + y2="441.87" + id="line4980" /> + <line + x1="727.29999" + x2="727.29999" + y1="530.94" + y2="442.26001" + id="line4982" /> + <line + x1="731.15997" + x2="731.15997" + y1="531.27002" + y2="443.73001" + id="line4984" /> + <line + x1="735.02002" + x2="735.02002" + y1="532.72998" + y2="444.87" + id="line4986" /> + <line + x1="738.88" + x2="738.88" + y1="533.15002" + y2="446.37" + id="line4988" /> + <line + x1="742.73999" + x2="742.73999" + y1="534.57001" + y2="447.47" + id="line4990" /> + <line + x1="746.59998" + x2="746.59998" + y1="535.58002" + y2="450.35999" + id="line4992" /> + <line + x1="750.46002" + x2="750.46002" + y1="535.58002" + y2="450.35999" + id="line4994" /> + <line + x1="754.32001" + x2="754.32001" + y1="535.77002" + y2="451.03" + id="line4996" /> + <line + x1="758.17999" + x2="758.17999" + y1="537.47998" + y2="453.34" + id="line4998" /> + <line + x1="762.03998" + x2="762.03998" + y1="537.87" + y2="454.59" + id="line5000" /> + <line + x1="765.90002" + x2="765.90002" + y1="539.46002" + y2="456.59" + id="line5002" /> + <line + x1="769.76001" + x2="769.76001" + y1="537.35999" + y2="456.63" + id="line5004" /> + <line + x1="773.62" + x2="773.62" + y1="538.84003" + y2="458.12" + id="line5006" /> + <line + x1="777.47998" + x2="777.47998" + y1="539.16998" + y2="458.92001" + id="line5008" /> + <line + x1="781.34003" + x2="781.34003" + y1="539.25" + y2="459.34" + id="line5010" /> + <line + x1="785.20001" + x2="785.20001" + y1="539.44" + y2="459.79999" + id="line5012" /> + <line + x1="789.06" + x2="789.06" + y1="539.51001" + y2="459.92001" + id="line5014" /> + <line + x1="792.91998" + x2="792.91998" + y1="539.96002" + y2="460.82001" + id="line5016" /> + <line + x1="796.78003" + x2="796.78003" + y1="542.03003" + y2="464.87" + id="line5018" /> + <line + x1="800.64001" + x2="800.64001" + y1="543.45001" + y2="466.07999" + id="line5020" /> + <line + x1="804.5" + x2="804.5" + y1="542.13" + y2="465.29999" + id="line5022" /> + <line + x1="808.35999" + x2="808.35999" + y1="542.13" + y2="465.29999" + id="line5024" /> + <line + x1="812.21997" + x2="812.21997" + y1="542.83002" + y2="468" + id="line5026" /> + <line + x1="816.08002" + x2="816.08002" + y1="542.92999" + y2="468.20001" + id="line5028" /> + <line + x1="819.94" + x2="819.94" + y1="542.92999" + y2="468.20001" + id="line5030" /> + <line + x1="823.79999" + x2="823.79999" + y1="544.35999" + y2="469.44" + id="line5032" /> + <line + x1="827.65997" + x2="827.65997" + y1="544.88" + y2="471.07999" + id="line5034" /> + <line + x1="831.52002" + x2="831.52002" + y1="544.88" + y2="471.07999" + id="line5036" /> + <line + x1="835.38" + x2="835.38" + y1="546.83002" + y2="473.66" + id="line5038" /> + <line + x1="839.23999" + x2="839.23999" + y1="546.83002" + y2="473.66" + id="line5040" /> + <line + x1="843.09998" + x2="843.09998" + y1="546.97998" + y2="473.95999" + id="line5042" /> + <line + x1="846.96002" + x2="846.96002" + y1="547.04999" + y2="474.09" + id="line5044" /> + <line + x1="850.82001" + x2="850.82001" + y1="547.04999" + y2="474.09" + id="line5046" /> + <line + x1="854.67999" + x2="854.67999" + y1="547.04999" + y2="474.09" + id="line5048" /> + <line + x1="858.53998" + x2="858.53998" + y1="547.04999" + y2="474.09" + id="line5050" /> + <line + x1="862.40002" + x2="862.40002" + y1="548.53998" + y2="475.54001" + id="line5052" /> + <line + x1="866.26001" + x2="866.26001" + y1="548.53998" + y2="475.54001" + id="line5054" /> + <line + x1="870.12" + x2="870.12" + y1="548.53998" + y2="475.54001" + id="line5056" /> + <line + x1="873.97998" + x2="873.97998" + y1="548.53998" + y2="475.54001" + id="line5058" /> + <line + x1="877.84003" + x2="877.84003" + y1="548.53998" + y2="475.54001" + id="line5060" /> + <line + x1="881.70001" + x2="881.70001" + y1="547.10999" + y2="474.20001" + id="line5062" /> + <line + x1="885.56" + x2="885.56" + y1="547.10999" + y2="474.20001" + id="line5064" /> + <line + x1="889.41998" + x2="889.41998" + y1="547.10999" + y2="474.20001" + id="line5066" /> + <line + x1="893.28003" + x2="893.28003" + y1="547.10999" + y2="474.20001" + id="line5068" /> + <line + x1="897.14001" + x2="897.14001" + y1="547.10999" + y2="474.20001" + id="line5070" /> + <line + x1="901" + x2="901" + y1="547.10999" + y2="474.20001" + id="line5072" /> + <path + d="m 132.86,140.65 3.86,2.0051 3.86,1.2575 3.86,7.5378 3.86,4.1058 3.86,0.2984 3.86,0.2698 3.86,0.9986 3.86,0.5177 3.86,0.6787 3.86,0.1129 3.86,0.0194 3.86,0.6528 3.86,0.0818 3.86,0.5523 3.86,0.3522 3.86,0.6844 3.86,0.7214 3.86,0.9316 3.86,0.6248 3.86,1.5834 3.86,0.6004 3.86,2.2206 3.86,0.5796 3.86,2.2079 3.86,0.5219 3.86,3.6334 3.86,1.2137 3.86,4.0544 3.86,1.1337 3.86,7.0023 3.86,1.0048 3.86,6.9965 3.86,3.3578 3.86,6.6309 3.86,2.8611 3.86,6.2943 3.86,3.5162 3.86,8.811 3.86,4.4953 3.86,13.963 3.86,3.215 3.86,11.006 3.86,7.1009 3.86,12.62 3.86,6.3155 3.86,7.6856 3.86,4.5386 3.86,8.5902 3.86,6.5572 3.86,4.5144 3.86,6.3305 3.86,6.0835 3.86,9.8743 3.86,5.5811 3.86,4.1991 3.86,4.7863 3.86,2.9568 3.86,5.1014 3.86,5.3329 3.86,3.5412 3.86,3.7726 3.86,4.5114 3.86,2.7087 3.86,7.6539 3.86,6.4262 3.86,4.9522 3.86,1.279 3.86,5.354 3.86,2.6609 3.86,4.8685 3.86,0.6572 3.86,2.7635 3.86,2.4315 3.86,3.2629 3.86,2.6085 3.86,2.5277 3.86,2.4344 3.86,2.4808 3.86,1.7964 3.86,4.5615 3.86,0.5055 3.86,1.8883 3.86,2.381 3.86,3.3526 3.86,1.5873 3.86,1.4165 3.86,0.5035 3.86,1.7577 3.86,1.8587 3.86,5.0621 3.86,1.1067 3.86,1.4556 3.86,0.4994 3.86,1.1959 3.86,0.423 3.86,3.6158 3.86,0.4567 3.86,2.1959 3.86,0.9131 3.86,0.327 3.86,0.2221 3.86,0.8718 3.86,0.4614 3.86,2.0847 3.86,0.2975 3.86,0.339 3.86,2.1385 3.86,3.8627 3.86,0 3.86,4.5706 3.86,-1.1277 3.86,1.9821 3.86,1.1764 3.86,-1.0187 3.86,1.6557 3.86,0.34 3.86,0.0863 3.86,0.6971 3.86,0 3.86,3.6295 3.86,1.525 3.86,0.6232 3.86,-2.7823 3.86,0.9785 3.86,1.4215 3.86,-1.0814 3.86,3.0599 3.86,-1.121 3.86,0.0665 3.86,3.9514 3.86,0.2861 3.86,6.1878 3.86,0 3.86,2.1375 3.86,0.3602 3.86,-0.1365 3.86,0.0845 3.86,3.3079 3.86,1.8608 3.86,2.6009 3.86,0 3.86,-0.9803 3.86,-2.8181 3.86,-1.2015 3.86,0.1945 3.86,1.8568 3.86,1.7525 3.86,1.6425 3.86,2.988 3.86,0 3.86,1.4867 3.86,2.6046 3.86,3.6974 3.86,0.2418 3.86,0.3246 3.86,1.4596 3.86,0.4265 3.86,1.4216 3.86,1.0019 3.86,0 3.86,0.1907 3.86,1.7143 3.86,0.3921 3.86,1.5824 3.86,-2.0999 3.86,1.4884 3.86,0.3212 3.86,0.0834 3.86,0.1945 3.86,0.0653 3.86,0.4523 3.86,2.0645 3.86,1.4215 3.86,-1.3137 3.86,0 3.86,0.6975 3.86,0.1035 3.86,0 3.86,1.4215 3.86,0.5219 3.86,0 3.86,1.9541 3.86,0 3.86,0.1517 3.86,0.0653 3.86,0 3.86,0 3.86,0 3.86,1.4868 3.86,0 3.86,0 3.86,0 3.86,0 3.86,-1.4215 3.86,0 3.86,0 3.86,0 3.86,0 3.86,0" + id="path5074" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(71.146828,117.74792)" + id="g5076" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5078" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(71.146828,117.74792)" + id="g5080" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5082" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(75.006828,124.63792)" + id="g5084" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5086" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(75.006828,124.63792)" + id="g5088" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5090" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(78.866828,126.88792)" + id="g5092" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5094" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(78.866828,126.88792)" + id="g5096" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5098" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(82.726828,134.38792)" + id="g5100" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5102" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(82.726828,134.38792)" + id="g5104" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5106" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(86.586828,136.33792)" + id="g5108" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5110" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(86.586828,136.33792)" + id="g5112" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5114" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(90.446828,136.45792)" + id="g5116" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5118" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(90.446828,136.45792)" + id="g5120" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5122" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(94.306828,136.65792)" + id="g5124" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5126" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(94.306828,136.65792)" + id="g5128" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5130" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(98.166828,139.75792)" + id="g5132" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5134" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(98.166828,139.75792)" + id="g5136" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5138" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(102.02683,140.37792)" + id="g5140" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5142" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(102.02683,140.37792)" + id="g5144" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5146" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(105.88683,141.96792)" + id="g5148" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5150" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(105.88683,141.96792)" + id="g5152" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5154" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(109.74683,142.06792)" + id="g5156" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5158" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(109.74683,142.06792)" + id="g5160" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5162" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(113.60683,142.07792)" + id="g5164" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5166" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(113.60683,142.07792)" + id="g5168" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5170" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(117.46683,143.01792)" + id="g5172" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5174" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(117.46683,143.01792)" + id="g5176" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5178" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(121.32683,143.09792)" + id="g5180" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5182" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(121.32683,143.09792)" + id="g5184" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5186" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(125.18683,144.07792)" + id="g5188" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5190" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(125.18683,144.07792)" + id="g5192" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5194" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(129.04683,144.36792)" + id="g5196" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5198" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(129.04683,144.36792)" + id="g5200" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5202" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(132.90683,145.38792)" + id="g5204" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5206" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(132.90683,145.38792)" + id="g5208" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5210" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(136.76683,146.52792)" + id="g5212" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5214" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(136.76683,146.52792)" + id="g5216" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5218" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(140.62683,148.99792)" + id="g5220" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5222" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(140.62683,148.99792)" + id="g5224" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5226" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(144.48683,150.08792)" + id="g5228" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5230" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(144.48683,150.08792)" + id="g5232" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5234" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(148.34683,153.66792)" + id="g5236" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5238" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(148.34683,153.66792)" + id="g5240" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5242" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(152.20683,154.34792)" + id="g5244" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5246" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(152.20683,154.34792)" + id="g5248" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5250" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(156.06683,160.22792)" + id="g5252" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5254" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(156.06683,160.22792)" + id="g5256" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5258" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(159.92683,161.01792)" + id="g5260" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5262" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(159.92683,161.01792)" + id="g5264" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5266" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(163.78683,165.89792)" + id="g5268" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5270" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(163.78683,165.89792)" + id="g5272" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5274" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(167.64683,166.64792)" + id="g5276" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5278" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(167.64683,166.64792)" + id="g5280" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5282" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(171.50683,175.43792)" + id="g5284" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5286" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(171.50683,175.43792)" + id="g5288" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5290" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(175.36683,178.48792)" + id="g5292" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5294" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(175.36683,178.48792)" + id="g5296" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5298" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(179.22683,188.20792)" + id="g5300" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5302" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(179.22683,188.20792)" + id="g5304" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5306" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(183.08683,189.61792)" + id="g5308" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5310" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(183.08683,189.61792)" + id="g5312" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5314" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(186.94683,208.21792)" + id="g5316" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5318" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(186.94683,208.21792)" + id="g5320" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5322" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(190.80683,209.80792)" + id="g5324" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5326" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(190.80683,209.80792)" + id="g5328" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5330" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(194.66683,225.99792)" + id="g5332" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5334" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(194.66683,225.99792)" + id="g5336" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5338" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(198.52683,230.57792)" + id="g5340" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5342" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(198.52683,230.57792)" + id="g5344" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5346" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(202.38683,246.67792)" + id="g5348" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5350" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(202.38683,246.67792)" + id="g5352" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5354" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(206.24683,251.29792)" + id="g5356" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5358" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(206.24683,251.29792)" + id="g5360" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5362" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(210.10683,266.26792)" + id="g5364" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5366" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(210.10683,266.26792)" + id="g5368" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5370" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(213.96683,270.79792)" + id="g5372" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5374" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(213.96683,270.79792)" + id="g5376" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5378" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(217.82683,291.90792)" + id="g5380" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5382" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(217.82683,291.90792)" + id="g5384" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5386" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(221.68683,300.60792)" + id="g5388" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5390" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(221.68683,300.60792)" + id="g5392" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5394" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(225.54683,331.68792)" + id="g5396" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5398" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(225.54683,331.68792)" + id="g5400" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5402" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(229.40683,335.01792)" + id="g5404" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5406" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(229.40683,335.01792)" + id="g5408" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5410" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(233.26683,358.09792)" + id="g5412" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5414" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(233.26683,358.09792)" + id="g5416" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5418" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(237.12683,369.66792)" + id="g5420" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5422" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(237.12683,369.66792)" + id="g5424" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5426" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(240.98683,397.13792)" + id="g5428" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5430" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(240.98683,397.13792)" + id="g5432" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5434" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(244.84683,404.68792)" + id="g5436" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5438" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(244.84683,404.68792)" + id="g5440" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5442" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(248.70683,415.25792)" + id="g5444" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5446" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(248.70683,415.25792)" + id="g5448" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5450" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(252.56683,420.97792)" + id="g5452" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5454" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(252.56683,420.97792)" + id="g5456" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5458" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(256.42683,434.23792)" + id="g5460" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5462" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(256.42683,434.23792)" + id="g5464" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5466" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(260.28683,441.79792)" + id="g5468" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5470" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(260.28683,441.79792)" + id="g5472" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5474" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(264.14683,446.47792)" + id="g5476" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5478" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(264.14683,446.47792)" + id="g5480" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5482" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(268.00683,455.72792)" + id="g5484" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5486" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(268.00683,455.72792)" + id="g5488" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5490" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(271.86683,462.58792)" + id="g5492" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5494" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(271.86683,462.58792)" + id="g5496" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5498" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(275.72683,474.86792)" + id="g5500" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5502" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(275.72683,474.86792)" + id="g5504" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5506" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(279.58683,480.18792)" + id="g5508" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5510" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(279.58683,480.18792)" + id="g5512" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5514" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(283.44683,484.38792)" + id="g5516" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5518" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(283.44683,484.38792)" + id="g5520" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5522" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(287.30683,488.85792)" + id="g5524" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5526" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(287.30683,488.85792)" + id="g5528" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5530" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(291.16683,491.15792)" + id="g5532" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5534" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(291.16683,491.15792)" + id="g5536" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5538" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(295.02683,494.52792)" + id="g5540" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5542" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(295.02683,494.52792)" + id="g5544" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5546" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(298.88683,499.28792)" + id="g5548" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5550" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(298.88683,499.28792)" + id="g5552" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5554" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(302.74683,501.02792)" + id="g5556" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5558" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(302.74683,501.02792)" + id="g5560" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5562" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(306.60683,504.58792)" + id="g5564" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5566" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(306.60683,504.58792)" + id="g5568" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5570" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(310.46683,507.91792)" + id="g5572" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5574" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(310.46683,507.91792)" + id="g5576" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5578" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(314.32683,511.59792)" + id="g5580" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5582" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(314.32683,511.59792)" + id="g5584" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5586" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(318.18683,519.22792)" + id="g5588" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5590" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(318.18683,519.22792)" + id="g5592" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5594" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(322.04683,526.57792)" + id="g5596" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5598" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(322.04683,526.57792)" + id="g5600" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5602" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(325.90683,529.91792)" + id="g5604" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5606" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(325.90683,529.91792)" + id="g5608" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5610" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(329.76683,530.56792)" + id="g5612" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5614" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(329.76683,530.56792)" + id="g5616" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5618" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(333.62683,533.28792)" + id="g5620" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5622" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(333.62683,533.28792)" + id="g5624" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5626" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(337.48683,534.90792)" + id="g5628" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5630" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(337.48683,534.90792)" + id="g5632" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5634" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(341.34683,538.43792)" + id="g5636" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5638" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(341.34683,538.43792)" + id="g5640" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5642" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(345.20683,538.30792)" + id="g5644" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5646" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(345.20683,538.30792)" + id="g5648" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5650" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(349.06683,539.64792)" + id="g5652" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5654" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(349.06683,539.64792)" + id="g5656" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5658" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(352.92683,539.88792)" + id="g5660" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5662" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(352.92683,539.88792)" + id="g5664" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5666" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(356.78683,540.48792)" + id="g5668" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5670" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(356.78683,540.48792)" + id="g5672" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5674" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(360.64683,541.07792)" + id="g5676" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5678" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(360.64683,541.07792)" + id="g5680" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5682" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(364.50683,541.93792)" + id="g5684" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5686" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(364.50683,541.93792)" + id="g5688" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5690" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(368.36683,542.59792)" + id="g5692" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5694" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(368.36683,542.59792)" + id="g5696" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5698" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(372.22683,542.46792)" + id="g5700" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5702" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(372.22683,542.46792)" + id="g5704" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5706" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(376.08683,542.74792)" + id="g5708" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5710" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(376.08683,542.74792)" + id="g5712" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5714" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(379.94683,544.66792)" + id="g5716" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5718" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(379.94683,544.66792)" + id="g5720" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5722" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(383.80683,544.63792)" + id="g5724" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5726" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(383.80683,544.63792)" + id="g5728" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5730" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(387.66683,545.02792)" + id="g5732" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5734" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(387.66683,545.02792)" + id="g5736" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5738" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(391.52683,546.40792)" + id="g5740" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5742" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(391.52683,546.40792)" + id="g5744" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5746" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(395.38683,548.21792)" + id="g5748" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5750" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(395.38683,548.21792)" + id="g5752" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5754" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(399.24683,548.34792)" + id="g5756" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5758" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(399.24683,548.34792)" + id="g5760" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5762" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(403.10683,548.77792)" + id="g5764" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5766" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(403.10683,548.77792)" + id="g5768" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5770" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(406.96683,548.95792)" + id="g5772" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5774" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(406.96683,548.95792)" + id="g5776" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5778" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(410.82683,548.32792)" + id="g5780" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5782" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(410.82683,548.32792)" + id="g5784" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5786" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(414.68683,548.56792)" + id="g5788" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5790" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(414.68683,548.56792)" + id="g5792" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5794" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(418.54683,554.13792)" + id="g5796" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5798" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(418.54683,554.13792)" + id="g5800" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5802" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(422.40683,554.94792)" + id="g5804" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5806" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(422.40683,554.94792)" + id="g5808" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5810" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(426.26683,555.03792)" + id="g5812" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5814" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(426.26683,555.03792)" + id="g5816" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5818" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(430.12683,554.97792)" + id="g5820" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5822" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(430.12683,554.97792)" + id="g5824" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5826" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(433.98683,555.55792)" + id="g5828" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5830" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(433.98683,555.55792)" + id="g5832" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5834" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(437.84683,555.43792)" + id="g5836" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5838" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(437.84683,555.43792)" + id="g5840" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5842" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(441.70683,557.48792)" + id="g5844" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5846" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(441.70683,557.48792)" + id="g5848" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5850" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(445.56683,557.22792)" + id="g5852" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5854" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(445.56683,557.22792)" + id="g5856" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5858" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(449.42683,560.13792)" + id="g5860" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5862" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(449.42683,560.13792)" + id="g5864" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5866" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(453.28683,560.51792)" + id="g5868" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5870" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(453.28683,560.51792)" + id="g5872" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5874" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(457.14683,560.72792)" + id="g5876" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5878" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(457.14683,560.72792)" + id="g5880" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5882" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(461.00683,560.38792)" + id="g5884" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5886" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(461.00683,560.38792)" + id="g5888" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5890" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(464.86683,560.56792)" + id="g5892" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5894" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(464.86683,560.56792)" + id="g5896" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5898" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(468.72683,560.13792)" + id="g5900" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5902" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(468.72683,560.13792)" + id="g5904" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5906" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(472.58683,562.66792)" + id="g5908" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5910" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(472.58683,562.66792)" + id="g5912" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5914" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(476.44683,562.61792)" + id="g5916" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5918" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(476.44683,562.61792)" + id="g5920" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5922" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(480.30683,562.76792)" + id="g5924" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5926" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(480.30683,562.76792)" + id="g5928" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5930" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(484.16683,564.71792)" + id="g5932" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5934" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(484.16683,564.71792)" + id="g5936" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5938" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(488.02683,570.18792)" + id="g5940" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5942" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(488.02683,570.18792)" + id="g5944" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5946" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(491.88683,570.18792)" + id="g5948" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5950" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(491.88683,570.18792)" + id="g5952" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5954" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(495.74683,576.85792)" + id="g5956" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5958" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(495.74683,576.85792)" + id="g5960" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5962" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(499.60683,574.37792)" + id="g5964" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5966" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(499.60683,574.37792)" + id="g5968" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5970" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(503.46683,576.09792)" + id="g5972" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5974" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(503.46683,576.09792)" + id="g5976" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5978" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(507.32683,576.29792)" + id="g5980" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5982" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(507.32683,576.29792)" + id="g5984" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5986" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(511.18683,573.76792)" + id="g5988" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5990" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(511.18683,573.76792)" + id="g5992" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5994" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(515.04683,576.21792)" + id="g5996" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path5998" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(515.04683,576.21792)" + id="g6000" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6002" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(518.90683,575.74792)" + id="g6004" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6006" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(518.90683,575.74792)" + id="g6008" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6010" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(522.76683,575.81792)" + id="g6012" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6014" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(522.76683,575.81792)" + id="g6016" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6018" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(526.62683,575.16792)" + id="g6020" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6022" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(526.62683,575.16792)" + id="g6024" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6026" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(530.48683,575.16792)" + id="g6028" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6030" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(530.48683,575.16792)" + id="g6032" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6034" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(534.34683,579.24792)" + id="g6036" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6038" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(534.34683,579.24792)" + id="g6040" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6042" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(538.20683,581.54792)" + id="g6044" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6046" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(538.20683,581.54792)" + id="g6048" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6050" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(542.06683,580.67792)" + id="g6052" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6054" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(542.06683,580.67792)" + id="g6056" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6058" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(545.92683,576.21792)" + id="g6060" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6062" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(545.92683,576.21792)" + id="g6064" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6066" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(549.78683,575.98792)" + id="g6068" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6070" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(549.78683,575.98792)" + id="g6072" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6074" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(553.64683,578.18792)" + id="g6076" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6078" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(553.64683,578.18792)" + id="g6080" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6082" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(557.50683,575.45792)" + id="g6084" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6086" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(557.50683,575.45792)" + id="g6088" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6090" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(561.36683,580.00792)" + id="g6092" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6094" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(561.36683,580.00792)" + id="g6096" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6098" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(565.22683,577.43792)" + id="g6100" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6102" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(565.22683,577.43792)" + id="g6104" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6106" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(569.08683,577.28792)" + id="g6108" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6110" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(569.08683,577.28792)" + id="g6112" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6114" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(572.94683,577.65792)" + id="g6116" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6118" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(572.94683,577.65792)" + id="g6120" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6122" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(576.80683,577.01792)" + id="g6124" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6126" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(576.80683,577.01792)" + id="g6128" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6130" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(580.66683,585.13792)" + id="g6132" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6134" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(580.66683,585.13792)" + id="g6136" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6138" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(584.52683,585.13792)" + id="g6140" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6142" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(584.52683,585.13792)" + id="g6144" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6146" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(588.38683,587.15792)" + id="g6148" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6150" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(588.38683,587.15792)" + id="g6152" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6154" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(592.24683,586.52792)" + id="g6156" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6158" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(592.24683,586.52792)" + id="g6160" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6162" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(596.10683,584.34792)" + id="g6164" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6166" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(596.10683,584.34792)" + id="g6168" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6170" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(599.96683,584.33792)" + id="g6172" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6174" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(599.96683,584.33792)" + id="g6176" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6178" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(603.82683,588.12792)" + id="g6180" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6182" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(603.82683,588.12792)" + id="g6184" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6186" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(607.68683,589.37792)" + id="g6188" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6190" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(607.68683,589.37792)" + id="g6192" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6194" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(611.54683,591.33792)" + id="g6196" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6198" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(611.54683,591.33792)" + id="g6200" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6202" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(615.40683,591.33792)" + id="g6204" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6206" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(615.40683,591.33792)" + id="g6208" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6210" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(619.26683,588.83792)" + id="g6212" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6214" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(619.26683,588.83792)" + id="g6216" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6218" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(623.12683,584.85792)" + id="g6220" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6222" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(623.12683,584.85792)" + id="g6224" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6226" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(626.98683,582.52792)" + id="g6228" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6230" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(626.98683,582.52792)" + id="g6232" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6234" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(630.84683,582.44792)" + id="g6236" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6238" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(630.84683,582.44792)" + id="g6240" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6242" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(634.70683,583.88792)" + id="g6244" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6246" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(634.70683,583.88792)" + id="g6248" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6250" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(638.56683,584.99792)" + id="g6252" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6254" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(638.56683,584.99792)" + id="g6256" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6258" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(642.42683,586.99792)" + id="g6260" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6262" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(642.42683,586.99792)" + id="g6264" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6266" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(646.28683,590.75792)" + id="g6268" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6270" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(646.28683,590.75792)" + id="g6272" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6274" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(650.14683,590.75792)" + id="g6276" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6278" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(650.14683,590.75792)" + id="g6280" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6282" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(654.00683,592.67792)" + id="g6284" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6286" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(654.00683,592.67792)" + id="g6288" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6290" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(657.86683,594.00792)" + id="g6292" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6294" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(657.86683,594.00792)" + id="g6296" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6298" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(661.72683,596.62792)" + id="g6300" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6302" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(661.72683,596.62792)" + id="g6304" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6306" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(665.58683,596.71792)" + id="g6308" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6310" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(665.58683,596.71792)" + id="g6312" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6314" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(669.44683,595.90792)" + id="g6316" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6318" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(669.44683,595.90792)" + id="g6320" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6322" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(673.30683,597.67792)" + id="g6324" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6326" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(673.30683,597.67792)" + id="g6328" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6330" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(677.16683,597.02792)" + id="g6332" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6334" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(677.16683,597.02792)" + id="g6336" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6338" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(681.02683,598.76792)" + id="g6340" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6342" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(681.02683,598.76792)" + id="g6344" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6346" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(684.88683,597.89792)" + id="g6348" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6350" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(684.88683,597.89792)" + id="g6352" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6354" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(688.74683,597.89792)" + id="g6356" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6358" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(688.74683,597.89792)" + id="g6360" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6362" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(692.60683,597.59792)" + id="g6364" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6366" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(692.60683,597.59792)" + id="g6368" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6370" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(696.46683,598.71792)" + id="g6372" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6374" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(696.46683,598.71792)" + id="g6376" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6378" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(700.32683,598.24792)" + id="g6380" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6382" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(700.32683,598.24792)" + id="g6384" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6386" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(704.18683,599.41792)" + id="g6388" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6390" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(704.18683,599.41792)" + id="g6392" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6394" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(708.04683,595.17792)" + id="g6396" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6398" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(708.04683,595.17792)" + id="g6400" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6402" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(711.90683,596.66792)" + id="g6404" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6406" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(711.90683,596.66792)" + id="g6408" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6410" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(715.76683,596.51792)" + id="g6412" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6414" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(715.76683,596.51792)" + id="g6416" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6418" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(719.62683,596.25792)" + id="g6420" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6422" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(719.62683,596.25792)" + id="g6424" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6426" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(723.48683,596.18792)" + id="g6428" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6430" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(723.48683,596.18792)" + id="g6432" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6434" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(727.34683,596.19792)" + id="g6436" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6438" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(727.34683,596.19792)" + id="g6440" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6442" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(731.20683,596.19792)" + id="g6444" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6446" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(731.20683,596.19792)" + id="g6448" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6450" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(735.06683,596.27792)" + id="g6452" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6454" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(735.06683,596.27792)" + id="g6456" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6458" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(738.92683,597.90792)" + id="g6460" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6462" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(738.92683,597.90792)" + id="g6464" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6466" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(742.78683,596.05792)" + id="g6468" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6470" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(742.78683,596.05792)" + id="g6472" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6474" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(746.64683,596.05792)" + id="g6476" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6478" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(746.64683,596.05792)" + id="g6480" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6482" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(750.50683,594.75792)" + id="g6484" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6486" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(750.50683,594.75792)" + id="g6488" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6490" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(754.36683,594.76792)" + id="g6492" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6494" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(754.36683,594.76792)" + id="g6496" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6498" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(758.22683,594.76792)" + id="g6500" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6502" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(758.22683,594.76792)" + id="g6504" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6506" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(762.08683,596.36792)" + id="g6508" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6510" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(762.08683,596.36792)" + id="g6512" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6514" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(765.94683,595.77792)" + id="g6516" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6518" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(765.94683,595.77792)" + id="g6520" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6522" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(769.80683,595.77792)" + id="g6524" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6526" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(769.80683,595.77792)" + id="g6528" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6530" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(773.66683,597.09792)" + id="g6532" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6534" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(773.66683,597.09792)" + id="g6536" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6538" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(777.52683,597.09792)" + id="g6540" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6542" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(777.52683,597.09792)" + id="g6544" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6546" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(781.38683,597.09792)" + id="g6548" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6550" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(781.38683,597.09792)" + id="g6552" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6554" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(785.24683,597.10792)" + id="g6556" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6558" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(785.24683,597.10792)" + id="g6560" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6562" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(789.10683,597.10792)" + id="g6564" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6566" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(789.10683,597.10792)" + id="g6568" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6570" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(792.96683,597.10792)" + id="g6572" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6574" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(792.96683,597.10792)" + id="g6576" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6578" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(796.82683,597.10792)" + id="g6580" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6582" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(796.82683,597.10792)" + id="g6584" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6586" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(800.68683,598.62792)" + id="g6588" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6590" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(800.68683,598.62792)" + id="g6592" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6594" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(804.54683,598.62792)" + id="g6596" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6598" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(804.54683,598.62792)" + id="g6600" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6602" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(808.40683,598.62792)" + id="g6604" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6606" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(808.40683,598.62792)" + id="g6608" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6610" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(812.26683,598.62792)" + id="g6612" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6614" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(812.26683,598.62792)" + id="g6616" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6618" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(816.12683,598.62792)" + id="g6620" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6622" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(816.12683,598.62792)" + id="g6624" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6626" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(819.98683,597.12792)" + id="g6628" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6630" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(819.98683,597.12792)" + id="g6632" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6634" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(823.84683,597.12792)" + id="g6636" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6638" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(823.84683,597.12792)" + id="g6640" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6642" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(827.70683,597.12792)" + id="g6644" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6646" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(827.70683,597.12792)" + id="g6648" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6650" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(831.56683,597.12792)" + id="g6652" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6654" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(831.56683,597.12792)" + id="g6656" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6658" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(835.42683,597.12792)" + id="g6660" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6662" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(835.42683,597.12792)" + id="g6664" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6666" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(839.28683,597.12792)" + id="g6668" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6670" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(839.28683,597.12792)" + id="g6672" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6674" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(71.146828,117.74792)" + id="g6676" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6678" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(71.146828,117.74792)" + id="g6680" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6682" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(75.006828,114.85792)" + id="g6684" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6686" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(75.006828,114.85792)" + id="g6688" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6690" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(78.866828,115.12792)" + id="g6692" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6694" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(78.866828,115.12792)" + id="g6696" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6698" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(82.726828,122.69792)" + id="g6700" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6702" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(82.726828,122.69792)" + id="g6704" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6706" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(86.586828,128.96792)" + id="g6708" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6710" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(86.586828,128.96792)" + id="g6712" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6714" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(90.446828,129.44792)" + id="g6716" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6718" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(90.446828,129.44792)" + id="g6720" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6722" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(94.306828,129.78792)" + id="g6724" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6726" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(94.306828,129.78792)" + id="g6728" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6730" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(98.166828,128.68792)" + id="g6732" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6734" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(98.166828,128.68792)" + id="g6736" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6738" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(102.02683,129.08792)" + id="g6740" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6742" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(102.02683,129.08792)" + id="g6744" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6746" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(105.88683,128.86792)" + id="g6748" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6750" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(105.88683,128.86792)" + id="g6752" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6754" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(109.74683,128.98792)" + id="g6756" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6758" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(109.74683,128.98792)" + id="g6760" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6762" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(113.60683,129.01792)" + id="g6764" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6766" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(113.60683,129.01792)" + id="g6768" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6770" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(117.46683,129.38792)" + id="g6772" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6774" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(117.46683,129.38792)" + id="g6776" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6778" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(121.32683,129.46792)" + id="g6780" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6782" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(121.32683,129.46792)" + id="g6784" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6786" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(125.18683,129.59792)" + id="g6788" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6790" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(125.18683,129.59792)" + id="g6792" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6794" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(129.04683,129.99792)" + id="g6796" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6798" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(129.04683,129.99792)" + id="g6800" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6802" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(132.90683,130.35792)" + id="g6804" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6806" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(132.90683,130.35792)" + id="g6808" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6810" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(136.76683,130.65792)" + id="g6812" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6814" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(136.76683,130.65792)" + id="g6816" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6818" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(140.62683,130.04792)" + id="g6820" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6822" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(140.62683,130.04792)" + id="g6824" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6826" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(144.48683,130.21792)" + id="g6828" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6830" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(144.48683,130.21792)" + id="g6832" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6834" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(148.34683,129.79792)" + id="g6836" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6838" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(148.34683,129.79792)" + id="g6840" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6842" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(152.20683,130.31792)" + id="g6844" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6846" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(152.20683,130.31792)" + id="g6848" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6850" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(156.06683,128.87792)" + id="g6852" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6854" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(156.06683,128.87792)" + id="g6856" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6858" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(159.92683,129.24792)" + id="g6860" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6862" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(159.92683,129.24792)" + id="g6864" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6866" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(163.78683,128.78792)" + id="g6868" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6870" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(163.78683,128.78792)" + id="g6872" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6874" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(167.64683,129.07792)" + id="g6876" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6878" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(167.64683,129.07792)" + id="g6880" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6882" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(171.50683,127.55792)" + id="g6884" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6886" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(171.50683,127.55792)" + id="g6888" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6890" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(175.36683,126.92792)" + id="g6892" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6894" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(175.36683,126.92792)" + id="g6896" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6898" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(179.22683,125.31792)" + id="g6900" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6902" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(179.22683,125.31792)" + id="g6904" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6906" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(183.08683,126.17792)" + id="g6908" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6910" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(183.08683,126.17792)" + id="g6912" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6914" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(186.94683,121.57792)" + id="g6916" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6918" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(186.94683,121.57792)" + id="g6920" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6922" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(190.80683,122.00792)" + id="g6924" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6926" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(190.80683,122.00792)" + id="g6928" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6930" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(194.66683,119.80792)" + id="g6932" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6934" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(194.66683,119.80792)" + id="g6936" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6938" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(198.52683,121.93792)" + id="g6940" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6942" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(198.52683,121.93792)" + id="g6944" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6946" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(202.38683,119.10792)" + id="g6948" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6950" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(202.38683,119.10792)" + id="g6952" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6954" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(206.24683,120.20792)" + id="g6956" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6958" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(206.24683,120.20792)" + id="g6960" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6962" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(210.10683,117.81792)" + id="g6964" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6966" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(210.10683,117.81792)" + id="g6968" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6970" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(213.96683,120.32792)" + id="g6972" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6974" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(213.96683,120.32792)" + id="g6976" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6978" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(217.82683,116.83792)" + id="g6980" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6982" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(217.82683,116.83792)" + id="g6984" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6986" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(221.68683,117.12792)" + id="g6988" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6990" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(221.68683,117.12792)" + id="g6992" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6994" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(225.54683,113.97792)" + id="g6996" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path6998" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(225.54683,113.97792)" + id="g7000" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7002" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(229.40683,117.07792)" + id="g7004" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7006" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(229.40683,117.07792)" + id="g7008" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7010" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(233.26683,116.00792)" + id="g7012" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7014" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(233.26683,116.00792)" + id="g7016" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7018" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(237.12683,118.63792)" + id="g7020" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7022" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(237.12683,118.63792)" + id="g7024" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7026" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(240.98683,116.40792)" + id="g7028" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7030" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(240.98683,116.40792)" + id="g7032" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7034" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(244.84683,121.48792)" + id="g7036" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7038" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(244.84683,121.48792)" + id="g7040" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7042" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(248.70683,126.29792)" + id="g7044" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7046" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(248.70683,126.29792)" + id="g7048" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7050" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(252.56683,129.64792)" + id="g7052" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7054" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(252.56683,129.64792)" + id="g7056" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7058" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(256.42683,133.56792)" + id="g7060" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7062" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(256.42683,133.56792)" + id="g7064" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7066" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(260.28683,139.11792)" + id="g7068" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7070" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(260.28683,139.11792)" + id="g7072" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7074" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(264.14683,143.47792)" + id="g7076" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7078" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(264.14683,143.47792)" + id="g7080" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7082" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(268.00683,146.87792)" + id="g7084" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7086" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(268.00683,146.87792)" + id="g7088" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7090" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(271.86683,152.19792)" + id="g7092" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7094" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(271.86683,152.19792)" + id="g7096" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7098" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(275.72683,159.65792)" + id="g7100" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7102" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(275.72683,159.65792)" + id="g7104" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7106" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(279.58683,165.49792)" + id="g7108" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7110" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(279.58683,165.49792)" + id="g7112" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7114" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(283.44683,169.68792)" + id="g7116" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7118" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(283.44683,169.68792)" + id="g7120" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7122" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(287.30683,174.79792)" + id="g7124" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7126" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(287.30683,174.79792)" + id="g7128" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7130" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(291.16683,178.40792)" + id="g7132" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7134" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(291.16683,178.40792)" + id="g7136" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7138" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(295.02683,185.24792)" + id="g7140" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7142" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(295.02683,185.24792)" + id="g7144" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7146" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(298.88683,191.14792)" + id="g7148" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7150" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(298.88683,191.14792)" + id="g7152" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7154" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(302.74683,196.48792)" + id="g7156" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7158" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(302.74683,196.48792)" + id="g7160" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7162" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(306.60683,200.47792)" + id="g7164" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7166" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(306.60683,200.47792)" + id="g7168" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7170" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(310.46683,206.17792)" + id="g7172" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7174" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(310.46683,206.17792)" + id="g7176" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7178" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(314.32683,207.90792)" + id="g7180" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7182" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(314.32683,207.90792)" + id="g7184" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7186" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(318.18683,215.58792)" + id="g7188" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7190" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(318.18683,215.58792)" + id="g7192" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7194" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(322.04683,221.08792)" + id="g7196" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7198" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(322.04683,221.08792)" + id="g7200" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7202" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(325.90683,227.65792)" + id="g7204" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7206" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(325.90683,227.65792)" + id="g7208" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7210" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(329.76683,229.55792)" + id="g7212" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7214" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(329.76683,229.55792)" + id="g7216" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7218" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(333.62683,237.55792)" + id="g7220" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7222" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(333.62683,237.55792)" + id="g7224" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7226" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(337.48683,241.24792)" + id="g7228" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7230" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(337.48683,241.24792)" + id="g7232" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7234" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(341.34683,247.45792)" + id="g7236" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7238" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(341.34683,247.45792)" + id="g7240" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7242" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(345.20683,248.90792)" + id="g7244" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7246" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(345.20683,248.90792)" + id="g7248" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7250" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(349.06683,253.08792)" + id="g7252" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7254" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(349.06683,253.08792)" + id="g7256" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7258" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(352.92683,257.70792)" + id="g7260" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7262" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(352.92683,257.70792)" + id="g7264" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7266" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(356.78683,263.63792)" + id="g7268" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7270" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(356.78683,263.63792)" + id="g7272" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7274" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(360.64683,268.26792)" + id="g7276" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7278" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(360.64683,268.26792)" + id="g7280" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7282" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(364.50683,272.45792)" + id="g7284" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7286" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(364.50683,272.45792)" + id="g7288" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7290" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(368.36683,276.66792)" + id="g7292" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7294" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(368.36683,276.66792)" + id="g7296" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7298" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(372.22683,281.76792)" + id="g7300" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7302" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(372.22683,281.76792)" + id="g7304" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7306" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(376.08683,285.06792)" + id="g7308" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7310" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(376.08683,285.06792)" + id="g7312" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7314" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(379.94683,292.27792)" + id="g7316" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7318" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(379.94683,292.27792)" + id="g7320" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7322" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(383.80683,293.31792)" + id="g7324" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7326" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(383.80683,293.31792)" + id="g7328" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7330" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(387.66683,296.70792)" + id="g7332" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7334" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(387.66683,296.70792)" + id="g7336" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7338" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(391.52683,300.08792)" + id="g7340" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7342" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(391.52683,300.08792)" + id="g7344" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7346" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(395.38683,304.97792)" + id="g7348" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7350" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(395.38683,304.97792)" + id="g7352" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7354" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(399.24683,308.02792)" + id="g7356" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7358" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(399.24683,308.02792)" + id="g7360" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7362" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(403.10683,310.42792)" + id="g7364" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7366" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(403.10683,310.42792)" + id="g7368" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7370" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(406.96683,311.25792)" + id="g7372" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7374" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(406.96683,311.25792)" + id="g7376" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7378" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(410.82683,315.39792)" + id="g7380" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7382" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(410.82683,315.39792)" + id="g7384" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7386" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(414.68683,318.87792)" + id="g7388" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7390" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(414.68683,318.87792)" + id="g7392" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7394" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(418.54683,323.43792)" + id="g7396" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7398" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(418.54683,323.43792)" + id="g7400" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7402" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(422.40683,324.83792)" + id="g7404" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7406" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(422.40683,324.83792)" + id="g7408" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7410" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(426.26683,327.65792)" + id="g7412" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7414" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(426.26683,327.65792)" + id="g7416" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7418" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(430.12683,328.71792)" + id="g7420" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7422" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(430.12683,328.71792)" + id="g7424" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7426" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(433.98683,330.52792)" + id="g7428" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7430" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(433.98683,330.52792)" + id="g7432" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7434" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(437.84683,331.49792)" + id="g7436" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7438" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(437.84683,331.49792)" + id="g7440" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7442" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(441.70683,336.67792)" + id="g7444" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7446" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(441.70683,336.67792)" + id="g7448" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7450" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(445.56683,337.85792)" + id="g7452" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7454" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(445.56683,337.85792)" + id="g7456" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7458" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(449.42683,339.33792)" + id="g7460" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7462" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(449.42683,339.33792)" + id="g7464" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7466" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(453.28683,340.77792)" + id="g7468" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7470" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(453.28683,340.77792)" + id="g7472" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7474" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(457.14683,341.21792)" + id="g7476" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7478" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(457.14683,341.21792)" + id="g7480" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7482" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(461.00683,341.99792)" + id="g7484" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7486" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(461.00683,341.99792)" + id="g7488" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7490" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(464.86683,343.56792)" + id="g7492" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7494" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(464.86683,343.56792)" + id="g7496" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7498" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(468.72683,344.92792)" + id="g7500" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7502" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(468.72683,344.92792)" + id="g7504" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7506" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(472.58683,346.56792)" + id="g7508" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7510" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(472.58683,346.56792)" + id="g7512" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7514" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(476.44683,347.20792)" + id="g7516" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7518" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(476.44683,347.20792)" + id="g7520" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7522" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(480.30683,347.73792)" + id="g7524" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7526" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(480.30683,347.73792)" + id="g7528" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7530" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(484.16683,350.05792)" + id="g7532" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7534" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(484.16683,350.05792)" + id="g7536" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7538" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(488.02683,352.31792)" + id="g7540" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7542" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(488.02683,352.31792)" + id="g7544" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7546" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(491.88683,352.31792)" + id="g7548" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7550" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(491.88683,352.31792)" + id="g7552" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7554" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(495.74683,354.78792)" + id="g7556" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7558" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(495.74683,354.78792)" + id="g7560" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7562" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(499.60683,355.00792)" + id="g7564" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7566" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(499.60683,355.00792)" + id="g7568" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7570" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(503.46683,357.25792)" + id="g7572" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7574" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(503.46683,357.25792)" + id="g7576" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7578" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(507.32683,359.41792)" + id="g7580" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7582" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(507.32683,359.41792)" + id="g7584" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7586" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(511.18683,359.89792)" + id="g7588" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7590" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(511.18683,359.89792)" + id="g7592" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7594" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(515.04683,360.76792)" + id="g7596" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7598" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(515.04683,360.76792)" + id="g7600" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7602" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(518.90683,361.91792)" + id="g7604" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7606" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(518.90683,361.91792)" + id="g7608" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7610" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(522.76683,362.01792)" + id="g7612" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7614" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(522.76683,362.01792)" + id="g7616" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7618" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(526.62683,364.06792)" + id="g7620" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7622" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(526.62683,364.06792)" + id="g7624" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7626" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(530.48683,364.06792)" + id="g7628" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7630" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(530.48683,364.06792)" + id="g7632" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7634" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(534.34683,367.23792)" + id="g7636" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7638" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(534.34683,367.23792)" + id="g7640" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7642" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(538.20683,367.99792)" + id="g7644" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7646" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(538.20683,367.99792)" + id="g7648" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7650" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(542.06683,370.10792)" + id="g7652" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7654" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(542.06683,370.10792)" + id="g7656" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7658" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(545.92683,369.00792)" + id="g7660" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7662" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(545.92683,369.00792)" + id="g7664" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7666" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(549.78683,371.18792)" + id="g7668" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7670" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(549.78683,371.18792)" + id="g7672" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7674" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(553.64683,371.83792)" + id="g7676" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7678" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(553.64683,371.83792)" + id="g7680" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7682" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(557.50683,372.39792)" + id="g7684" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7686" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(557.50683,372.39792)" + id="g7688" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7690" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(561.36683,373.96792)" + id="g7692" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7694" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(561.36683,373.96792)" + id="g7696" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7698" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(565.22683,374.29792)" + id="g7700" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7702" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(565.22683,374.29792)" + id="g7704" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7706" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(569.08683,374.57792)" + id="g7708" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7710" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(569.08683,374.57792)" + id="g7712" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7714" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(572.94683,382.11792)" + id="g7716" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7718" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(572.94683,382.11792)" + id="g7720" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7722" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(576.80683,383.31792)" + id="g7724" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7726" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(576.80683,383.31792)" + id="g7728" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7730" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(580.66683,387.57792)" + id="g7732" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7734" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(580.66683,387.57792)" + id="g7736" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7738" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(584.52683,387.57792)" + id="g7740" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7742" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(584.52683,387.57792)" + id="g7744" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7746" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(588.38683,389.83792)" + id="g7748" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7750" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(588.38683,389.83792)" + id="g7752" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7754" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(592.24683,391.18792)" + id="g7756" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7758" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(592.24683,391.18792)" + id="g7760" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7762" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(596.10683,393.08792)" + id="g7764" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7766" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(596.10683,393.08792)" + id="g7768" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7770" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(599.96683,393.26792)" + id="g7772" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7774" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(599.96683,393.26792)" + id="g7776" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7778" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(603.82683,396.09792)" + id="g7780" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7782" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(603.82683,396.09792)" + id="g7784" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7786" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(607.68683,398.56792)" + id="g7788" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7790" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(607.68683,398.56792)" + id="g7792" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7794" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(611.54683,401.80792)" + id="g7796" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7798" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(611.54683,401.80792)" + id="g7800" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7802" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(615.40683,401.80792)" + id="g7804" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7806" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(615.40683,401.80792)" + id="g7808" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7810" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(619.26683,402.35792)" + id="g7812" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7814" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(619.26683,402.35792)" + id="g7816" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7818" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(623.12683,400.69792)" + id="g7820" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7822" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(623.12683,400.69792)" + id="g7824" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7826" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(626.98683,400.62792)" + id="g7828" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7830" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(626.98683,400.62792)" + id="g7832" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7834" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(630.84683,401.09792)" + id="g7836" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7838" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(630.84683,401.09792)" + id="g7840" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7842" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(634.70683,403.35792)" + id="g7844" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7846" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(634.70683,403.35792)" + id="g7848" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7850" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(638.56683,405.75792)" + id="g7852" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7854" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(638.56683,405.75792)" + id="g7856" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7858" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(642.42683,407.03792)" + id="g7860" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7862" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(642.42683,407.03792)" + id="g7864" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7866" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(646.28683,409.25792)" + id="g7868" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7870" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(646.28683,409.25792)" + id="g7872" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7874" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(650.14683,409.25792)" + id="g7876" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7878" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(650.14683,409.25792)" + id="g7880" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7882" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(654.00683,410.31792)" + id="g7884" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7886" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(654.00683,410.31792)" + id="g7888" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7890" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(657.86683,414.18792)" + id="g7892" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7894" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(657.86683,414.18792)" + id="g7896" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7898" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(661.72683,418.96792)" + id="g7900" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7902" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(661.72683,418.96792)" + id="g7904" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7906" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(665.58683,419.35792)" + id="g7908" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7910" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(665.58683,419.35792)" + id="g7912" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7914" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(669.44683,420.82792)" + id="g7916" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7918" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(669.44683,420.82792)" + id="g7920" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7922" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(673.30683,421.96792)" + id="g7924" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7926" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(673.30683,421.96792)" + id="g7928" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7930" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(677.16683,423.46792)" + id="g7932" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7934" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(677.16683,423.46792)" + id="g7936" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7938" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(681.02683,424.56792)" + id="g7940" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7942" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(681.02683,424.56792)" + id="g7944" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7946" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(684.88683,427.45792)" + id="g7948" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7950" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(684.88683,427.45792)" + id="g7952" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7954" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(688.74683,427.45792)" + id="g7956" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7958" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(688.74683,427.45792)" + id="g7960" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7962" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(692.60683,428.12792)" + id="g7964" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7966" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(692.60683,428.12792)" + id="g7968" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7970" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(696.46683,430.43792)" + id="g7972" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7974" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(696.46683,430.43792)" + id="g7976" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7978" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(700.32683,431.68792)" + id="g7980" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7982" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(700.32683,431.68792)" + id="g7984" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7986" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(704.18683,433.68792)" + id="g7988" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7990" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(704.18683,433.68792)" + id="g7992" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7994" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(708.04683,433.72792)" + id="g7996" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path7998" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(708.04683,433.72792)" + id="g8000" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8002" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(711.90683,435.21792)" + id="g8004" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8006" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(711.90683,435.21792)" + id="g8008" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8010" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(715.76683,436.01792)" + id="g8012" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8014" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(715.76683,436.01792)" + id="g8016" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8018" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(719.62683,436.43792)" + id="g8020" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8022" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(719.62683,436.43792)" + id="g8024" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8026" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(723.48683,436.89792)" + id="g8028" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8030" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(723.48683,436.89792)" + id="g8032" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8034" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(727.34683,437.01792)" + id="g8036" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8038" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(727.34683,437.01792)" + id="g8040" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8042" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(731.20683,437.91792)" + id="g8044" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8046" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(731.20683,437.91792)" + id="g8048" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8050" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(735.06683,441.96792)" + id="g8052" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8054" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(735.06683,441.96792)" + id="g8056" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8058" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(738.92683,443.17792)" + id="g8060" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8062" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(738.92683,443.17792)" + id="g8064" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8066" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(742.78683,442.39792)" + id="g8068" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8070" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(742.78683,442.39792)" + id="g8072" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8074" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(746.64683,442.39792)" + id="g8076" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8078" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(746.64683,442.39792)" + id="g8080" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8082" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(750.50683,445.09792)" + id="g8084" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8086" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(750.50683,445.09792)" + id="g8088" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8090" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(754.36683,445.29792)" + id="g8092" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8094" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(754.36683,445.29792)" + id="g8096" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8098" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(758.22683,445.29792)" + id="g8100" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8102" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(758.22683,445.29792)" + id="g8104" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8106" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(762.08683,446.53792)" + id="g8108" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8110" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(762.08683,446.53792)" + id="g8112" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8114" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(765.94683,448.17792)" + id="g8116" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8118" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(765.94683,448.17792)" + id="g8120" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8122" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(769.80683,448.17792)" + id="g8124" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8126" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(769.80683,448.17792)" + id="g8128" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8130" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(773.66683,450.75792)" + id="g8132" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8134" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(773.66683,450.75792)" + id="g8136" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8138" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(777.52683,450.75792)" + id="g8140" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8142" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(777.52683,450.75792)" + id="g8144" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8146" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(781.38683,451.05792)" + id="g8148" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8150" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(781.38683,451.05792)" + id="g8152" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8154" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(785.24683,451.18792)" + id="g8156" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8158" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(785.24683,451.18792)" + id="g8160" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8162" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(789.10683,451.18792)" + id="g8164" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8166" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(789.10683,451.18792)" + id="g8168" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8170" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(792.96683,451.18792)" + id="g8172" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8174" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(792.96683,451.18792)" + id="g8176" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8178" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(796.82683,451.18792)" + id="g8180" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8182" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(796.82683,451.18792)" + id="g8184" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8186" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(800.68683,452.63792)" + id="g8188" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8190" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(800.68683,452.63792)" + id="g8192" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8194" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(804.54683,452.63792)" + id="g8196" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8198" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(804.54683,452.63792)" + id="g8200" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8202" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(808.40683,452.63792)" + id="g8204" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8206" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(808.40683,452.63792)" + id="g8208" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8210" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(812.26683,452.63792)" + id="g8212" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8214" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(812.26683,452.63792)" + id="g8216" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8218" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(816.12683,452.63792)" + id="g8220" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8222" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(816.12683,452.63792)" + id="g8224" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8226" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(819.98683,451.29792)" + id="g8228" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8230" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(819.98683,451.29792)" + id="g8232" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8234" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(823.84683,451.29792)" + id="g8236" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8238" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(823.84683,451.29792)" + id="g8240" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8242" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(827.70683,451.29792)" + id="g8244" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8246" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(827.70683,451.29792)" + id="g8248" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8250" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(831.56683,451.29792)" + id="g8252" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8254" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(831.56683,451.29792)" + id="g8256" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8258" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(835.42683,451.29792)" + id="g8260" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8262" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(835.42683,451.29792)" + id="g8264" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8266" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(839.28683,451.29792)" + id="g8268" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8270" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="translate(839.28683,451.29792)" + id="g8272" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8274" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + id="g8276" + transform="matrix(1.4,0,0,1.4,-423.70353,-48.639432)" + style="color-interpolation:sRGB;fill:#ffffff;stroke:#ffffff;color-rendering:optimizeSpeed;image-rendering:optimizeSpeed;shape-rendering:crispEdges"> + <path + d="m 887,108 0,-34 -134,0 0,34 z" + id="path8278" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,698.80247,68.067368)" + font-size="12.5px" + id="g8280" + style="font-size:12.5px;font-family:SansSerif;color-interpolation:linearRGB;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + y="4.5" + xml:space="preserve" + id="text8282" + style="stroke:none">BayesOpt</text> + </g> + <g + id="g8284" + transform="matrix(1.4,0,0,1.4,-423.70353,-48.639432)" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-width:0.69440001;stroke-linecap:butt;stroke-linejoin:round;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <line + x1="757.01001" + x2="798.78003" + y1="83.362" + y2="83.362" + id="line8286" + style="fill:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,76.001168)" + id="g8288" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8290" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,76.001168)" + id="g8292" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8294" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,60.134968)" + id="g8296" + style="color-interpolation:linearRGB;fill:#0072bd;stroke:#0072bd;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8298" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,60.134968)" + id="g8300" + style="color-interpolation:linearRGB;fill:none;stroke:#0072bd;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8302" + inkscape:connector-curvature="0" /> + <line + transform="translate(-777.9,-77.696)" + x1="777.90002" + x2="777.90002" + y1="89.028999" + y2="77.695999" + id="line8304" + style="stroke-width:0.69440001;stroke-linejoin:round" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,698.80247,89.453766)" + font-size="12.5px" + id="g8306" + style="font-size:12.5px;font-family:SansSerif;color-interpolation:linearRGB;color-rendering:optimizeQuality;image-rendering:optimizeQuality;text-rendering:geometricPrecision"> + <text + y="4.5" + xml:space="preserve" + id="text8308" + style="stroke:none">MaxLIPO+TR</text> + </g> + <g + id="g8310" + transform="matrix(1.4,0,0,1.4,-423.70353,-48.639432)" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-width:0.69440001;stroke-linecap:butt;stroke-linejoin:round;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <line + x1="757.01001" + x2="798.78003" + y1="98.638" + y2="98.638" + id="line8312" + style="fill:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,97.380566)" + id="g8314" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8316" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,97.380566)" + id="g8318" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8320" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,81.519966)" + id="g8322" + style="color-interpolation:linearRGB;fill:#d95319;stroke:#d95319;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8324" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + <g + transform="matrix(1.4,0,0,1.4,665.35647,81.519966)" + id="g8326" + style="color-interpolation:linearRGB;fill:none;stroke:#d95319;stroke-linecap:butt;color-rendering:optimizeQuality;image-rendering:optimizeQuality"> + <path + d="M -5,0 5,0" + id="path8328" + inkscape:connector-curvature="0" /> + <line + transform="translate(-777.9,-92.971)" + x1="777.90002" + x2="777.90002" + y1="104.3" + y2="92.971001" + id="line8330" + style="stroke-width:0.69440001;stroke-linejoin:round" /> + <path + transform="translate(-777.9,-92.971)" + d="m 753,108 0,-34 134,0 0,34 z" + id="path8332" + inkscape:connector-curvature="0" + style="stroke:#262626;stroke-width:0.69440001" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" + x="114.17912" + y="17.094727" + id="text11666" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan11668" + x="114.17912" + y="17.094727" + style="font-size:22.5px">Solving Holder Table Function: BayesOpt vs. MaxLIPO+TR</tspan></text> +</svg> diff --git a/ml/dlib/docs/docs/bigminus.gif b/ml/dlib/docs/docs/bigminus.gif Binary files differnew file mode 100644 index 00000000..aea8e5c0 --- /dev/null +++ b/ml/dlib/docs/docs/bigminus.gif diff --git a/ml/dlib/docs/docs/bigplus.gif b/ml/dlib/docs/docs/bigplus.gif Binary files differnew file mode 100644 index 00000000..6bee68e2 --- /dev/null +++ b/ml/dlib/docs/docs/bigplus.gif diff --git a/ml/dlib/docs/docs/books.xml b/ml/dlib/docs/docs/books.xml new file mode 100644 index 00000000..cda81bd8 --- /dev/null +++ b/ml/dlib/docs/docs/books.xml @@ -0,0 +1,306 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Suggested Books</title> + + + + <!-- ************************************************************************* --> + + <body> + + <p> + One of the major goals of dlib is to have documentation that enables + someone to easily make use of its various components. Ideally, + you would read a short description of something, understand it immediately, + and begin using it in your application without any difficulty. Obviously, this + depends partly on the background of the user. For example, if you have + never written C++ software before then it probably isn't going to be this easy. + </p> + <p> + This page is meant to complement the main library documentation by providing + references to books, along with my commentary, which explain most of + the background material needed to understand the various parts of the library. + In most cases these are the books I learned from during the process + of creating dlib. As always, if you disagree with anything or think I have left out + an important text then shoot me an <a href="mailto:davis@dlib.net">email</a>. + </p> + <br/><br/> + + + <h2>General Programming</h2> + <ul> + <h3>C++</h3> + <ul> + <li> <i>Programming: Principles and Practice Using C++</i> by Bjarne Stroustrup + <ul> This is the sort of book you would use in a freshman introduction-to-programming class. + So if you are just beginning to study programming and are interested in C++ then I think + it is probably safe to say this is one of the best books you could read. </ul> <br/> + </li> + <li> <i>Accelerated C++: Practical Programming by Example</i> by Andrew Koenig and Barbara E. Moo + <ul> If you are new to C++ but already know how to program then this is a great book. It's also + about one fourth the size of the Stroustrup book. </ul> <br/> + </li> + <li> <i>Effective C++: 55 Specific Ways to Improve Your Programs and Designs</i> (3rd Edition) by Scott Meyers + <ul> This is a great intermediate level C++ book. Most people have heard the jokes about + how easy it is to shoot yourself in the foot with C++. This book explains many things you + need to know about the language to avoid doing so on a regular basis. So if you are + writing C++ software then this is a must-read. I would even claim that + you are a danger to the C++ software you touch unless you know what is in this book. + I'm not kidding. Finally, the book isn't just about the quirks of C++. It also discusses many general + software engineering ideas which have wide applicability. So in this + respect it is a great book for any software developer to read. + </ul><br/> + </li> + <li> <i>More Effective C++: 35 New Ways to Improve Your Programs and Designs</i> by Scott Meyers + <ul> Consider this an expansion to Effective C++. If you are going to read the above + book then you would almost certainly benefit from reading this one as well. + </ul><br/> + </li> + <li> <i>The C++ Standard Library: A Tutorial and Reference</i> by Nicolai M. Josuttis + <ul> If you are going to buy a reference book on the C++ standard library then this + is the one to get. I think you + will find it is better than any of the available online references. So if you find + yourself frustrated with the online resources, then this is the book for you. + </ul><br/> + </li> + <li> <a href="http://www.cplusplus.com/reference/">Online C++ Standard Library Reference</a> + <ul> What I said aside, this is a good online reference. I often find myself referring to it + when I do not have the Josuttis book on hand. + </ul><br/> + </li> + </ul> + + + <h3>Multithreading</h3> + <ul> + <li> <i>Programming with POSIX Threads</i> by David R. Butenhof + <ul> When I was an undergrad, this book was my main resource for learning about multithreading. + It was enjoyable to read, as are all the books on this list, and covered everything + in great depth without becoming overbearing. Also, despite what the title may suggest, + this book is useful for understanding multithreading broadly, not just multithreading + on POSIX systems. + </ul><br/> + </li> + </ul> + + <h3>Network Programming</h3> + <ul> + <li> <i>Unix Network Programming, Volume 1: The Sockets Networking API</i> (3rd Edition) + by W. Richard Stevens + <ul> A lot of people call this book the network programming Bible and + this praise is well deserved. If you want a deep understanding of how computer networks + function, including the Internet, then this is the book to read. As with + the Butenhof book above, this is an excellent choice even for people who do not + intend to write software for Unix systems. + </ul><br/> + </li> + </ul> + + <h3>WIN32 Programming</h3> + It has been a long time since I needed to refer to these two books. However, + they contained information I couldn't find elsewhere no matter + how hard I looked. So I recommend them in case you need to create or understand + some low level win32 code. + <br/> + <br/> + <ul> + <li> <i>Win32 Programming</i> by Brent E. Rector and Joseph M. Newcomer </li> + <li> <i>Programming Windows</i> by Charles Petzold </li> + <li> <a href="http://msdn.microsoft.com/en-us/library/default.aspx">MSDN Library</a> + <ul> This is Microsoft's online reference documentation. It is very large and sometimes + confusing. But at the end of the day you should be able to find the documentation + for just about every function in the entire Windows API. + </ul><br/> + </li> + </ul> + </ul> + + + + + + <h2>Computer Science: Algorithms and Data Structures</h2> + <ul> + <li> <i>Introduction to Algorithms</i> by Cormen, Leiserson, Rivest and Stein + <ul> You should get this book if you are looking for a good discussion of the classic computer science + algorithms and data structures (e.g. most of the components on the <a href="containers.html">containers</a> + page). + </ul><br/> + </li> + <li> <i>Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching</i> + (3rd Edition) by Robert Sedgewick + <ul> This is another good algorithms book. If you are going to get only one book on this + subject then get the one above. However, when I was learning about these topics I + used both these books and on many occasions I found it helpful to read the description + of an algorithm or data structure in both. Where one description was a little vague or + confusing the other generally filled in the gaps. + </ul><br/> + </li> + </ul> + + + + <h2>Lossless Data Compression</h2> + <ul> + <li> <i>Text Compression</i> by Bell, Cleary, and Witten + <ul> When I was studying data compression this was my most useful + resource. If you are looking to understand how lossless data compression + algorithms work then this is the book you want. It is completely self-contained + and an absolute joy to read. Note that contrary to one of the reviews on + amazon.com, the book <i>Managing Gigabytes</i> is not the second edition of this book; + if this topic interests you then be sure you get the 318 page + book published in 1990. + </ul><br/> + </li> + </ul> + + + + <h2>General Math</h2> + + <ul> + <li> <i>Linear Algebra Done Right</i> by Sheldon Jay Axler + <ul> If a matrix seems like an arbitrary grid of numbers or you find that + you are confused by vectors, matrices, and the various things + that get done with them then this book will change your whole view of this subject. + It doesn't teach you any algorithms. Instead, it will give you a general + framework in which to think about all this stuff. Once you have that down + everything else will start to make a lot more sense. If all goes well + you will even start to agree with the following: linear algebra is beautiful. :) + </ul><br/> + </li> + <li> <i>Numerical Linear Algebra</i> by Trefethen and Bau + <ul> While <i>Linear Algebra Done Right</i> is fairly abstract, this book by + Trefethen and Bau will + explain some of the actual algorithms that are often used. + This is a great second book if you find that you want to know more about + the SVD, LU decomposition, or various other algorithms involving linear algebra. + </ul><br/> + </li> + <li> <i>Calculus: Single and Multivariable</i> by Hughes-Hallett, Gleason, and McCallum + <ul> + Some of the books below will require and understanding of basic calculus. So + I'm recommending this book. It was the book I used as an undergrad and I + remember it being alright. That isn't exactly a glowing review so if you + are really considering buying a calculus book you may want to check out + other reviews before picking this one. + </ul><br/> + </li> + <li> <i>Introduction to Real Analysis</i> (third edition) by Bartle and Sherbert + <ul> At some level real analysis is like a really rigorous repeat of calculus. + So if you already have an undergraduate education in calculus and + you are reading things that seem reminiscent of calculus but involve + stuff you haven't seen before (e.g. sup, inf, "sets of numbers", sequences of points) + then you may be in need of a real analysis book. This one is quite good and should + be accessible to someone with the usual undergraduate computer science math background. + </ul><br/> + </li> + </ul> + + + + + + <h2>Optimization</h2> + + The subject of linear algebra is fundamental to optimization. So you must be familiar + with the contents of a book like <i>Linear Algebra Done Right</i> if you are going to study + this area. You will also need to know how to find the derivative of a function and + understand what a derivative is all about. So you will need to know a little bit of + calculus. Finally, once in a while you will need to know a little bit about real + analysis. Ultimately, what you need all depends on how deep you want to go. + + <ul> + <li> <i>Practical Methods of Optimization</i> (second edition) by R. Fletcher 1987 + <ul> I love this book. When I got it I literally spent my weekends sitting around + reading it for hours. It is a fascinating and well written introduction to + the subject of optimization. This has been my most valuable resource for + learning the fundamentals of optimization and I cannot recommend it highly enough. + </ul><br/> + </li> + <li> <i>Numerical Optimization</i> by Jorge Nocedal and Stephen Wright 2006 + <ul> This is a more recent text on optimization that is also very good. It + covers many algorithms not covered by the above book. + </ul><br/> + </li> + <li> <i>Introduction to Derivative-Free Optimization</i> by Conn, Scheinberg, and Vicente + <ul> If you want to understand algorithms like <a href="optimization.html#find_min_bobyqa">BOBYQA</a> + then this is a good recent book on the subject. Note that a book like <i>Practical Methods of Optimization</i> + is almost certainly a prerequisite for reading this book. As an aside, BOBYQA is not discussed in this book but + its predecessor, NEWUOA is. + </ul><br/> + </li> + </ul> + + + + + <h2>Machine Learning</h2> + + <ul> + <li> <i>Artificial Intelligence: A Modern Approach </i> (3rd Edition) by Stuart Russell and Peter Norvig + <ul> This book is about the much broader field of AI but it contains an excellent introduction + to machine learning and it also covers other useful topics like <a href="bayes.html">bayesian networks</a>. + Moreover, it is very well written and self-contained. So you don't need any particular + background to be able to learn from it apart from a typical undergraduate background + in computer science. + </ul><br/> + </li> + <li> <i>Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond </i> + by Bernhard Schlkopf and Alexander J. Smola + <ul> Most of the machine learning tools in dlib are implementations of various kernel methods. + So if you want a book that covers this topic in great depth as well as breadth then this is + probably the book for you. The most important prerequisite for this book is linear + algebra. Virtually everything in this book depends on linear algebra in a fundamental way. + <p> + The second important subject is optimization. Whenever you see the text + mention the KKT conditions, duality, "primal variables", or quadratic programming it + is talking about ideas from optimization. A good book which will explain all this to you + is <i>Practical Methods of Optimization</i>. Note that this book calls the KKT conditions + just the "KT" conditions. It is talking about the same thing. Also, duality + is something that comes up a lot in optimization but in the context of machine learning + usually people are talking about a particular form known as the Wolfe Dual. + </p> + It would also be good (but maybe not critical depending on which parts you want to read) to + be familiar with real analysis. + </ul><br/> + </li> + <li> <i>Kernel Methods for Pattern Analysis </i> by John Shawe-Taylor and Nello Cristianini + <ul> This is another good book about kernel methods. If you have to choose between + this book and <i>Learning with Kernels</i> I would go with <i>Learning with Kernels</i>. However, it is + good to have both since reading different presentations of difficult subjects + usually makes learning them easier. + </ul><br/> + </li> + + <li> <i>Structured Prediction and Learning in Computer Vision</i> by Sebastian Nowozin and Christoph H. Lampert 2011 + <ul> If you are looking for a book discussing the background material necessary + for understanding things like the <a href="ml.html#structural_svm_problem">Structural SVM</a> + tools in dlib then this is a good book. It is also available online + in <a href="http://www.nowozin.net/sebastian/papers/nowozin2011structured-tutorial.pdf">PDF form</a>. + </ul><br/> + </li> + + </ul> + + <h2>Image Processing</h2> + <ul> + <li> <i>Digital Image Processing</i> by Rafael C. Gonzalez and Richard E. Woods + <ul> This is a terrific introduction to digital image processing. + By and large this book doesn't require any special prerequisites. Sometimes + calculus shows up, but not too much. + </ul><br/> + </li> + </ul> + + + </body> + + + + <!-- ************************************************************************* --> + +</doc> + diff --git a/ml/dlib/docs/docs/boost.png b/ml/dlib/docs/docs/boost.png Binary files differnew file mode 100644 index 00000000..b4d51fcd --- /dev/null +++ b/ml/dlib/docs/docs/boost.png diff --git a/ml/dlib/docs/docs/change_log.xml b/ml/dlib/docs/docs/change_log.xml new file mode 100644 index 00000000..6088c869 --- /dev/null +++ b/ml/dlib/docs/docs/change_log.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Change Log</title> + <body from_file="log.txt"> + <br/> + <center><a href="old_change_log.html">Old Change Logs</a></center> + <br/> + </body> +</doc> diff --git a/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE diff --git a/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 diff --git a/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 diff --git a/ml/dlib/docs/docs/chm/README.txt b/ml/dlib/docs/docs/chm/README.txt new file mode 100644 index 00000000..ce1e21ee --- /dev/null +++ b/ml/dlib/docs/docs/chm/README.txt @@ -0,0 +1,5 @@ +The Table of Contents.hhc file is auto generated by the toc.xml and htmlhelp_stylesheet.xsl files. +You really can edit it if you want but I suggest you use the stylesheet to auto generate it instead. + +If you want to regenerate the table of contents file you can do so with +the command "msxsl toc.xml htmlhelp_stylesheet.xsl" if you are using msxsl.exe.
\ No newline at end of file diff --git a/ml/dlib/docs/docs/chm/documentation.html b/ml/dlib/docs/docs/chm/documentation.html new file mode 100644 index 00000000..2a03451c --- /dev/null +++ b/ml/dlib/docs/docs/chm/documentation.html @@ -0,0 +1,20 @@ + + +<TITLE>dlib C++ library</TITLE> + +<SCRIPT LANGUAGE="JavaScript"><!-- +function redirect () { window.location.href = "docs/index.html"; } +//--></SCRIPT> + +</HEAD> + +<BODY onLoad="redirect()"> + + +<p> + +<a href="docs/index.html">click here to go to the documentation</a> +</p> + +</BODY> +</HTML>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/chm/htmlhelp/hha.dll b/ml/dlib/docs/docs/chm/htmlhelp/hha.dll Binary files differnew file mode 100644 index 00000000..07518f2c --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/hha.dll diff --git a/ml/dlib/docs/docs/chm/htmlhelp/hhc.exe b/ml/dlib/docs/docs/chm/htmlhelp/hhc.exe Binary files differnew file mode 100644 index 00000000..9a1f31de --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/hhc.exe diff --git a/ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg b/ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg new file mode 100644 index 00000000..3d91e08b --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg @@ -0,0 +1,5 @@ +REGEDIT4 + + +[HKEY_CURRENT_USER\Software\Wine\AppDefaults\hhc.exe\DllOverrides] +"itss"="native" diff --git a/ml/dlib/docs/docs/chm/htmlhelp/itcc.dll b/ml/dlib/docs/docs/chm/htmlhelp/itcc.dll Binary files differnew file mode 100644 index 00000000..5e78ebb8 --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/itcc.dll diff --git a/ml/dlib/docs/docs/chm/htmlhelp/itircl.dll b/ml/dlib/docs/docs/chm/htmlhelp/itircl.dll Binary files differnew file mode 100644 index 00000000..85d1ec9a --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/itircl.dll diff --git a/ml/dlib/docs/docs/chm/htmlhelp/itss.dll b/ml/dlib/docs/docs/chm/htmlhelp/itss.dll Binary files differnew file mode 100644 index 00000000..da3293be --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/itss.dll diff --git a/ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh b/ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh new file mode 100755 index 00000000..020f83b1 --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cp *.dll ~/.wine/drive_c/windows/system32/ + +# Setup the registry +wine regedit htmlhelp.reg + +wine regsvr32 itcc.dll +wine regsvr32 itircl.dll + diff --git a/ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl b/ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl new file mode 100644 index 00000000..8b101f98 --- /dev/null +++ b/ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl @@ -0,0 +1,223 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output method='html' version='1.0' encoding='UTF-8' indent='yes' /> + + + <xsl:variable name="main_menu" select="/htmlhelp_toc/main_menu_file"/> + <xsl:variable name="docs" select="/htmlhelp_toc/docs_folder"/> + <xsl:variable name="show_include_file" select="/htmlhelp_toc/show_include_file"/> + + <!-- ************************************************************************* --> + <xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz </xsl:variable> + <xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ </xsl:variable> + <!-- ************************************************************************* --> + + + <xsl:template match="/htmlhelp_toc"> + <HTML> + <HEAD> + </HEAD><BODY> + <UL> + + + <xsl:apply-templates select="document($main_menu)/doc/menu"/> + + + + + + + + </UL> + </BODY></HTML> + </xsl:template> + + + + + + <!-- ************************************************************************* --> + + + <xsl:template match="section"> + <xsl:param name="html_file" /> + <xsl:param name="xml_file" /> + + <xsl:choose> + <xsl:when test="count(/doc/menu/top/section) != 1"> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="{name}"/> + </OBJECT> + </LI> + <UL> + <xsl:for-each select="item | chm/item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."> + <xsl:with-param name="xml_file" select="$xml_file"/> + <xsl:with-param name="html_file" select="$html_file"/> + </xsl:apply-templates> + </xsl:for-each> + </UL> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="item | chm/item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."> + <xsl:with-param name="xml_file" select="$xml_file"/> + <xsl:with-param name="html_file" select="$html_file"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="menu"> + <xsl:param name="html_file" /> + <xsl:param name="xml_file" /> + <xsl:for-each select="top/section"> + <xsl:apply-templates select="."> + <xsl:with-param name="xml_file" select="$xml_file"/> + <xsl:with-param name="html_file" select="$html_file"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:template> + + <!-- ************************************************************************* --> + <xsl:template match="item"> + <xsl:param name="html_file" /> + <xsl:param name="xml_file" /> + <xsl:choose> + <xsl:when test="name != ''"> + <LI><OBJECT type="text/sitemap"> + <param name="Name" value="{name}"/> + <xsl:choose> + <xsl:when test="link"> + <param name="Local" value="{$docs}\{link}"/> + </xsl:when> + <xsl:when test="@nolink = 'true'"> + </xsl:when> + <xsl:otherwise> + <param name="Local" value="{$docs}\{$html_file}#{name}"/> + </xsl:otherwise> + </xsl:choose> + + </OBJECT> + </LI> + + <xsl:choose> + <xsl:when test="sub"> + <UL> + <xsl:for-each select="sub/item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."> + <xsl:with-param name="xml_file" select="$xml_file"/> + <xsl:with-param name="html_file" select="$html_file"/> + </xsl:apply-templates> + </xsl:for-each> + </UL> + </xsl:when> + <xsl:when test="chm_sub"> + <UL> + <xsl:apply-templates select="document(chm_sub)/doc/menu"> + <xsl:with-param name="xml_file" select="chm_sub"/> + <xsl:with-param name="html_file" select="link"/> + </xsl:apply-templates> + </UL> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="@nolink = 'true'"> + </xsl:when> + <xsl:otherwise> + <LI><OBJECT type="text/sitemap"> + <param name="Name" value="{.}"/> + <param name="Local" value="{$docs}\{$html_file}#{.}"/> + </OBJECT> + </LI> + <xsl:variable name="cname" select="."/> + <xsl:for-each select="document($xml_file)/doc/components/component"> + <xsl:if test="name = $cname"> + <UL> + <xsl:if test="spec_file"> + <xsl:choose> + <xsl:when test="spec_file/@link = 'true'"> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="specification"/> + <param name="Local" value="{$docs}\{spec_file}.html#{name}"/> + </OBJECT> + </LI> + </xsl:when> + <xsl:otherwise> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="specification"/> + <param name="Local" value="{$docs}\{spec_file}.html"/> + </OBJECT> + </LI> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:if test="$show_include_file = 'true'"> + <xsl:if test="file"> + <xsl:choose> + <xsl:when test="spec_file/@link = 'true' "> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="include file"/> + <param name="Local" value="{$docs}\{file}.html"/> + </OBJECT> + </LI> + </xsl:when> + <xsl:when test="spec_file != file"> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="include file"/> + <param name="Local" value="{$docs}\{file}.html"/> + </OBJECT> + </LI> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:if> + <xsl:if test="body_file"> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="body"/> + <param name="Local" value="{$docs}\{body_file}.html#{name}"/> + </OBJECT> + </LI> + </xsl:if> + <xsl:if test="extensions"> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="extensions"/> + </OBJECT> + </LI> + <UL> + <xsl:for-each select="extensions/extension"> + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="{name}"/> + <param name="Local" value="{$docs}\{spec_file}.html"/> + </OBJECT> + </LI> + </xsl:for-each> + </UL> + </xsl:if> + </UL> + </xsl:if> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- ************************************************************************* --> + <xsl:template match="sub"> + <ul> + <xsl:for-each select="item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."/> + </xsl:for-each> + </ul> + </xsl:template> + + <!-- ************************************************************************* --> + + +</xsl:stylesheet> diff --git a/ml/dlib/docs/docs/chm/lib.hhp b/ml/dlib/docs/docs/chm/lib.hhp new file mode 100644 index 00000000..de5633f1 --- /dev/null +++ b/ml/dlib/docs/docs/chm/lib.hhp @@ -0,0 +1,77 @@ +[OPTIONS] +Binary TOC=Yes +Compatibility=1.1 or later +Compiled file=help.chm +Contents file=Table of Contents.hhc +Default topic=docs/index.html +Display compile progress=Yes +Full-text search=Yes +Language=0x409 English (United States) +Title=dLib + + +[FILES] +docs/guipics/button.png +docs/guipics/check_box.png +docs/guipics/directed_graph_drawer.png +docs/guipics/image_window.jpg +docs/guipics/label.png +docs/guipics/list_box.png +docs/guipics/menu_bar.png +docs/guipics/message_box.png +docs/guipics/mouse_tracker.png +docs/guipics/named_rectangle.png +docs/guipics/open_existing_file_box.png +docs/guipics/open_file_box.png +docs/guipics/popup_menu.png +docs/guipics/radio_button.png +docs/guipics/save_file_box.png +docs/guipics/scroll_bar.png +docs/guipics/tabbed_display.png +docs/guipics/text_box.png +docs/guipics/text_field.png +docs/guipics/text_grid.png +docs/api.html +docs/dlib/test/makefile +docs/right.gif +docs/down.gif +docs/plus.gif +docs/minus.gif +docs/change_log.html +docs/compile.html +docs/compress_stream_ex.cpp.html +docs/compression.html +docs/containers.html +docs/dir_nav_ex.cpp.html +docs/gui_api_ex.cpp.html +docs/index.html +docs/intro.html +docs/optimization.html +docs/kernel_1a.html +docs/kernel_1b.html +docs/kernel_1c.html +docs/kernel_1da.html +docs/kernel_1db.html +docs/kernel_1ea.html +docs/kernel_1eb.html +docs/kernel_1ec.html +docs/kernel_2a.html +docs/kernel_3a.html +docs/kernel_3b.html +docs/license.html +docs/network.html +docs/other.html +docs/metaprogramming.html +docs/imaging.html +docs/parsing.html +docs/queue_ex.cpp.html +docs/release_notes.html +docs/old_release_notes.html +docs/sockets_ex.cpp.html +docs/faq.html +docs/rbf_normal.gif +docs/rbf_big_gamma.gif +docs/rbf_small_gamma.gif + +[INFOTYPES] + diff --git a/ml/dlib/docs/docs/chm/toc.xml b/ml/dlib/docs/docs/chm/toc.xml new file mode 100644 index 00000000..37593b1e --- /dev/null +++ b/ml/dlib/docs/docs/chm/toc.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="htmlhelp_stylesheet.xsl"?> + +<htmlhelp_toc> + <docs_folder>docs</docs_folder> + <main_menu_file>../main_menu.xml</main_menu_file> + <show_include_file>false</show_include_file> +</htmlhelp_toc> + + diff --git a/ml/dlib/docs/docs/compile.xml b/ml/dlib/docs/docs/compile.xml new file mode 100644 index 00000000..bb21b3fa --- /dev/null +++ b/ml/dlib/docs/docs/compile.xml @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>How to compile</title> + + + + + + <!-- ************************************************************************* --> + + <body> + + <h2>Compiling C++ Example Programs on Any Operating System Using CMake</h2> + The best way to compile a program that uses dlib is to use <a href="http://www.cmake.org">CMake</a>. For + example, the following commands will compile the example programs on any operating + system: +<code_box> +cd examples +mkdir build +cd build +cmake .. +cmake --build . --config Release +</code_box> +Note that you also need to have a C++11 compiler installed on your system. There are free C++11 compilers +for most operating systems. For example, Visual Studio is free on Windows and GCC is free and +works well on Mac OS X and Linux systems. If you have multiple compilers/IDEs installed then you can +tell CMake which one you want it to use via the -G option. +<p> + The <a href="examples/CMakeLists.txt.html">examples/CMakeLists.txt</a> file tells CMake how to build + the examples. You can create your own projects by starting with this file and editing it however you like. + You can also perform additional configuration of a cmake project using the cmake-gui or ccmake tool. For example, + if you are using dlib's face detector then you should turn on either SSE4 or AVX instructions since this + makes it run much faster (also see <a href="faq.html#Whyisdlibslow">this FAQ</a>). +</p> +<p> + Finally, note that when using Visual Studio, CMake will by default generate a 32bit executable. + This means the programs you compile will only be able to use 2GB of RAM. To avoid this, you need + to tell CMake to generate a 64bit executable. You do this by using a command like + <code_box>cmake -G "Visual Studio 14 2015 Win64" -T host=x64 ..</code_box> instead of <code_box>cmake ..</code_box> + You can see the list of valid arguments to <tt>-G</tt> by running <tt>cmake</tt> with no options. Note also the <tt>-T host=x64</tt> + option, which tells Visual Studio to let the compiler use more than 2GB of RAM. That is important if you don't want the compiler to + crash from running out of RAM in some situations. +</p> + + +<br/> + <h2>Compiling Dlib's Python Interface</h2> + <p> + Go to the base folder of the dlib repository and run <tt>python setup.py install</tt>. That + should compile and install the dlib python API on your system. + </p> + <p> + Alternatively, if you want to add more python bindings to dlib's + python interface then you probably want to avoid the setup.py file + and work directly using CMake. In particular, dlib's python API is + built by the CMake project in the tools/python folder. You build + this project using the usual CMake commands and when compiled it + outputs the dlib shared library that defines the python API for dlib. + </p> +<br/> + + + <h2>Compiling C++ Examples Without CMake</h2> + + <p> + In most cases, to use this library all you have to do is extract it somewhere, make + sure the folder <i>containing</i> the dlib folder is in your include path, and + finally add dlib/all/source.cpp to your + project. It is worth noting that most of dlib is "header-only" which means that, in + many cases, you don't actually have to build dlib/all/source.cpp into your + application. So if you don't get linker errors when you exclude dlib/all/source.cpp + from your project then you don't need it. + </p> + <p> + An example makefile that uses this library can be found here: <a + href="dlib/test/makefile">dlib/test/makefile</a>. It is the makefile used to build + the regression test suite for this library. + </p> + <p> + Again, note that you should <b><i>not</i></b> add the dlib folder itself to your compiler's include path. + Doing so will cause the + build to fail because of name collisions (e.g. dlib/string.h with string.h from the standard library). + Instead you should add the folder that contains the dlib folder to your include search path and then use + include statements of the form <tt>#include <dlib/queue.h></tt>. This will ensure that everything + builds correctly. + </p> + <p> + Note also that if you want to work with jpeg/png/gif files using dlib then you will + need to link your program with libjpeg, libpng, and/or libgif. You also need to tell dlib + about this by defining the DLIB_JPEG_SUPPORT, DLIB_PNG_SUPPORT, and DLIB_GIF_SUPPORT preprocessor directives. + How you "link to libjpeg/libpng/libgif" varies from platform to platform. On UNIX machines you + usually just add a -ljpeg, -lpng, or -lgif switch to your compiler (after installing the libraries). + On windows it's less well defined. So dlib comes with a copy of libjpeg and libpng in the dlib/external + folder so you can statically compile them into your application if no system wide version + is available on your machine. If all this talk about linking is confusing to you then + just use CMake. It will set this all up for you. + </p> + <p> + Dlib is also capable of using any optimized BLAS or LAPACK libraries that are + installed on your system. Linking to these libraries will make many things run + faster. To do this you define the DLIB_USE_BLAS and/or DLIB_USE_LAPACK preprocessor + directives and then link your program with whatever BLAS or LAPACK libraries you + have. If you use CMake it will set this up automatically. + </p> + + + + + <h3>Compiling on Linux From Command Line</h3> + From within the examples folder, you can compile nearly all of the examples with a single command like so: +<code_box> +g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 example_program_name.cpp +</code_box> + Note that not all examples require this much work. For example, the svm_ex.cpp example + can be compiled with just: +<code_box> +g++ -std=c++11 -O3 -I.. svm_ex.cpp +</code_box> + +On non-Linux systems like Solaris, you might have to link to other libraries. For example, I have seen systems +where it was also necessary to supply -lnsl or -lsocket options to g++. Additionally, the X11 development +library isn't installed on Ubuntu by default. So if you require it and are using Ubuntu you can install +it by typing: +<code_box> +sudo apt-get install libx11-dev +</code_box> + + <h3>Compiling on Windows Using GCC</h3> + <p> + The commands for gcc on windows are the same as above but you may also have to link + (via the -l option) to the following libraries: gdi32, comctl32, user32, winmm, ws2_32, or imm32. + </p> + + <h3>Compiling on Windows Using Visual Studio 2015 or Newer</h3> + <p> + All you need to do is create an empty console project. Then add dlib/all/source.cpp to it and add the + folder containing the dlib folder to the #include search path. Then you can compile any example program + by adding it to your project. + </p> + <p> + Again, note that dlib will only be able to work with jpeg and png files if you link + in libjpeg and libpng. In Visual Studio, the easiest way to do this is to add all the + libjpeg, libpng, and zlib source files in the dlib/external folder into your project and also define the + DLIB_PNG_SUPPORT and DLIB_JPEG_SUPPORT preprocessor directives. If you don't know + how to configure Visual Studio then you should use CMake as shown above since it will + take care of everything automatically. + </p> + + + <br/> + <center><h1>Miscellaneous Preprocessor Directives</h1></center> + + <p> + In addition to the preprocessor directives mentioned above, there + are a few more you can supply during the build process to cause the + library to build in various optional ways. By default, the library + will always do something reasonable, but they are listed here in + the event that you need to use them. + </p> + + + <anchor>ENABLE_ASSERTS</anchor> + <h3>#define ENABLE_ASSERTS</h3> + <p> + Defining this directive causes all the <a href="metaprogramming.html#DLIB_ASSERT">DLIB_ASSERT</a> macros to + be active. If you are using Visual Studio or CMake then ENABLE_ASSERTS will be automatically enabled + for you when you compile in debug mode. However, if you are using a different build system then you + might have to manually enable it if you want to turn the asserts on. + </p> + + <anchor>DLIB_ISO_CPP_ONLY</anchor> + <h3>#define DLIB_ISO_CPP_ONLY</h3> + <p> + This is a #define directive that you can set to cause the library to exclude all non ISO C++ code (The things in the <a href="api.html">API wrappers</a> section and any objects that depend on those wrappers). + This is useful if you are trying to build on a system that isn't fully supported by the library or if you + just decide you don't want any of that stuff compiled into your program for your own reasons. + </p> + <anchor>DLIB_NO_GUI_SUPPORT</anchor> + <h3>#define DLIB_NO_GUI_SUPPORT</h3> + <p> + This is just like the DLIB_ISO_CPP_ONLY option except that it excludes only the GUI part of the library. + An example of when you might want to use this would be if you don't need GUI support and you are building + on a UNIX platform that doesn't have the X11 headers installed. + </p> + <anchor>NO_MAKEFILE</anchor> + <h3>#define NO_MAKEFILE</h3> + <p> + This preprocessor directive causes the dlib headers to pull in all the + code that would normally be built in dlib/all/source.cpp. Thus if you #define NO_MAKEFILE you won't + have to add dlib/all/source.cpp to your project. The <i>only</i> time this is useful is when your + project consists of a single translation unit (i.e. a single cpp file). In this instance NO_MAKEFILE + allows you to easily build your project on the command line by saying something like <tt>g++ -DNO_MAKEFILE + project.cpp</tt>. But again, this is only for single cpp file projects. If you use NO_MAKEFILE with projects + that contain more than one cpp file you will get linker errors about multiply defined symbols. + </p> + <p> + Also note that if you use this macro then the <a href="metaprogramming.html#DLIB_STACK_TRACE">stack trace</a> + functionality in the library will be disabled. + </p> + <anchor>DLIB_THREAD_POOL_TIMEOUT</anchor> + <h3>#define DLIB_THREAD_POOL_TIMEOUT <time-in-milliseconds></h3> + <p> + If you use dlib to create your threads then you receive the benefit of the dlib dynamic thread pool (Note that the + dlib::<a href="api.html#thread_pool">thread_pool</a> object is something else unrelated to this so don't confuse + the two). This pool + enables dlib to spawn new threads very rapidly since it draws threads back out of its thread pool when + the pool isn't empty. + </p> + <p> + Thus, when a thread that was created by dlib ends it actually goes back into the dlib thread pool + and waits DLIB_THREAD_POOL_TIMEOUT milliseconds before totally terminating and releasing its resources back + to the operating system. The default timeout used by this library is 30,000 milliseconds (30 seconds). You + may however change this to whatever you like by defining DLIB_THREAD_POOL_TIMEOUT to some new value. + </p> + + + + + </body> + + + + <!-- ************************************************************************* --> + +</doc> diff --git a/ml/dlib/docs/docs/compression.xml b/ml/dlib/docs/docs/compression.xml new file mode 100644 index 00000000..a5b3897b --- /dev/null +++ b/ml/dlib/docs/docs/compression.xml @@ -0,0 +1,881 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Data Compression</title> + + <!-- ************************************************************************* --> + + <body> + <p> + This page contains a bunch of objects that implement various parts of compression algorithms. + They can be put together in different ways to construct many different algorithms. + Note that the <a href="#compress_stream">compress_stream</a> object contains complete compression algorithms. So if you + just want to compress some data then you can easily use that object and not bother with the others. + </p> + <p> + In the column to the right you can see benchmark data for each of the compress_stream + typedefs. The times measured are the time it takes to compress and then + decompress each file. It was run on a 3.0ghz P4. For reference see the Canterbury corpus + <a href="http://corpus.canterbury.ac.nz/">web site</a>. + </p> + + + + </body> + + <!-- ************************************************************************* --> + + <menu width="200"> + <top> + <section> + <name>Objects</name> + <item>compress_stream</item> + <item>conditioning_class</item> + <item>entropy_decoder</item> + <item>entropy_encoder</item> + <item>entropy_decoder_model</item> + <item>entropy_encoder_model</item> + <item>lz77_buffer</item> + <item>lzp_buffer</item> + </section> + + + + + <section> + <name>Benchmarks</name> + <item> + <name>kernel_1a</name> + <link>kernel_1a.html</link> + </item> + <item> + <name>kernel_1b</name> + <link>kernel_1b.html</link> + </item> + <item> + <name>kernel_1c</name> + <link>kernel_1c.html</link> + </item> + <item> + <name>kernel_1da</name> + <link>kernel_1da.html</link> + </item> + <item> + <name>kernel_1db</name> + <link>kernel_1db.html</link> + </item> + <item> + <name>kernel_1ea</name> + <link>kernel_1ea.html</link> + </item> + <item> + <name>kernel_1eb</name> + <link>kernel_1eb.html</link> + </item> + <item> + <name>kernel_1ec</name> + <link>kernel_1ec.html</link> + </item> + <item> + <name>kernel_2a</name> + <link>kernel_2a.html</link> + </item> + <item> + <name>kernel_3a</name> + <link>kernel_3a.html</link> + </item> + <item> + <name>kernel_3b</name> + <link>kernel_3b.html</link> + </item> + </section> + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + + <!-- ************************************************************************* --> + + <component> + <name>compress_stream</name> + <file>dlib/compress_stream.h</file> + <spec_file>dlib/compress_stream/compress_stream_kernel_abstract.h</spec_file> + <description> + This object is pretty straight forward. It has no state and just + contains the functions compress and decompress. + They do just what their names imply to iostream objects. + </description> + + <examples> + <example>compress_stream_ex.cpp.html</example> + <example>file_to_code_ex.cpp.html</example> + </examples> + + <implementations> + <implementation> + <name>compress_stream_kernel_1</name> + <file>dlib/compress_stream/compress_stream_kernel_1.h</file> + <description> + This implementation is done using the <a href="#entropy_encoder_model">entropy_encoder_model</a> and + <a href="#entropy_decoder_model">entropy_decoder_model</a> objects. + </description> + + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_1b and entropy_decoder_model_kernel_1b</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_2b and entropy_decoder_model_kernel_2b </description> + </typedef> + <typedef> + <name>kernel_1c</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_3b and entropy_decoder_model_kernel_3b </description> + </typedef> + <typedef> + <name>kernel_1da</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_4a and entropy_decoder_model_kernel_4a </description> + </typedef> + <typedef> + <name>kernel_1db</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_4b and entropy_decoder_model_kernel_4b </description> + </typedef> + <typedef> + <name>kernel_1ea</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_5a and entropy_decoder_model_kernel_5a </description> + </typedef> + <typedef> + <name>kernel_1eb</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_5b and entropy_decoder_model_kernel_5b </description> + </typedef> + <typedef> + <name>kernel_1ec</name> + <description>is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_5c and entropy_decoder_model_kernel_5c </description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>compress_stream_kernel_2</name> + <file>dlib/compress_stream/compress_stream_kernel_2.h</file> + <description> + This implementation is done using the <a href="#entropy_encoder_model">entropy_encoder_model</a> and + <a href="#entropy_decoder_model">entropy_decoder_model</a> objects. It also uses the + <a href="#lz77_buffer">lz77_buffer</a> object. It uses the entropy coder models to + encode symbols when there is no match found by the lz77_buffer. + </description> + + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for compress_stream_kernel_2 which uses entropy_encoder_model_kernel_2b, entropy_decoder_model_kernel_2b, and lz77_buffer_kernel_2a.</description> + </typedef> + + </typedefs> + + </implementation> + + <implementation> + <name>compress_stream_kernel_3</name> + <file>dlib/compress_stream/compress_stream_kernel_3.h</file> + <description> + This implementation is done using the <a href="#lzp_buffer">lzp_buffer</a> object and + <a href="other.html#crc32">crc32</a> object. It does not use any sort of entropy coding, instead + a byte aligned output method is used. + </description> + + + <typedefs> + <typedef> + <name>kernel_3a</name> + <description>is a typedef for compress_stream_kernel_3 which uses lzp_buffer_kernel_1.</description> + </typedef> + <typedef> + <name>kernel_3b</name> + <description>is a typedef for compress_stream_kernel_3 which uses lzp_buffer_kernel_2.</description> + </typedef> + + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>conditioning_class</name> + <file>dlib/conditioning_class.h</file> + <spec_file>dlib/conditioning_class/conditioning_class_kernel_abstract.h</spec_file> + <description> + This object represents a conditioning class used for arithmetic style + compression. It maintains the cumulative counts which are needed + by the entropy_encoder and entropy_decoder objects below. + </description> + + <implementations> + <implementation> + <name>conditioning_class_kernel_1</name> + <file>dlib/conditioning_class/conditioning_class_kernel_1.h</file> + <description> + This implementation is done using an array to store all the counts and they are summed + whenever the cumulative counts are requested. It's pretty straight forward. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for conditioning_class_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>conditioning_class_kernel_2</name> + <file>dlib/conditioning_class/conditioning_class_kernel_2.h</file> + <description> + This implementation is done using a binary tree where each node in the tree represents one symbol and + contains that symbols count and the sum of all the counts for the nodes to the left. This way + when you request a cumulative count it can be computed by visiting log n nodes where n is the + size of the alphabet. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for conditioning_class_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>conditioning_class_kernel_3</name> + <file>dlib/conditioning_class/conditioning_class_kernel_3.h</file> + <description> + This implementation is done using an array to store all the counts and they are + summed whenever the cumulative counts are requested. The counts are also kept in + semi-sorted order to speed up the calculation of the cumulative count. + </description> + + <typedefs> + <typedef> + <name>kernel_3a</name> + <description>is a typedef for conditioning_class_kernel_3</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>conditioning_class_kernel_4</name> + <file>dlib/conditioning_class/conditioning_class_kernel_4.h</file> + <description> + This implementation is done using a linked list to store all the counts and they are + summed whenever the cumulative counts are requested. The counts are also kept in + semi-sorted order to speed up the calculation of the cumulative count. This implementation + also uses the <a href="other.html#memory_manager">memory_manager</a> component to create a + memory pool of linked list nodes. This implementation is especially useful for high order + contexts and/or very large and sparse alphabets. + </description> + + + <typedefs> + <typedef> + <name>kernel_4a</name> + <description>is a typedef for conditioning_class_kernel_4 with a memory pool of 10,000 nodes.</description> + </typedef> + <typedef> + <name>kernel_4b</name> + <description>is a typedef for conditioning_class_kernel_4 with a memory pool of 100,000 nodes.</description> + </typedef> + <typedef> + <name>kernel_4c</name> + <description>is a typedef for conditioning_class_kernel_4 with a memory pool of 1,000,000 nodes.</description> + </typedef> + <typedef> + <name>kernel_4d</name> + <description>is a typedef for conditioning_class_kernel_4 with a memory pool of 10,000,000 nodes.</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>entropy_decoder</name> + <file>dlib/entropy_decoder.h</file> + <spec_file>dlib/entropy_decoder/entropy_decoder_kernel_abstract.h</spec_file> + <description> + This object represents an entropy decoder. E.g. the decoding part of + an arithmetic coder. + </description> + + <implementations> + <implementation> + <name>entropy_decoder_kernel_1</name> + <file>dlib/entropy_decoder/entropy_decoder_kernel_1.h</file> + <description> + This object is implemented using arithmetic coding and is done in the + straight forward way using integers and fixed precision math. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for entropy_decoder_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>entropy_decoder_kernel_2</name> + <file>dlib/entropy_decoder/entropy_decoder_kernel_2.h</file> + <description> + This object is implemented using "range" coding and is done + in the straight forward way using integers and fixed precision math. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for entropy_decoder_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>entropy_encoder</name> + <file>dlib/entropy_encoder.h</file> + <spec_file>dlib/entropy_encoder/entropy_encoder_kernel_abstract.h</spec_file> + <description> + This object represents an entropy encoder. E.g. the encoding part of + an arithmetic coder. + </description> + + <implementations> + <implementation> + <name>entropy_encoder_kernel_1</name> + <file>dlib/entropy_encoder/entropy_encoder_kernel_1.h</file> + <description> + This object is implemented using arithmetic coding and is done in the + straight forward way using integers and fixed precision math. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for entropy_encoder_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>entropy_encoder_kernel_2</name> + <file>dlib/entropy_encoder/entropy_encoder_kernel_2.h</file> + <description> + This object is implemented using "range" coding and is done + in the straight forward way using integers and fixed precision math. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for entropy_encoder_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>entropy_decoder_model</name> + <file>dlib/entropy_decoder_model.h</file> + <spec_file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_abstract.h</spec_file> + <description> + This object represents some kind of statistical model. You + can use it to read symbols from an entropy_decoder and it will calculate + the cumulative counts/probabilities and manage contexts for you. + </description> + + <implementations> + <implementation> + <name>entropy_decoder_model_kernel_1</name> + <file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_1.h</file> + <description> + This object is implemented using the <a href="#conditioning_class">conditioning_class</a> component. + It implements an <i>order-0</i> finite context model and uses lazy exclusions and update exclusions. + The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for entropy_decoder_model_kernel_1 that uses conditioning_class_kernel_1a</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for entropy_decoder_model_kernel_1 that uses conditioning_class_kernel_2a</description> + </typedef> + <typedef> + <name>kernel_1c</name> + <description>is a typedef for entropy_decoder_model_kernel_1 that uses conditioning_class_kernel_3a</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_decoder_model_kernel_2</name> + <file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_2.h</file> + <description> + This object is implemented using the <a href="#conditioning_class">conditioning_class</a> component. + It implements an <i>order-1-0</i> finite context model and uses lazy exclusions and update exclusions. + The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_1a</description> + </typedef> + <typedef> + <name>kernel_2b</name> + <description>is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_2a</description> + </typedef> + <typedef> + <name>kernel_2c</name> + <description>is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_3a</description> + </typedef> + <typedef> + <name>kernel_2d</name> + <description>is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_2a for its order-0 + context and conditioning_class_kernel_4b for its order-1 context.</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_decoder_model_kernel_3</name> + <file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_3.h</file> + <description> + This object is implemented using the <a href="#conditioning_class">conditioning_class</a> component. + It implements an <i>order-2-1-0</i> finite context model and uses lazy exclusions and update exclusions. + The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_3a</name> + <description> is a typedef for entropy_decoder_model_kernel_3 that uses conditioning_class_kernel_1a for orders 0 and 1 + and conditioning_class_kernel_4b for order-2.</description> + </typedef> + <typedef> + <name>kernel_3b</name> + <description> is a typedef for entropy_decoder_model_kernel_3 that uses conditioning_class_kernel_2a for orders 0 and 1 + and conditioning_class_kernel_4b for order-2.</description> + </typedef> + <typedef> + <name>kernel_3c</name> + <description> is a typedef for entropy_decoder_model_kernel_3 that uses conditioning_class_kernel_3a for orders 0 and 1 + and conditioning_class_kernel_4b for order-2.</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_decoder_model_kernel_4</name> + <file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h</file> + <description> + This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing + the PPM data compression scheme." + It provides template arguments to select the maximum order and maximum memory to use. For speed, + exclusions are not used. The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_4a</name> + <description> is a typedef for entropy_decoder_model_kernel_4 with the max order set to 4 and the max number + of nodes set to 200,000</description> + </typedef> + <typedef> + <name>kernel_4b</name> + <description> is a typedef for entropy_decoder_model_kernel_4 with the max order set to 5 and the max number + of nodes set to 1,000,000</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_decoder_model_kernel_5</name> + <file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h</file> + <description> + This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing + the PPM data compression scheme." + It provides template arguments to select the maximum order and maximum memory to use. Exclusions are used. The escape method used is method D. + This implementation is very much like kernel_4 except it is tuned for higher compression rather than speed. + This also uses Dmitry Shkarin's Information Inheritance scheme. + </description> + + <typedefs> + <typedef> + <name>kernel_5a</name> + <description> is a typedef for entropy_decoder_model_kernel_5 with the max order set to 4 and the max number + of nodes set to 200,000</description> + </typedef> + <typedef> + <name>kernel_5b</name> + <description> is a typedef for entropy_decoder_model_kernel_5 with the max order set to 5 and the max number + of nodes set to 1,000,000</description> + </typedef> + <typedef> + <name>kernel_5c</name> + <description> is a typedef for entropy_decoder_model_kernel_5 with the max order set to 7 and the max number + of nodes set to 2,500,000</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_decoder_model_kernel_6</name> + <file>dlib/entropy_decoder_model/entropy_decoder_model_kernel_6.h</file> + <description> + This object just assigns every symbol the same probability. I.e. it uses an <i>order-(-1)</i> model. + </description> + + <typedefs> + <typedef> + <name>kernel_6a</name> + <description>is a typedef for entropy_decoder_model_kernel_6</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>entropy_encoder_model</name> + <file>dlib/entropy_encoder_model.h</file> + <spec_file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_abstract.h</spec_file> + <description> + This object represents some kind of statistical model. You + can use it to write symbols to an entropy_encoder and it will calculate + the cumulative counts/probabilities and manage contexts for you. + </description> + + <implementations> + <implementation> + <name>entropy_encoder_model_kernel_1</name> + <file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_1.h</file> + <description> + This object is implemented using the <a href="#conditioning_class">conditioning_class</a> component. + It implements an <i>order-0</i> finite context model and uses lazy exclusions and update exclusions. + The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for entropy_encoder_model_kernel_1 that uses conditioning_class_kernel_1a</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for entropy_encoder_model_kernel_1 that uses conditioning_class_kernel_2a</description> + </typedef> + <typedef> + <name>kernel_1c</name> + <description>is a typedef for entropy_encoder_model_kernel_1 that uses conditioning_class_kernel_3a</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_encoder_model_kernel_2</name> + <file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h</file> + <description> + This object is implemented using the <a href="#conditioning_class">conditioning_class</a> component. + It implements an <i>order-1-0</i> finite context model and uses lazy exclusions and update exclusions. + The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_1a</description> + </typedef> + <typedef> + <name>kernel_2b</name> + <description>is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_2a</description> + </typedef> + <typedef> + <name>kernel_2c</name> + <description>is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_3a</description> + </typedef> + <typedef> + <name>kernel_2d</name> + <description>is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_2a for its order-0 + context and conditioning_class_kernel_4b for its order-1 context.</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_encoder_model_kernel_3</name> + <file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_3.h</file> + <description> + This object is implemented using the <a href="#conditioning_class">conditioning_class</a> component. + It implements an <i>order-2-1-0</i> finite context model and uses lazy exclusions and update exclusions. + The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_3a</name> + <description> is a typedef for entropy_encoder_model_kernel_3 that uses conditioning_class_kernel_1a for orders 0 and 1 + and conditioning_class_kernel_4b for order-2.</description> + </typedef> + <typedef> + <name>kernel_3b</name> + <description> is a typedef for entropy_encoder_model_kernel_3 that uses conditioning_class_kernel_2a for orders 0 and 1 + and conditioning_class_kernel_4b for order-2.</description> + </typedef> + <typedef> + <name>kernel_3c</name> + <description> is a typedef for entropy_encoder_model_kernel_3 that uses conditioning_class_kernel_3a for orders 0 and 1 + and conditioning_class_kernel_4b for order-2.</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_encoder_model_kernel_4</name> + <file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_4.h</file> + <description> + This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing + the PPM data compression scheme." + It provides template arguments to select the maximum order and maximum memory to use. For speed, + exclusions are not used. The escape method used is method D. + </description> + + <typedefs> + <typedef> + <name>kernel_4a</name> + <description> is a typedef for entropy_encoder_model_kernel_4 with the max order set to 4 and the max number + of nodes set to 200,000</description> + </typedef> + <typedef> + <name>kernel_4b</name> + <description> is a typedef for entropy_encoder_model_kernel_4 with the max order set to 5 and the max number + of nodes set to 1,000,000</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_encoder_model_kernel_5</name> + <file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_5.h</file> + <description> + This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing + the PPM data compression scheme." + It provides template arguments to select the maximum order and maximum memory to use. Exclusions are used. The escape method used is method D. + This implementation is very much like kernel_4 except it is tuned for higher compression rather than speed. + This also uses Dmitry Shkarin's Information Inheritance scheme. + </description> + + <typedefs> + <typedef> + <name>kernel_5a</name> + <description> is a typedef for entropy_encoder_model_kernel_5 with the max order set to 4 and the max number + of nodes set to 200,000</description> + </typedef> + <typedef> + <name>kernel_5b</name> + <description> is a typedef for entropy_encoder_model_kernel_5 with the max order set to 5 and the max number + of nodes set to 1,000,000</description> + </typedef> + <typedef> + <name>kernel_5c</name> + <description> is a typedef for entropy_encoder_model_kernel_5 with the max order set to 7 and the max number + of nodes set to 2,500,000</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>entropy_encoder_model_kernel_6</name> + <file>dlib/entropy_encoder_model/entropy_encoder_model_kernel_6.h</file> + <description> + This object just assigns every symbol the same probability. I.e. it uses an <i>order-(-1)</i> model. + </description> + + <typedefs> + <typedef> + <name>kernel_6a</name> + <description>is a typedef for entropy_encoder_model_kernel_6</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>lz77_buffer</name> + <file>dlib/lz77_buffer.h</file> + <spec_file>dlib/lz77_buffer/lz77_buffer_kernel_abstract.h</spec_file> + <description> + This object represents a pair of buffers (history and lookahead buffers) + used during lz77 style compression. + </description> + + <implementations> + <implementation> + <name>lz77_buffer_kernel_1</name> + <file>dlib/lz77_buffer/lz77_buffer_kernel_1.h</file> + <description> + This object is implemented using the <a href="containers.html#sliding_buffer">sliding_buffer</a> and it + just does simple linear searches of the history buffer to find matches. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for lz77_buffer_kernel_1 that uses sliding_buffer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>lz77_buffer_kernel_2</name> + <file>dlib/lz77_buffer/lz77_buffer_kernel_2.h</file> + <description> + This object is implemented using the <a href="containers.html#sliding_buffer">sliding_buffer</a>. It + finds matches by using a hash table. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for lz77_buffer_kernel_2 that uses sliding_buffer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>lzp_buffer</name> + <file>dlib/lzp_buffer.h</file> + <spec_file>dlib/lzp_buffer/lzp_buffer_kernel_abstract.h</spec_file> + <description> + This object represents some variation on the LZP algorithm + described by Charles Bloom in his paper "LZP: a new data + compression algorithm" + </description> + + <implementations> + <implementation> + <name>lzp_buffer_kernel_1</name> + <file>dlib/lzp_buffer/lzp_buffer_kernel_1.h</file> + <description> + This object is implemented using the <a href="containers.html#sliding_buffer">sliding_buffer</a> and uses + an order-3 model to predict matches. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for lzp_buffer_kernel_1 that uses sliding_buffer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>lzp_buffer_kernel_2</name> + <file>dlib/lzp_buffer/lzp_buffer_kernel_2.h</file> + <description> + This object is implemented using the <a href="containers.html#sliding_buffer">sliding_buffer</a> and uses + an order-5-4-3 model to predict matches. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for lzp_buffer_kernel_2 that uses sliding_buffer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/containers.xml b/ml/dlib/docs/docs/containers.xml new file mode 100644 index 00000000..8409b690 --- /dev/null +++ b/ml/dlib/docs/docs/containers.xml @@ -0,0 +1,1201 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Containers</title> + + <!-- ************************************************************************* --> + + <body> + <p> + Many of these containers were inspired by the work of the <a + href="http://www.cse.ohio-state.edu/~weide/rsrg/index.html">Reusable + Software Research Group</a> at Ohio State. As such, many of the objects do not support + copying in any form, only swapping is allowed. That is, when objects + are added or removed from most of these containers they are swapped in + and out, not copied. + </p> + + <p> + This allows you to do things like have containers of containers of + containers without encountering the overhead of the massive copying + that would likely result if you did the same thing with the STL. It + also means you can store objects that are not copyable inside these + containers, which is not something you can do with the STL prior to C++11. + </p> + + <p> + Note that it is assumed by these containers that swap() and + operator< do not throw. They may not function correctly if this + assumption is broken. Also note that the built in types (int, long, + char, etc.) and std::string will not cause operator< or swap() to + throw. + </p> + + <p> + Note also that most of the containers inherit from the + <a href="#enumerable">enumerable</a> interface. Thus, all the + member functions inherited from enumerable are defined in the + enumerable class and their documentation is not repeated in each + container's documentation. This includes the size() member + function in each container. + </p> + + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>Objects</name> + <item>static_set</item> + <item>any</item> + <item>any_trainer</item> + <item>any_function</item> + <item>any_decision_function</item> + <item>array</item> + <item>array2d</item> + <item>binary_search_tree</item> + <item>hash_map</item> + <item>hash_set</item> + <item>hash_table</item> + <item>directed_graph</item> + <item>graph</item> + <item>map</item> + <item>queue</item> + <item>reference_counter</item> + <item>type_safe_union</item> + <item>unordered_pair</item> + <item>sequence</item> + <item>set</item> + <item>stack</item> + <item>std_vector_c</item> + <item>static_map</item> + <item>sliding_buffer</item> + <item>circular_buffer</item> + <item>tuple</item> + <item>reference_wrapper</item> + + </section> + + <section> + <name>Interfaces</name> + <item>map_pair</item> + <item>enumerable</item> + <item> + <name>remover</name> + <sub> + <item> + <name>remover</name> + <link>dlib/interfaces/remover.h.html#remover</link> + </item> + <item> + <name>asc_remover</name> + <link>dlib/interfaces/remover.h.html#asc_remover</link> + </item> + <item> + <name>pair_remover</name> + <link>dlib/interfaces/remover.h.html#pair_remover</link> + </item> + <item> + <name>asc_pair_remover</name> + <link>dlib/interfaces/remover.h.html#asc_pair_remover</link> + </item> + </sub> + </item> + </section> + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <component> + <name>array</name> + <file>dlib/array.h</file> + <spec_file>dlib/array/array_kernel_abstract.h</spec_file> + <description> + This object represents a 1-Dimensional array of objects. + </description> + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>sliding_buffer</name> + <file>dlib/sliding_buffer.h</file> + <spec_file>dlib/sliding_buffer/sliding_buffer_kernel_abstract.h</spec_file> + <description> + This object represents an array with the ability to rotate its contents + left or right. Note that the size of this object is always a power of two. + If you need arbitrary sized objects then use a <a href="#circular_buffer">circular_buffer</a>. + </description> + + <implementations> + <implementation> + <name>sliding_buffer_kernel_1</name> + <file>dlib/sliding_buffer/sliding_buffer_kernel_1.h</file> + <description> + This object is implemented using a C style array in the obvious way. See the code for details. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for sliding_buffer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>circular_buffer</name> + <file>dlib/sliding_buffer.h</file> + <spec_file>dlib/sliding_buffer/circular_buffer_abstract.h</spec_file> + <description> + This object represents a simple sliding buffer which can contain + and arbitrary number of elements. + </description> + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>array2d</name> + <file>dlib/array2d.h</file> + <spec_file>dlib/array2d/array2d_kernel_abstract.h</spec_file> + <description> + This object represents a 2-Dimensional array of objects. + </description> + + <examples> + <example>image_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>binary_search_tree</name> + <file>dlib/binary_search_tree.h</file> + <spec_file>dlib/binary_search_tree/binary_search_tree_kernel_abstract.h</spec_file> + <description> + This object represents a data dictionary that is built on top of some kind of binary search tree. + </description> + + <implementations> + <implementation> + <name>binary_search_tree_kernel_1</name> + <file>dlib/binary_search_tree/binary_search_tree_kernel_1.h</file> + <description> + This implementation is done using an AVL binary search tree. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for binary_search_tree_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>binary_search_tree_kernel_2</name> + <file>dlib/binary_search_tree/binary_search_tree_kernel_2.h</file> + <description> + This implementation is done using a red-black binary search tree. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + </description> + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for binary_search_tree_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>hash_map</name> + <file>dlib/hash_map.h</file> + <spec_file>dlib/hash_map/hash_map_kernel_abstract.h</spec_file> + <description> + This object represents a hashed mapping of items of type domain onto items of type range. + </description> + + <implementations> + <implementation> + <name>hash_map_kernel_1</name> + <file>dlib/hash_map/hash_map_kernel_1.h</file> + <description> + This implementation is done using a <a href="#hash_table">hash_table</a> object. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + + </description> + + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for hash_map_kernel_1 that uses hash_table_kernel_1a</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for hash_map_kernel_1 that uses hash_table_kernel_2a</description> + </typedef> + <typedef> + <name>kernel_1c</name> + <description>is a typedef for hash_map_kernel_1 that uses hash_table_kernel_2b</description> + </typedef> + </typedefs> + + </implementation> + + + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>hash_set</name> + <file>dlib/hash_set.h</file> + <spec_file>dlib/hash_set/hash_set_kernel_abstract.h</spec_file> + <description> + This object represents a hashed unordered and unaddressed collection of unique items. + </description> + + <implementations> + <implementation> + <name>hash_set_kernel_1</name> + <file>dlib/hash_set/hash_set_kernel_1.h</file> + <description> + This implementation is done using a <a href="#hash_table">hash_table</a> object. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + + </description> + + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for hash_set_kernel_1 that uses hash_table_kernel_1a</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for hash_set_kernel_1 that uses hash_table_kernel_2a</description> + </typedef> + <typedef> + <name>kernel_1c</name> + <description>is a typedef for hash_set_kernel_1 that uses hash_table_kernel_2b</description> + </typedef> + </typedefs> + + </implementation> + + + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>hash_table</name> + <file>dlib/hash_table.h</file> + <spec_file>dlib/hash_table/hash_table_kernel_abstract.h</spec_file> + <description> + This object represents a data dictionary that is built on top of some kind of + hash table. + </description> + + <implementations> + <implementation> + <name>hash_table_kernel_1</name> + <file>dlib/hash_table/hash_table_kernel_1.h</file> + <description> + This implementation is done using singly linked lists as hashing buckets. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + </description> + + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for hash_table_kernel_1. </description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>hash_table_kernel_2</name> + <file>dlib/hash_table/hash_table_kernel_2.h</file> + <description> + This implementation is done using <a href="#binary_search_tree"> + binary_search_tree</a> objects as hashing buckets. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + + </description> + + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for hash_table_kernel_2 that uses binary_search_tree_kernel_1</description> + </typedef> + <typedef> + <name>kernel_2b</name> + <description>is a typedef for hash_table_kernel_2 that uses binary_search_tree_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + + </implementations> + + + </component> + + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>map</name> + <file>dlib/map.h</file> + <spec_file>dlib/map/map_kernel_abstract.h</spec_file> + <description> + This object represents a mapping of items of type domain onto items of type range. + </description> + + <implementations> + <implementation> + <name>map_kernel_1</name> + <file>dlib/map/map_kernel_1.h</file> + <description> + This is implemented using the <a href="#binary_search_tree">binary_search_tree</a> component. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + + </description> + + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for map_kernel_1 that uses binary_search_tree_kernel_1</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for map_kernel_1 that uses binary_search_tree_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + + + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>enumerable</name> + <file>dlib/interfaces/enumerable.h</file> + <spec_file>dlib/interfaces/enumerable.h</spec_file> + <description> + This object is an abstract class which represents an interface for iterating over + all the elements of a container. + </description> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>map_pair</name> + <file>dlib/interfaces/map_pair.h</file> + <spec_file>dlib/interfaces/map_pair.h</spec_file> + <description> + This object is an abstract class which represents an interface for accessing a + pair from a container such as the map, hash_table, etc. + </description> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>remover</name> + <file>dlib/interfaces/remover.h</file> + <spec_file>dlib/interfaces/remover.h</spec_file> + <description> + This is a set of interfaces which gives the ability to remove all the items in a + container without actually knowing what kind of container contains them. + </description> + + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>type_safe_union</name> + <file>dlib/type_safe_union.h</file> + <spec_file link="true">dlib/type_safe_union/type_safe_union_kernel_abstract.h</spec_file> + <description> + This object is a type safe analogue of the classic C union object. + The type_safe_union, unlike a union, can contain non-POD types such + as std::string. + <p>It is also implemented without performing any + heap memory allocations and instead it stores everything on the stack.</p> + </description> + + <examples> + <example>pipe_ex_2.cpp.html</example> + <example>bridge_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>unordered_pair</name> + <file>dlib/unordered_pair.h</file> + <spec_file link="true">dlib/unordered_pair.h</spec_file> + <description> + This object is very similar to the std::pair struct except unordered_pair + is only capable of representing an unordered set of two items rather than + an ordered list of two items like std::pair. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>any</name> + <file>dlib/any.h</file> + <spec_file link="true">dlib/any/any_abstract.h</spec_file> + <description> + This object is basically a type-safe version of a void*. In particular, + it is a container which can contain only one object but the object may + be of any type. + + <p> + It is somewhat like the <a href="#type_safe_union">type_safe_union</a> except you don't have to declare + the set of possible content types beforehand. So in some sense this is + like a less type-strict version of the type_safe_union. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>any_decision_function</name> + <file>dlib/any.h</file> + <spec_file link="true">dlib/any/any_decision_function_abstract.h</spec_file> + <description> + This object is a version of dlib::<a href="#any">any</a> that is restricted to containing + elements which are some kind of function object with an operator() with + the following signature: + <tt>result_type operator()(const sample_type&) const</tt> + + <p> + It is intended to be used to contain dlib::<a href="ml.html#decision_function">decision_function</a> + objects and other types which represent learned decision functions. It allows you + to write code which contains and processes these decision functions + without needing to know the specific types of decision functions used. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>any_function</name> + <file>dlib/any.h</file> + <spec_file link="true">dlib/any/any_function_abstract.h</spec_file> + <description> + This object is a version of dlib::<a href="#any">any</a> that is restricted to containing + elements which are some kind of function or function object. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>any_trainer</name> + <file>dlib/any.h</file> + <spec_file link="true">dlib/any/any_trainer_abstract.h</spec_file> + <description> + This object is a version of dlib::<a href="#any">any</a> that is restricted to containing + elements which are some kind of object with a .train() method compatible + with the following signature: +<pre> decision_function train( + const std::vector<sample_type>& samples, + const std::vector<scalar_type>& labels + ) const +</pre> + Where <tt>decision_function</tt> is a type capable of being stored in an + <a href="#any_decision_function">any_decision_function</a> object. + + <p> + any_trainer is intended to be used to contain objects such as the <a href="ml.html#svm_nu_trainer">svm_nu_trainer</a> + and other similar types which represent supervised machine learning algorithms. + It allows you to write code which contains and processes these trainer objects + without needing to know the specific types of trainer objects used. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>tuple</name> + <file>dlib/tuple.h</file> + <spec_file>dlib/tuple/tuple_abstract.h</spec_file> + <description> + This is an implementation of a very simple templated container object. + It contains between 0 and 31 objects where each object is listed + explicitly in the tuple's template arguments. + + <p> + Note that there is only one implementation of this object so there aren't any + different kernels to choose from when you create instances of the tuple object. + So for example, you + could declare a tuple of 3 ints using the following statement: + <tt>dlib::tuple<int,int,int> t;</tt> + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>reference_wrapper</name> + <file>dlib/ref.h</file> + <spec_file>dlib/ref.h</spec_file> + <description> + This is a simple object that just holds a reference to another object. + It is useful because it can serve as a kind of "copyable reference". + </description> + <examples> + <example>thread_function_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>graph</name> + <file>dlib/graph.h</file> + <spec_file>dlib/graph/graph_kernel_abstract.h</spec_file> + <description> + This object represents a graph which is a set of nodes with undirected + edges connecting various nodes. + </description> + + <implementations> + <implementation> + <name>graph_kernel_1</name> + <file>dlib/graph/graph_kernel_1.h</file> + <description> + This is implemented using std::vector to contain all the nodes and edges. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for graph_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + </component> + + + <!-- ************************************************************************* --> + <component checked="true"> + <name>directed_graph</name> + <file>dlib/directed_graph.h</file> + <spec_file>dlib/directed_graph/directed_graph_kernel_abstract.h</spec_file> + <description> + This object represents a directed graph which is a set of nodes with directed + edges connecting various nodes. + </description> + + <implementations> + <implementation> + <name>directed_graph_kernel_1</name> + <file>dlib/directed_graph/directed_graph_kernel_1.h</file> + <description> + This is implemented using std::vector to contain all the nodes and edges. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for directed_graph_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>queue</name> + <file>dlib/queue.h</file> + <spec_file>dlib/queue/queue_kernel_abstract.h</spec_file> + <description> + This object represents a first in first out queue. + </description> + + <examples> + <example>queue_ex.cpp.html</example> + </examples> + + <implementations> + <implementation> + <name>queue_kernel_1</name> + <file>dlib/queue/queue_kernel_1.h</file> + <description> + This is implemented in the obvious way using a singly linked list. It does not use the + <a href="other.html#memory_manager">memory_manager</a> at all. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for queue_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>queue_kernel_2</name> + <file>dlib/queue/queue_kernel_2.h</file> + <description> + This is implemented using a singly linked list and each node in the list + contains block_size (a template parameter) elements. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for queue_kernel_2 with a block_size of 20</description> + </typedef> + <typedef> + <name>kernel_2b</name> + <description>is a typedef for queue_kernel_2 with a block_size of 100</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + <extensions> + <extension> + <name>queue_sort</name> + <spec_file>dlib/queue/queue_sort_abstract.h</spec_file> + <description> + This extension gives a queue the ability to sort its contents. + </description> + + <implementations> + <implementation> + <name>queue_sort_1</name> + <file>dlib/queue/queue_sort_1.h</file> + <description> + This is a version of the QuickSort algorithm. + </description> + + <typedefs> + <typedef> + <name>sort_1a</name> + <description>is a typedef for queue_kernel_1a extended by queue_sort_1</description> + </typedef> + <typedef> + <name>sort_1b</name> + <description>is a typedef for queue_kernel_2a extended by queue_sort_1</description> + </typedef> + <typedef> + <name>sort_1c</name> + <description>is a typedef for queue_kernel_2b extended by queue_sort_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + </extension> + </extensions> + + </component> + + + + <!-- ************************************************************************* --> + + <component> + <name>reference_counter</name> + <file>dlib/reference_counter.h</file> + <spec_file>dlib/reference_counter/reference_counter_kernel_abstract.h</spec_file> + <description> + This object represents a container for an object and provides reference counting + capabilities for the object it contains. + </description> + + <implementations> + <implementation> + <name>reference_counter_kernel_1</name> + <file>dlib/reference_counter/reference_counter_kernel_1.h</file> + <description> + This implementation is done using pointers in the obvious way. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for reference_counter_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>sequence</name> + <file>dlib/sequence.h</file> + <spec_file>dlib/sequence/sequence_kernel_abstract.h</spec_file> + <description> + This object represents an ordered sequence of items, each item is + associated with an integer value. The items are numbered from 0 to the number of items in the + sequence minus 1. + </description> + + <implementations> + <implementation> + <name>sequence_kernel_1</name> + <file>dlib/sequence/sequence_kernel_1.h</file> + <description> + This is implemented as an AVL binary search tree. + Accessing(or adding or removing) an element always takes O(log n) time. + It uses the <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for sequence_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>sequence_kernel_2</name> + <file>dlib/sequence/sequence_kernel_2.h</file> + <description> + This implementation is done using a doubly linked list in the shape of a ring. + It will remember the last element accessed(or added or removed) and give O(1) + access time to the elements just left and right of it. Aside from that, + accessing(or adding or removing) a random element will take O(n) and in the worst + case it will take time proportional to the size of the sequence/2. + <p> + It does not use the + <a href="other.html#memory_manager">memory_manager</a> at all. + </p> + + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for sequence_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + <extensions> + + <extension> + <name>sequence_sort</name> + <spec_file>dlib/sequence/sequence_sort_abstract.h</spec_file> + <description> + This extension gives a sequence the ability to sort its contents. + </description> + + <implementations> + <implementation> + <name>sequence_sort_1</name> + <file>dlib/sequence/sequence_sort_1.h</file> + <description> + This is a version of the QuickSort algorithm and it sorts sequences of less + than 30 elements with a selection sort. This implementation is fastest when + used with sequence_kernel_2 and fairly slow when used with sequence_kernel_1 + </description> + + <typedefs> + <typedef> + <name>sort_1a</name> + <description>is a typedef for sequence_kernel_2a extended by sequence_sort_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>sequence_sort_2</name> + <file>dlib/sequence/sequence_sort_2.h</file> + <description> + This is a version of the QuickSort algorithm. This implementation of sort is + the best to use with sequence_kernel_1 objects but gives extremely poor performance + with sequence_kernel_2 objects. + </description> + + <typedefs> + <typedef> + <name>sort_2a</name> + <description>is a typedef for sequence_kernel_1a extended by sequence_sort_2</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + + </extension> + <extension> + <name>sequence_compare</name> + <spec_file>dlib/sequence/sequence_compare_abstract.h</spec_file> + <description> + This extension gives sequences the ability to compare themselves using + operator< and operator==. Thus they can be used in the other container classes + that require this ability. (maps, sets, etc.) + </description> + + <implementations> + <implementation> + <name>sequence_compare_1</name> + <file>dlib/sequence/sequence_compare_1.h</file> + <description> + The implementation is obvious. Click on the sequence_compare_1 link if you want to see. + </description> + + <typedefs> + <typedef> + <name>compare_1a</name> + <description>is a typedef for sequence_kernel_1a extended by sequence_compare_1</description> + </typedef> + <typedef> + <name>compare_1b</name> + <description>is a typedef for sequence_kernel_2a extended by sequence_compare_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + </extension> + </extensions> + + </component> + + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>set</name> + <file>dlib/set.h</file> + <spec_file>dlib/set/set_kernel_abstract.h</spec_file> + <description> + This object represents an unordered and unaddressed collection of unique items. + </description> + + <implementations> + <implementation> + <name>set_kernel_1</name> + <file>dlib/set/set_kernel_1.h</file> + <description> + This is implemented using the <a href="#binary_search_tree">binary_search_tree</a> component. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for set_kernel_1 that uses binary_search_tree_kernel_1</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for set_kernel_1 that uses binary_search_tree_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + <extensions> + + <extension> + <name>set_compare</name> + <spec_file>dlib/set/set_compare_abstract.h</spec_file> + <description> + This extension gives sets the ability to compare themselves using operator< and + operator==. Thus they can be used in the other container classes that require + this ability. (maps, sets, etc.) + </description> + + <implementations> + <implementation> + <name>set_compare_1</name> + <file>dlib/set/set_compare_1.h</file> + <description> + The implementation is obvious. Click on the set_compare_1 link if you want to see. + </description> + + <typedefs> + <typedef> + <name>compare_1a</name> + <description>is a typedef for set_kernel_1a extended by set_compare_1</description> + </typedef> + <typedef> + <name>compare_1b</name> + <description>is a typedef for set_kernel_1b extended by set_compare_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + </extension> + </extensions> + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>stack</name> + <file>dlib/stack.h</file> + <spec_file>dlib/stack/stack_kernel_abstract.h</spec_file> + <description> + This object represents a last in first out stack. + </description> + + <implementations> + <implementation> + <name>stack_kernel_1</name> + <file>dlib/stack/stack_kernel_1.h</file> + <description> + This implementation is done in the obvious way using a singly linked list. It uses the + <a href="other.html#memory_manager">memory_manager</a> for all memory allocations. + + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for stack_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>static_map</name> + <file>dlib/static_map.h</file> + <spec_file>dlib/static_map/static_map_kernel_abstract.h</spec_file> + <description> + This object represents a mapping of items of type domain onto items of type range. + The difference between this object and the normal <a href="#map">map</a> object is that it does not support adding + or removing individual objects from itself. This allows implementations to focus on using less memory and + achieving faster searching. + </description> + + <implementations> + <implementation> + <name>static_map_kernel_1</name> + <file>dlib/static_map/static_map_kernel_1.h</file> + <description> + This implementation is just a sorted array which can be searched using a binary search. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for static_map_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>static_set</name> + <file>dlib/static_set.h</file> + <spec_file>dlib/static_set/static_set_kernel_abstract.h</spec_file> + <description> + This object represents an unordered and unaddressed collection of items. + The difference between this object and the normal <a href="#set">set</a> object is that it does not support adding + or removing individual objects from itself. This allows implementations to focus on using less memory and + achieving faster searching. + </description> + + <implementations> + <implementation> + <name>static_set_kernel_1</name> + <file>dlib/static_set/static_set_kernel_1.h</file> + <description> + This implementation is just a sorted array which can be searched using a binary search. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for static_set_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + <extensions> + + <extension> + <name>static_set_compare</name> + <spec_file>dlib/static_set/static_set_compare_abstract.h</spec_file> + <description> + This extension gives static_sets the ability to compare themselves using operator< and + operator==. Thus they can be used in the other container classes that require + this ability. (maps, static_sets, etc.) + </description> + + <implementations> + <implementation> + <name>static_set_compare_1</name> + <file>dlib/static_set/static_set_compare_1.h</file> + <description> + The implementation is obvious. Click on the static_set_compare_1 link if you want to see. + </description> + + <typedefs> + <typedef> + <name>compare_1a</name> + <description>is a typedef for static_set_kernel_1a extended by static_set_compare_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + </extension> + </extensions> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>std_vector_c</name> + <file>dlib/stl_checked.h</file> + <spec_file link="true">dlib/stl_checked/std_vector_c_abstract.h</spec_file> + <description> + This object is a simple wrapper around the std::vector object. It + provides an identical interface but also checks the preconditions of + each member function. That is, if you violate a requires + clause the dlib::fatal_error exception is thrown. + </description> + </component> + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/dlib-icon-30x32.png b/ml/dlib/docs/docs/dlib-icon-30x32.png Binary files differnew file mode 100644 index 00000000..6e7732b9 --- /dev/null +++ b/ml/dlib/docs/docs/dlib-icon-30x32.png diff --git a/ml/dlib/docs/docs/dlib-icon-32.png b/ml/dlib/docs/docs/dlib-icon-32.png Binary files differnew file mode 100644 index 00000000..0c6684fa --- /dev/null +++ b/ml/dlib/docs/docs/dlib-icon-32.png diff --git a/ml/dlib/docs/docs/dlib-icon-48.png b/ml/dlib/docs/docs/dlib-icon-48.png Binary files differnew file mode 100644 index 00000000..af5c0fb4 --- /dev/null +++ b/ml/dlib/docs/docs/dlib-icon-48.png diff --git a/ml/dlib/docs/docs/dlib-icon-64.png b/ml/dlib/docs/docs/dlib-icon-64.png Binary files differnew file mode 100644 index 00000000..056dc7d1 --- /dev/null +++ b/ml/dlib/docs/docs/dlib-icon-64.png diff --git a/ml/dlib/docs/docs/dlib-icon.ico b/ml/dlib/docs/docs/dlib-icon.ico Binary files differnew file mode 100644 index 00000000..31d43150 --- /dev/null +++ b/ml/dlib/docs/docs/dlib-icon.ico diff --git a/ml/dlib/docs/docs/dlib-logo-and-icons.svg b/ml/dlib/docs/docs/dlib-logo-and-icons.svg new file mode 100644 index 00000000..8a552c46 --- /dev/null +++ b/ml/dlib/docs/docs/dlib-logo-and-icons.svg @@ -0,0 +1,1602 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="2361.0125" + height="2048.2327" + id="svg2" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="dlib-logo-and-icons.svg" + inkscape:export-filename="/home/davis/source/docs/docs/dlib-icon-32.png" + inkscape:export-xdpi="4.7453494" + inkscape:export-ydpi="4.7453494"> + <defs + id="defs4"> + <linearGradient + inkscape:collect="always" + id="linearGradient4032"> + <stop + style="stop-color:#a3a2dc;stop-opacity:1" + offset="0" + id="stop4034" /> + <stop + id="stop4042" + offset="0.50142854" + style="stop-color:#000000;stop-opacity:0" /> + <stop + style="stop-color:#e1e1f4;stop-opacity:0.30593607" + offset="1" + id="stop4036" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4058"> + <stop + style="stop-color:#a7a6dd;stop-opacity:1" + offset="0" + id="stop4060" /> + <stop + id="stop4066" + offset="0.46812925" + style="stop-color:#008000;stop-opacity:1;" /> + <stop + style="stop-color:#e1e1f4;stop-opacity:1" + offset="1" + id="stop4062" /> + </linearGradient> + <linearGradient + id="linearGradient4108"> + <stop + style="stop-color:#9998d8;stop-opacity:1;" + offset="0" + id="stop4110" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop4112" /> + </linearGradient> + <linearGradient + id="linearGradient4045"> + <stop + style="stop-color:#008000;stop-opacity:1;" + offset="0" + id="stop4047" /> + <stop + style="stop-color:#6c6c6c;stop-opacity:1;" + offset="1" + id="stop4049" /> + </linearGradient> + <linearGradient + id="linearGradient3993"> + <stop + id="stop3995" + offset="0" + style="stop-color:#005206;stop-opacity:1;" /> + <stop + id="stop3997" + offset="1" + style="stop-color:#000000;stop-opacity:0" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6255"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6257" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop6259" /> + </linearGradient> + <linearGradient + id="linearGradient6232"> + <stop + id="stop6234" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + id="stop6236" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient6216"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6218" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop6220" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6106"> + <stop + style="stop-color:#00d200;stop-opacity:1;" + offset="0" + id="stop6108" /> + <stop + style="stop-color:#00d200;stop-opacity:0;" + offset="1" + id="stop6110" /> + </linearGradient> + <linearGradient + id="linearGradient6078"> + <stop + style="stop-color:#079319;stop-opacity:1;" + offset="0" + id="stop6080" /> + <stop + style="stop-color:#676767;stop-opacity:1;" + offset="1" + id="stop6082" /> + </linearGradient> + <linearGradient + id="linearGradient6054" + osb:paint="solid"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6056" /> + </linearGradient> + <filter + id="filter3856" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + inkscape:menu="Bevels" + inkscape:label="Button" + color-interpolation-filters="sRGB" + x="0" + y="0" + width="1" + height="1"> + <feGaussianBlur + id="feGaussianBlur3858" + result="result1" + stdDeviation="3" /> + <feBlend + id="feBlend3860" + in2="result1" + result="result5" + mode="multiply" + in="result1" /> + <feGaussianBlur + id="feGaussianBlur3862" + in="result5" + result="result6" + stdDeviation="1" /> + <feComposite + id="feComposite3864" + in2="result5" + result="result8" + in="result6" + operator="xor" /> + <feComposite + id="feComposite3866" + in2="result8" + in="result6" + result="fbSourceGraphic" + operator="xor" /> + <feSpecularLighting + id="feSpecularLighting3868" + in="fbSourceGraphic" + result="result1" + lighting-color="#ffffff" + surfaceScale="2" + specularConstant="2.20000005" + specularExponent="55"> + <fePointLight + id="fePointLight3870" + x="-5000" + y="-10000" + z="20000" /> + </feSpecularLighting> + <feComposite + id="feComposite3872" + in2="fbSourceGraphic" + in="result1" + result="result2" + operator="in" /> + <feComposite + id="feComposite3874" + in2="result2" + in="fbSourceGraphic" + result="result4" + operator="arithmetic" + k2="2" + k3="1" + k1="0" + k4="0" /> + <feComposite + id="feComposite3876" + in2="result4" + operator="in" + result="result91" /> + <feBlend + id="feBlend3878" + in2="result91" + mode="darken" + result="fbSourceGraphic" /> + <feColorMatrix + result="fbSourceGraphicAlpha" + in="fbSourceGraphic" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + id="feColorMatrix3880" /> + <feGaussianBlur + id="feGaussianBlur3882" + stdDeviation="2.3" + in="fbSourceGraphicAlpha" + result="result0" /> + <feMorphology + id="feMorphology3884" + in="fbSourceGraphicAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3886" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3888" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3890" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3892" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3894" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3896" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3898" + in2="fbSourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3900" + in2="fbSourceGraphicAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3902" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3904" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3906" + in2="result3" + operator="atop" /> + </filter> + <filter + id="filter3934" + inkscape:label="Button" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3936" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3938" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3940" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3942" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3944" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3946" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3948" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3950" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3952" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3954" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3956" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3958" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3960" + in2="result3" + operator="atop" /> + </filter> + <filter + id="filter3988" + inkscape:label="Button" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3990" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3992" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3994" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3996" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3998" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur4000" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting4002" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight4004" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend4006" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite4008" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting4010" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight4012" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite4014" + in2="result3" + operator="atop" /> + </filter> + <filter + id="filter3810" + inkscape:label="Button" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3812" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3814" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3816" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3818" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + in2="result91" + id="feComposite3820" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3822" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3824" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3826" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + in2="SourceGraphic" + id="feBlend3828" + mode="multiply" + result="result93" /> + <feComposite + in2="SourceAlpha" + id="feComposite3830" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3832" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3834" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + in2="result3" + id="feComposite3836" + operator="atop" /> + </filter> + <filter + id="filter3289" + inkscape:label="Button" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3291" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3293" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3295" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3297" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3299" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3301" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3303" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3305" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3307" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3309" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3311" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3313" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3315" + in2="result3" + operator="atop" /> + </filter> + <filter + id="filter3371" + inkscape:label="Bloom" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft, cushion-like bevel with matte highlights" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3373" + result="result1" + in="SourceAlpha" + stdDeviation="2.2" /> + <feSpecularLighting + id="feSpecularLighting3375" + result="result0" + specularExponent="18.10000038" + specularConstant="2" + surfaceScale="5"> + <feDistantLight + id="feDistantLight3377" + azimuth="225" + elevation="24" /> + </feSpecularLighting> + <feComposite + id="feComposite3379" + in2="SourceAlpha" + result="result6" + operator="in" /> + <feMorphology + id="feMorphology3381" + radius="5.7" + operator="dilate" /> + <feGaussianBlur + id="feGaussianBlur3383" + result="result11" + stdDeviation="5.7" /> + <feDiffuseLighting + id="feDiffuseLighting3385" + surfaceScale="5" + result="result3" + diffuseConstant="2" + in="result1"> + <feDistantLight + id="feDistantLight3387" + elevation="25" + azimuth="225" /> + </feDiffuseLighting> + <feBlend + id="feBlend3389" + in2="SourceGraphic" + result="result7" + mode="multiply" + in="result3" /> + <feComposite + id="feComposite3391" + in2="SourceAlpha" + in="result7" + operator="in" + result="result91" /> + <feBlend + id="feBlend3393" + in2="result91" + result="result9" + mode="lighten" + in="result6" /> + <feComposite + id="feComposite3395" + in2="result9" + in="result11" /> + </filter> + <filter + id="filter3091" + inkscape:label="Button" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3093" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3095" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3097" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3099" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3101" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3103" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3105" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3107" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3109" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3111" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3113" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3115" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3117" + in2="result3" + operator="atop" /> + </filter> + <filter + id="filter3119" + inkscape:label="Button" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="Bevels" + inkscape:menu-tooltip="Soft bevel, slightly depressed middle" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3121" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3123" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3125" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3127" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3129" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3131" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3133" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3135" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3137" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3139" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3141" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3143" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3145" + in2="result3" + operator="atop" /> + </filter> + <filter + id="filter3119-4" + inkscape:label="Noise transparency" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="ABCs" + inkscape:menu-tooltip="Basic noise transparency texture" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3121-5" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3123-2" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3125-7" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3127-9" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3129-0" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3131-0" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3133-4" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3135-7" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3137-6" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3139-4" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3141-6" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3143-7" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3145-4" + in2="result3" + operator="atop" + result="fbSourceGraphic" /> + <feColorMatrix + result="fbSourceGraphicAlpha" + in="fbSourceGraphic" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + id="feColorMatrix4290" /> + <feTurbulence + id="feTurbulence4292" + type="fractalNoise" + numOctaves="5" + baseFrequency="0.02" + result="result1" /> + <feComposite + id="feComposite4294" + in2="result1" + operator="in" + result="result2" + in="fbSourceGraphic" /> + <feColorMatrix + id="feColorMatrix4296" + result="result3" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 -1 " + in="result2" /> + </filter> + <filter + id="filter4352" + inkscape:label="Noise transparency" + inkscape:menu="ABCs" + inkscape:menu-tooltip="Basic noise transparency texture" + color-interpolation-filters="sRGB"> + <feTurbulence + id="feTurbulence4354" + type="fractalNoise" + numOctaves="5" + baseFrequency="0.02" + result="result1" /> + <feComposite + id="feComposite4356" + in2="result1" + operator="in" + result="result2" + in="SourceGraphic" /> + <feColorMatrix + id="feColorMatrix4358" + result="result3" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 -1 " + in="result2" /> + </filter> + <filter + id="filter6098" + inkscape:label="Noise transparency" + inkscape:menu="ABCs" + inkscape:menu-tooltip="Basic noise transparency texture" + color-interpolation-filters="sRGB"> + <feTurbulence + id="feTurbulence6100" + type="fractalNoise" + numOctaves="5" + baseFrequency="0.02" + result="result1" /> + <feComposite + id="feComposite6102" + in2="result1" + operator="in" + result="result2" + in="SourceGraphic" /> + <feColorMatrix + id="feColorMatrix6104" + result="result3" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 -1 " + in="result2" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6106" + id="linearGradient6112" + x1="289.6037" + y1="-164.27747" + x2="577.57214" + y2="595.15521" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-32,524)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient6162" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.63278472,0,0,0.63278472,-113.84055,-645.64033)" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078-9" + id="linearGradient6084-2" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(3.3501302,-5.991454e-7)" /> + <linearGradient + id="linearGradient6078-9"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6080-0" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop6082-6" /> + </linearGradient> + <linearGradient + y2="-587.63" + x2="143.05882" + y1="265.09387" + x1="143.05882" + gradientTransform="matrix(1.0074678,0,0,0.56965929,870.49876,118.18399)" + gradientUnits="userSpaceOnUse" + id="linearGradient6179" + xlink:href="#linearGradient6078-9" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6255" + id="linearGradient6261" + x1="88.772499" + y1="-486.30008" + x2="1435.7103" + y2="-486.30008" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6255" + id="linearGradient6275" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-77.037462,218.63663)" + x1="165.14003" + y1="-568.32446" + x2="196.25273" + y2="-118.4828" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6255" + id="linearGradient6285" + gradientUnits="userSpaceOnUse" + x1="88.772499" + y1="-486.30008" + x2="1435.7103" + y2="-486.30008" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078-5" + id="linearGradient6084-1" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(926.13625,-594.05387)" /> + <linearGradient + id="linearGradient6078-5"> + <stop + style="stop-color:#008000;stop-opacity:1;" + offset="0" + id="stop6080-2" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop6082-0" /> + </linearGradient> + <filter + id="filter3119-4-9" + inkscape:label="Noise transparency" + x="0" + y="0" + width="1" + height="1" + inkscape:menu="ABCs" + inkscape:menu-tooltip="Basic noise transparency texture" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3121-5-4" + stdDeviation="2.3" + in="SourceAlpha" + result="result0" /> + <feMorphology + id="feMorphology3123-2-2" + in="SourceAlpha" + radius="6.6" + result="result1" /> + <feGaussianBlur + id="feGaussianBlur3125-7-6" + stdDeviation="8.9" + in="result1" /> + <feColorMatrix + id="feColorMatrix3127-9-9" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.3 0" + result="result91" /> + <feComposite + id="feComposite3129-0-5" + in2="result91" + in="result0" + operator="out" + result="result2" /> + <feGaussianBlur + id="feGaussianBlur3131-0-1" + stdDeviation="1.7" + result="result4" /> + <feDiffuseLighting + id="feDiffuseLighting3133-4-3" + surfaceScale="10" + result="result92"> + <feDistantLight + id="feDistantLight3135-7-6" + azimuth="225" + elevation="45" /> + </feDiffuseLighting> + <feBlend + id="feBlend3137-6-7" + in2="SourceGraphic" + mode="multiply" + result="result93" /> + <feComposite + id="feComposite3139-4-9" + in2="SourceAlpha" + operator="in" + result="result3" /> + <feSpecularLighting + id="feSpecularLighting3141-6-0" + in="result4" + surfaceScale="5" + specularExponent="17.89999962" + result="result94"> + <feDistantLight + id="feDistantLight3143-7-2" + azimuth="225" + elevation="45" /> + </feSpecularLighting> + <feComposite + id="feComposite3145-4-4" + in2="result3" + operator="atop" + result="fbSourceGraphic" /> + <feColorMatrix + result="fbSourceGraphicAlpha" + in="fbSourceGraphic" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + id="feColorMatrix4290-9" /> + <feTurbulence + id="feTurbulence4292-0" + type="fractalNoise" + numOctaves="5" + baseFrequency="0.02" + result="result1" /> + <feComposite + id="feComposite4294-5" + in2="result1" + operator="in" + result="result2" + in="fbSourceGraphic" /> + <feColorMatrix + id="feColorMatrix4296-4" + result="result3" + values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 -1 " + in="result2" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078-9-9" + id="linearGradient6222-7" + x1="423.23053" + y1="-73.778259" + x2="660.38068" + y2="723.8382" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(13.001879,-183.24887)" /> + <linearGradient + id="linearGradient6078-9-9"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6080-0-4" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop6082-6-7" /> + </linearGradient> + <linearGradient + y2="723.8382" + x2="660.38068" + y1="-73.778259" + x1="423.23053" + gradientTransform="translate(935.80608,-594.05386)" + gradientUnits="userSpaceOnUse" + id="linearGradient5626" + xlink:href="#linearGradient6078-9-9" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4098" + id="linearGradient4106" + x1="287.56638" + y1="120.09835" + x2="287.56638" + y2="-546.19177" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.260912,0,0,1,71.251679,0.00125509)" /> + <linearGradient + id="linearGradient4098"> + <stop + style="stop-color:#008100;stop-opacity:1;" + offset="0" + id="stop4100" /> + <stop + style="stop-color:#008000;stop-opacity:0;" + offset="1" + id="stop4102" /> + </linearGradient> + <linearGradient + y2="-546.19177" + x2="287.56638" + y1="120.09835" + x1="287.56638" + gradientTransform="matrix(1.260912,0,0,1,-910.0905,-73.940571)" + gradientUnits="userSpaceOnUse" + id="linearGradient4131" + xlink:href="#linearGradient4098" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4005" + x1="-780.29614" + y1="-1161.6045" + x2="-506.72354" + y2="-1161.6045" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4055" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(923.22266,-335.72905)" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4120" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.64846859,0,0,0.64846859,114.9957,877.36779)" + x1="-108.99142" + y1="-355.92548" + x2="45.008579" + y2="314.07452" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4126" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.64846859,0,0,0.64846859,114.9957,877.36779)" + x1="-108.99142" + y1="-355.92548" + x2="45.008579" + y2="314.07452" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4129" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.64846859,0,0,0.64846859,72.9957,883.47585)" + x1="-108.99142" + y1="-355.92548" + x2="45.008579" + y2="314.07452" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4139" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.64846859,0,0,0.64846859,72.9957,883.47585)" + x1="-108.99142" + y1="-355.92548" + x2="45.008579" + y2="314.07452" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient4142" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.75460897,0,0,0.75460897,1066.8812,735.54895)" + x1="-108.99142" + y1="-355.92548" + x2="45.008579" + y2="314.07452" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4108" + id="linearGradient4180" + x1="332.879" + y1="419.68518" + x2="332.879" + y2="985.62512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.97216115,0,0,1,67.205289,-27.209158)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6078" + id="linearGradient3303" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.75460897,0,0,0.75460897,1066.8812,735.54895)" + x1="-108.99142" + y1="-355.92548" + x2="45.008579" + y2="314.07452" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4058" + id="linearGradient4064" + x1="975.3869" + y1="339.30963" + x2="975.3869" + y2="953.14563" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(291.99999,-415.99999)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4255" + id="linearGradient3425" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0200299,0,0,1.0200299,-859.15898,-1239.2577)" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" /> + <linearGradient + id="linearGradient4255"> + <stop + id="stop4257" + offset="0" + style="stop-color:#007800;stop-opacity:1" /> + <stop + id="stop4259" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + y2="484.83612" + x2="297.46921" + y1="-168.53056" + x1="161.89027" + gradientTransform="matrix(1.0200299,0,0,1.0200299,-802.43155,-1107.0302)" + gradientUnits="userSpaceOnUse" + id="linearGradient4276" + xlink:href="#linearGradient4255" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4255" + id="linearGradient3256" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0200299,0,0,1.0200299,2.97376,-456.00926)" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4255" + id="linearGradient3260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.69279143,0,0,0.69279143,919.08707,566.0091)" + x1="161.89027" + y1="-168.53056" + x2="349.43289" + y2="640.72717" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4032" + id="linearGradient4044" + gradientUnits="userSpaceOnUse" + x1="1047.5118" + y1="340.17545" + x2="1047.5118" + y2="870.28204" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.25000001" + inkscape:cx="209.03134" + inkscape:cy="1217.6776" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1420" + inkscape:window-height="847" + inkscape:window-x="140" + inkscape:window-y="24" + inkscape:window-maximized="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0.2" + showguides="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(727.26837,1245.4347)"> + <path + inkscape:export-filename="/home/davis/Desktop/dlib-logo-big.png" + inkscape:export-ydpi="13.329785" + inkscape:export-xdpi="13.329785" + inkscape:connector-curvature="0" + id="path4053" + d="m 1023.2021,-467.74665 c -6.9306,0.232 -13.8912,0.4764 -20.7306,1.6612 -3.89359,29.3532 -0.4985,59.0587 -1.6958,88.5633 0,108.198 0,216.3958 0,324.593701 17.1741,1.9244 34.5528,2.0416 51.7398,0.2076 3.3409,-13.6023 6.6918,-27.2021 10.0365,-40.8035 20.1275,-4.3735 39.4098,-12.161801 56.8273,-23.291501 11.9614,7.3567 23.9486,14.6735 35.9237,22.011001 13.3597,-10.716401 25.5051,-22.659101 36.2006,-36.062101 -6.8185,-12.1782 -15.4368,-24.278 -21.3535,-36.3736 11.0712,-17.1104 18.9663,-36.2896 23.3954,-56.2735 13.6154,-3.2669 27.2332,-6.5254 40.8727,-9.6903 2.0458,-16.9584 2.0124,-34.1356 0.2422,-51.1169 -13.5719,-3.4709 -27.2625,-6.4902 -40.7689,-10.2095 -4.2632,-20.171 -12.1604,-39.4476 -23.2915,-56.6889 7.2491,-12.0168 14.6924,-23.8446 21.9072,-35.889 -10.6117,-13.399 -22.6322,-25.5555 -36.0275,-36.166 -12.1459,6.861 -24.3066,15.3662 -36.3736,21.3189 -17.0732,-11.3677 -36.3381,-19.0835 -56.2736,-23.5338 -3.2761,-13.5529 -6.4786,-27.1233 -9.6557,-40.6997 -10.2629,-1.3243 -20.6323,-1.7442 -30.9747,-1.5574 z m 37.6541,91.332 c 56.0125,14.9096 96.1549,74.9618 87.2482,132.5162 -5.8297,46.1536 -40.5071,87.5275 -85.4485,100.607 -3.369,2.4901 -1.5771,-3.8305 -1.8689,-5.3989 0.1059,-75.8893 -0.036,-151.8872 0.069,-227.7243 z" + style="fill:url(#linearGradient4055);fill-opacity:1;stroke:none" /> + <path + style="font-size:271.78607178px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:-50.81999969px;word-spacing:0px;fill:#6c6c6c;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Sans" + d="m 495.66104,-494.72874 c -0.84547,-0.0104 -1.69126,0.0352 -2.55056,0.1325 -19.63034,0.73928 -28.86839,30.381 -12.78592,41.8689 13.25716,12.36335 39.19209,1.34559 38.25837,-17.25767 0.57683,-12.67301 -10.23997,-24.58764 -22.92189,-24.74373 z m -189.53628,13.64366 0,1.05997 0,1.05997 0,33.85287 38.29149,0 0,179.46654 76.88111,0 0,-35.93968 -37.99338,0 0,-179.49967 z m 239.69074,0 0,1.05997 0,1.05997 0,213.65065 c 12.67031,-1.27586 25.64943,1.23157 38.12588,-1.82182 1.88907,-1.76004 -0.43964,-7.75849 2.58368,-4.90238 24.17163,16.57752 61.95412,12.81175 78.73606,-12.42155 22.75713,-30.42343 24.31506,-72.68541 12.58717,-107.78592 -8.04268,-21.36798 -27.57642,-39.75201 -51.3424,-40.31207 -14.73382,-1.04503 -29.53712,3.1791 -41.80266,11.22908 l 0,-59.75593 z m -113.6203,51.90551 0,1.05998 0,1.05997 0,33.85286 43.16074,0 0,127.56103 38.92086,0 0,-163.53384 z m 183.24723,32.29603 c 16.14494,-0.15516 26.57155,16.48123 27.89051,31.13669 4.1878,21.99092 1.71748,48.64341 -16.46269,63.96269 -11.10577,7.02308 -26.36913,1.65924 -34.28347,-8.01604 -7.44328,-6.57934 -9.31163,-17.24573 -7.71793,-26.79742 0.33014,-14.3603 -2.03369,-29.46139 1.58996,-43.32636 6.76082,-9.12033 17.08139,-16.98962 28.98362,-16.95956 z" + id="text3780" + inkscape:connector-curvature="0" + inkscape:export-xdpi="33.546459" + inkscape:export-ydpi="33.546459" + inkscape:export-filename="/home/davis/Desktop/dlib-logo-big.png" + sodipodi:nodetypes="scccsccccccccccccccccccccccccccccccccccccccc" /> + <text + xml:space="preserve" + style="font-size:144px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-147.07822" + y="-202.42957" + id="text6118" + sodipodi:linespacing="125%" + transform="translate(77.037462,-218.63663)"><tspan + sodipodi:role="line" + id="tspan6120" + x="-147.07822" + y="-202.42957" /></text> + <path + style="fill:url(#linearGradient6179);fill-opacity:1;stroke:none" + d="m 971.22483,42.978925 c -6.98234,0.132144 -13.99487,0.27142 -20.88535,0.946324 -3.92271,16.721334 -0.50227,33.643336 -1.70849,50.450923 0,61.635948 0,123.271898 0,184.907848 17.30238,1.09625 34.81079,1.16301 52.12621,0.11829 3.3657,-7.74869 6.7417,-15.49596 10.1114,-23.24409 20.2778,-2.49144 39.7041,-6.92811 57.2517,-13.26825 12.0506,4.19081 24.1274,8.3589 36.192,12.53879 13.4594,-6.10474 25.6955,-12.90799 36.4708,-20.54313 -6.8693,-6.93742 -15.552,-13.83016 -21.513,-20.72056 11.154,-9.7471 19.1081,-20.67272 23.5702,-32.05674 13.7171,-1.86097 27.4366,-3.71722 41.178,-5.52022 2.0611,-9.66048 2.0274,-19.44566 0.244,-29.1192 -13.6733,-1.97725 -27.4661,-3.69719 -41.0734,-5.81594 -4.295,-11.49058 -12.2512,-22.4717 -23.4654,-32.29333 7.3032,-6.84552 14.8021,-13.583303 22.0708,-20.444547 -10.6909,-7.632859 -22.8012,-14.557899 -36.2965,-20.602275 -12.2366,3.908427 -24.4882,8.753476 -36.6453,12.144498 -17.2008,-6.475699 -36.6095,-10.871053 -56.6938,-13.406259 -3.3006,-7.720529 -6.527,-15.451039 -9.7279,-23.184956 -10.33953,-0.754405 -20.78635,-0.993565 -31.20597,-0.887176 z m 37.93537,52.028127 c 56.4307,8.493388 96.8729,42.702668 87.8997,75.489088 -5.8732,26.29187 -40.8096,49.8609 -86.0867,57.31178 -3.3941,1.41849 -1.5888,-2.18211 -1.8828,-3.07556 0.1066,-43.23101 -0.036,-86.52399 0.07,-129.725308 z" + id="path3205-8" + inkscape:connector-curvature="0" + inkscape:export-xdpi="5.9322109" + inkscape:export-ydpi="5.9322109" + inkscape:export-filename="/home/davis/Desktop/dlib-logo-16.png" /> + <path + style="opacity:0;fill:#ffffff;fill-opacity:1;stroke:#008000;stroke-width:0.5537371;stroke-linejoin:miter;stroke-miterlimit:3.79999995;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter3119-4-9)" + d="m 1022.7836,-726.0715 c -6.9306,0.23197 -13.8911,0.47646 -20.7305,1.66121 -3.89366,29.35323 -0.4986,59.0587 -1.6958,88.56333 0,108.19793 0,216.39583 0,324.59376 17.1741,1.92439 34.5527,2.04158 51.7398,0.20765 3.3408,-13.60232 6.6917,-27.20215 10.0365,-40.8035 20.1274,-4.37356 39.4097,-12.16184 56.8272,-23.29156 11.9614,7.35671 23.9486,14.67351 35.9237,22.01104 13.3597,-10.71647 25.5052,-22.65914 36.2006,-36.06213 -6.8185,-12.1782 -15.4368,-24.27796 -21.3535,-36.3736 11.0713,-17.11041 18.9664,-36.28963 23.3954,-56.27353 13.6155,-3.26682 27.2332,-6.52535 40.8727,-9.6904 2.0458,-16.95835 2.0124,-34.13559 0.2423,-51.11685 -13.572,-3.47094 -27.2625,-6.49018 -40.7689,-10.20952 -4.2633,-20.17097 -12.1605,-39.4476 -23.2916,-56.68885 7.2492,-12.01687 14.6924,-23.84461 21.9072,-35.88908 -10.6116,-13.39899 -22.6321,-25.55545 -36.0275,-36.16595 -12.1458,6.86098 -24.3066,15.36615 -36.3736,21.31887 -17.0732,-11.36767 -36.3381,-19.08342 -56.2735,-23.53381 -3.2762,-13.55289 -6.4786,-27.1233 -9.6558,-40.6997 -10.2629,-1.32431 -20.6323,-1.74414 -30.9747,-1.55738 z m 37.6541,91.33201 c 56.0125,14.9096 96.155,74.96178 87.2482,132.51621 -5.8297,46.15367 -40.5071,87.52757 -85.4485,100.60711 -3.369,2.49007 -1.5771,-3.83055 -1.8689,-5.39894 0.1059,-75.88924 -0.036,-151.88725 0.069,-227.72438 z" + id="path3205-7-9" + inkscape:connector-curvature="0" + inkscape:export-xdpi="7.0773535" + inkscape:export-ydpi="7.0773535" + inkscape:export-filename="/home/davis/Desktop/dlib-logo-big.png" /> + <path + style="fill:url(#linearGradient4131);fill-opacity:1;stroke:none" + d="m -541.18611,-189.81753 c -7.95821,-0.0942 -15.90748,0.23012 -23.83912,0.71875 0,124.802089 0,249.604159 0,374.40624 15.22815,1.05949 30.60024,0.86865 45.78687,-0.5 4.44122,-14.71779 8.99256,-29.41507 13.47599,-44.125 23.3019,-3.84423 45.68303,-11.08371 65.64624,-21.3125 16.28759,7.86353 32.56864,15.73559 48.86035,23.59375 11.85327,-7.42517 22.66532,-15.70554 32.50788,-24.75 -9.94841,-12.99949 -19.94165,-25.977501 -29.90726,-38.968751 12.9885,-15.97363 22.59074,-33.84854 27.0308,-52.5625 18.63835,-3.5817 37.27287,-7.17602 55.91358,-10.74999 1.13725,-11.9203796 0.99207,-23.9149396 -0.47285,-35.8125 -18.51804,-3.5677 -37.03955,-7.12412 -55.55893,-10.6875 -4.57652,-18.69676 -13.64457,-36.71314 -26.99141,-52.53125 9.99743,-12.98857 19.97875,-25.984969 29.98607,-38.968749 -9.59579,-9.21099 -20.30999,-17.49152 -31.99564,-25.03125 -16.50155,7.99019 -33.02157,15.95648 -49.53021,23.9375 -19.83708,-10.44823 -42.23992,-17.90425 -65.56743,-21.71875 -4.51598,-14.76085 -9.04957,-29.51834 -13.5548,-44.28125 -7.24958,-0.43341 -14.51689,-0.76169 -21.79013,-0.65625 z m 36.48764,84.375 c 57.73393,12.749409 101.22616,58.663719 98.31173,106.4999994 -1.46252,45.3652496 -41.9939,88.6074596 -97.76009,100.1874906 -2.65298,-3.551971 -0.39674,-12.218401 -1.14953,-17.750001 -0.024,-63.02082 -0.048,-126.04165 -0.072,-189.062489 l 0.66985,0.125 z" + id="path3056-7" + inkscape:connector-curvature="0" + inkscape:export-xdpi="3.8067021" + inkscape:export-ydpi="3.8067021" + inkscape:export-filename="/home/davis/Desktop/dlib-logo-big.png" /> + <text + xml:space="preserve" + style="font-size:300px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + x="-686.99139" + y="-257.92551" + id="text5710" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5712" + x="-686.99139" + y="-257.92551" + style="font-size:72px">16x16 icon</tspan></text> + <text + xml:space="preserve" + style="font-size:300px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + x="140.75861" + y="-726.42633" + id="text5710-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5712-5" + x="140.75861" + y="-726.42633" + style="font-size:72px">larger icon</tspan></text> + <path + style="font-size:300px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-29.45005226px;word-spacing:0px;fill:#6c6c6c;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="m 91.712762,-1144.3437 c -30.28577,-0.1363 -60.39844,18.1385 -71.8008,46.6236 -16.2787101,35.2236 -15.6751601,75.9722 -8.68099,113.47285 6.19667,27.8716 23.75934,55.4792 51.95393,64.7735 32.31967,11.6446 70.499908,5.4452 97.621618,-15.1825 3.02164,-5.7194 -3.24042,-10.6409 -4.02403,-16.1695 -2.46403,-6.1817 -4.95992,-12.351 -7.38223,-18.5492 -20.59187,13.9311 -47.67163,24.3061 -72.218748,14.6874 -19.15948,-8.9159 -25.8452,-31.5875 -27.59375,-51.06235 -2.59633,-28.8656 -3.28128,-60.2054 11.96875,-85.7813 10.25845,-13.8949 28.76348,-17.9918 45.124998,-15.2187 14.00799,1.4904 27.24445,6.8112 38.84375,14.7812 4.79517,-11.0898 9.41862,-22.2526 14.06251,-33.4062 -19.10417,-14.8307 -44.10433,-19.525 -67.875008,-18.9688 z m -399.218742,0.1875 c -18.62086,-0.586 -30.19888,24.9473 -17.75,38.75 10.03129,13.8596 35.0741,10.2427 40.21875,-6.25 5.87433,-14.6097 -6.21654,-33.6621 -22.46875,-32.5 z m 1125.18755,0 c -18.6683,-0.5408 -30.1379,25.2322 -17.5625,38.8437 9.9929,13.8768 35.3189,10.049 40.1875,-6.7187 5.8784,-14.6589 -6.6054,-33.1703 -22.625,-32.125 z m -1318.3438,5.6875 c 0,11.2604 0,22.5208 0,33.7812 13.28125,10e-5 26.5625,0 39.84375,0 0,62.3021 0,124.60415 0,186.90625 26.13542,0 52.27083,0 78.40625,0 0,-11.9167 0,-23.8333 0,-35.75 -13.1875,0 -26.375,0 -39.5625,0 0,-62.31245 0,-124.62495 0,-186.93745 -26.22917,0 -52.45833,0 -78.6875,0 l 0,1 z m 242.4375,0 c 0,73.5625 0,147.12495 0,220.68745 12.69792,0 25.39583,0 38.09375,0 0.66253,-2.9254 0.98099,-5.9047 0.84375,-8.9063 23.09103,18.3201 61.02973,17.5154 80.375,-5.9374 23.65335,-26.5738 27.31644,-65.2995 21.34375,-99.15625 -4.54881,-23.7014 -18.9469,-48.1641 -43.15625,-55.4687 -19.51152,-6.2348 -42.01499,-2.0267 -58.65625,9.7812 0,-21 0,-42 0,-63 -12.94792,0 -25.89583,0 -38.84375,0 l 0,1 z m 867.5313,0 c 0,73.5625 0,147.12495 0,220.68745 42.8333,0 85.6666,0 128.5,0 0,-12.3125 0,-24.625 0,-36.9375 -29.4896,0 -58.9792,0 -88.4688,0 0,-61.91665 0,-123.83325 0,-185.74995 -13.3437,0 -26.6875,0 -40.0312,0 l 0,1 z m 270.75,0 c 0,73.5625 0,147.12495 0,220.68745 12.802,0 25.6041,0 38.4062,0 0.4777,-2.9363 0.6249,-5.9232 0.5313,-8.9063 23.1162,18.3717 61.4017,17.4919 80.625,-6.1874 23.60993,-26.8767 27.16963,-65.6949 20.94953,-99.66595 -4.6341,-22.9956 -18.3869,-46.5108 -41.66833,-54.3028 -19.9888,-6.782 -42.9795,-2.7053 -59.9687,9.375 0,-21 0,-42 0,-63 -12.9584,0 -25.9167,0 -38.875,0 l 0,1 z m -652.8126,31.2188 c 0,19.3541 0,38.7083 0,58.0624 -20.0208,10e-5 -40.04162,0 -60.06245,0 0,11.7292 0,23.4584 0,35.1876 20.02083,-10e-5 40.04165,0 60.06245,0 0,19.96865 0,39.93735 0,59.90615 11.7292,0 23.4584,0 35.1875,0 0,-19.9687 0,-39.9375 0,-59.90615 19.7709,0 39.5417,-10e-5 59.3126,0 0,-11.7292 0,-23.4584 0,-35.1876 -19.7709,10e-5 -39.5417,0 -59.3126,0 0,-20.0208 0,-40.0416 0,-60.0624 -11.7291,0 -23.4583,-10e-5 -35.1875,0 l 0,1 z m 166.4376,0 c 0,19.3541 0,38.7083 0,58.0624 -20.0209,10e-5 -40.0417,0 -60.0625,0 0,11.7292 0,23.4584 0,35.1876 20.0208,-10e-5 40.0416,0 60.0625,0 0,19.96865 0,39.93735 0,59.90615 11.7291,0 23.4583,0 35.1875,0 0,-19.9687 0,-39.9375 0,-59.90615 19.7812,-10e-5 39.5625,0 59.3437,0 0,-11.7292 0,-23.4584 0,-35.1876 -19.7812,0 -39.5625,10e-5 -59.3437,0 0,-20.0208 0,-40.0416 0,-60.0624 -11.7292,0 -23.4584,-10e-5 -35.1875,0 l 0,1 z m 733.15623,17.2187 c -14.282,0.1488 -27.7279,7.4033 -37.5312,17.5 0.2756,-4.4886 1.9597,-12.32 -3.875,-13.875 -11.573,0 -23.1459,0 -34.7188,0 0,56.2083 0,112.41665 0,168.62495 12.9063,0 25.8125,0 38.7188,0 0.1723,-35.1039 -0.3412,-70.2114 0.2812,-105.31245 8.8239,-14.3684 23.4407,-29.9741 41.9375,-27.5312 9.0265,1.2222 17.3866,5.2039 25.7813,8.7812 5.1449,-12.0765 10.1627,-24.2067 15.3124,-36.2812 -13.9184,-7.6932 -29.8151,-12.4905 -45.9062,-11.9063 z m 131.25,0 c -23.2609,0.5122 -45.5924,9.0746 -65.6562,20.0937 3.8134,10.4646 7.6642,20.9158 11.4062,31.4063 19.322,-9.7253 41.284,-19.9432 63.25,-13.5937 11.3101,4.4263 15.2461,18.0361 14.5938,28.875 -23.7876,2.2048 -49.447,2.6741 -70.5313,15.4062 -16.199,8.71205 -25.6583,27.11375 -24.2671,45.37395 0.6109,20.1858 13.9906,39.538 33.5171,45.5322 21.7046,7.6654 46.916,1.0221 63.8125,-13.75 0.7967,4.3868 1.9702,8.6749 3.375,12.9063 12.9792,0 25.9583,0 38.9375,0 -12.586,-42.2961 -1.1739,-87.13205 -8.1563,-130.15625 -3.7964,-18.9002 -18.1236,-35.6058 -37.3124,-39.6562 -7.4739,-1.9968 -15.2239,-2.6476 -22.9688,-2.4375 z m 171.5312,0 c -14.3101,0.1633 -27.7512,7.4125 -37.5937,17.5 0.3348,-4.4798 1.9857,-12.3224 -3.8437,-13.875 -11.573,0 -23.1459,0 -34.7188,0 0,56.2083 0,112.41665 0,168.62495 12.9063,0 25.8125,0 38.7188,0 0.1725,-35.0831 -0.341,-70.1697 0.2812,-105.24995 8.8836,-14.2433 22.8341,-29.6973 41.3438,-27.625 9.2834,0.9968 17.8413,5.247 26.4062,8.8125 5.0985,-12.0874 10.1472,-24.1957 15.25,-36.2812 -13.94,-7.7257 -29.7912,-12.4759 -45.8438,-11.9063 z m -1801.46873,5.625 c 0,11.2604 0,22.5208 0,33.7813 14.98958,0 29.97917,0 44.96875,0 0,44.2812 0,88.56235 0,132.84365 12.94792,0 25.89583,0 38.84375,0 0,-56.2083 0,-112.41665 0,-168.62495 -27.9375,0 -55.875,0 -83.8125,0 l 0,1 z m 1125.25,0 c 0,11.2604 0,22.5208 0,33.7813 14.9896,0 29.9792,0 44.9688,0 0,44.2812 0,88.56235 0,132.84365 12.9479,0 25.8958,0 38.8437,0 0,-56.2083 0,-112.41665 0,-168.62495 -27.9375,0 -55.875,0 -83.8125,0 l 0,1 z m 721.96873,0.6875 c 19.6882,52.545 39.3985,105.07505 59.1563,157.59375 -5.2072,11.969 -9.5128,28.0712 -23.5,32.3124 -10.2327,1.934 -20.2005,-2.6637 -29.9687,-5.125 -2.4613,11.1334 -4.7143,22.3114 -7.0626,33.4688 19.3411,8.1468 44.0682,13.0679 62.3126,-0.062 24.9097,-19.4319 32.3616,-51.8903 43.9496,-79.8338 17.8293,-47.0137 35.6582,-94.02755 53.4878,-141.04115 -14.052,0 -28.1041,0 -42.1562,0 -12.4886,35.338 -25.0264,70.6586 -37.5938,105.96865 -12.5672,-35.31005 -25.105,-70.63065 -37.5937,-105.96865 -14.0104,0 -28.0208,0 -42.0313,0 0.3334,0.8958 0.6667,1.7917 1,2.6875 z m -1661.40623,29.2812 c 16.016,-0.1517 26.77495,16.0071 28.84375,30.5313 4.91801,23.013 2.90234,50.23115 -14.1875,67.90625 -9.84856,8.6319 -25.18356,6.7572 -34.40625,-1.8438 -7.11889,-6.1528 -15.27782,-14.3733 -13.53125,-24.5938 0.31486,-17.3898 -1.04001,-35.15185 0.75,-52.31235 7.26918,-10.6962 18.85292,-19.8685 32.53125,-19.6876 z m 1138.2813,0 c 16.5276,-0.1138 27.1469,16.6907 29.0249,31.4772 4.7631,22.9053 2.4426,49.69865 -14.4937,67.17905 -10.2253,8.6427 -26.2859,6.2651 -35.4062,-3.0313 -7.403,-6.2208 -14.2507,-14.9259 -12.375,-25.4062 0.311,-16.81815 -1.0594,-33.98915 0.7812,-50.59375 7.2698,-10.6475 18.8565,-19.8256 32.4688,-19.625 z m 329.49993,64.18755 c 1.4389,1.3562 -0.9918,5.0396 -0.125,7.2187 0.7621,5.4449 0.2261,11.7986 -4.625,15 -10.7284,11.683 -28.3407,20.7419 -43.8437,13.5937 -9.3288,-5.9417 -7.9335,-22.0899 2.5313,-26.1874 13.9651,-8.0834 30.7601,-6.5179 46.0624,-9.625 z" + id="text4204-0" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/davis/source/docs/docs/dlib-logo.png" + inkscape:export-xdpi="11.454896" + inkscape:export-ydpi="11.454896" + sodipodi:nodetypes="ccccccccccccccccccccccscccccccccssccccccccccsscccccccssccccccccccsscccccccccccccsscccccccccccccsccccccccccccccccccccccccccccccccccccscccccccsscccccccscccccccccccccccccccccccccccccccccc" /> + <path + style="fill:#008000;fill-opacity:1;stroke:none" + d="m 1344.1982,-458.61672 c -5.8837,0.1038 -11.7586,0.457 -17.6249,0.9063 0,139.1251 0,278.25007 0,417.375059 14.5472,1.41561 29.2369,1.15173 43.7498,-0.53125 3.8685,-16.33144 7.8575,-32.63435 11.8438,-48.93749 19.7614,-4.22553 38.8062,-12.010809 55.8751,-22.843749 14.3131,8.70739 28.6216,17.422329 42.9375,26.124999 11.2946,-8.81351 21.5361,-18.712529 30.8125,-29.562499 -8.7483,-14.43029 -17.5348,-28.83754 -26.3125,-43.25 10.9297,-17.21704 19.0889,-36.40516 23.0312,-56.46876 16.3976,-3.9617 32.7907,-7.94191 49.1875,-11.90621 1.1153,-14.2283 0.9838,-28.5485 -0.4375,-42.75 -16.2799,-3.9533 -32.5627,-7.895 -48.8437,-11.8438 -4.06,-20.0274 -11.791,-39.3996 -23,-56.4687 8.7845,-14.4002 17.5687,-28.8007 26.375,-43.1875 -9.0776,-11.0244 -19.1989,-20.9936 -30.3438,-29.9063 -14.516,8.8241 -29.0227,17.6635 -43.5312,26.5 -17.0089,-11.1052 -36.0249,-19.0299 -55.8751,-23.3437 -3.9687,-16.3543 -7.932,-32.7098 -11.9063,-49.0626 -8.6232,-0.8176 -17.2825,-0.9577 -25.9374,-0.8438 z m 38.9999,97.8126 c 51.3048,15.4004 88.3243,69.3546 81.8721,122.9329 -4.4019,45.60401 -37.4573,87.95555 -81.9658,100.41087 -0.4878,-14.03742 0.066,-28.21634 -0.1951,-42.3125 -0.018,-60.37497 -0.037,-120.74997 -0.055,-181.12497 l 0.3438,0.094 z" + id="path3056" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/davis/source/docs/docs/dlib-logo.png" + inkscape:export-xdpi="11.483641" + inkscape:export-ydpi="11.483641" /> + <rect + style="fill:url(#linearGradient4180);fill-opacity:1;stroke:none" + id="rect4005" + width="2095.2612" + height="367.69553" + x="-599.06995" + y="434.9024" + ry="183.84776" + inkscape:export-filename="/home/davis/Desktop/download-dlib.png" + inkscape:export-xdpi="12.886221" + inkscape:export-ydpi="12.886221" /> + <text + xml:space="preserve" + style="font-size:144px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Courier New;-inkscape-font-specification:Courier New" + x="-1730.9974" + y="1149.7817" + id="text4007" + sodipodi:linespacing="125%" + transform="translate(89.63425,-506.65078)"><tspan + sodipodi:role="line" + id="tspan4009" + x="-1730.9974" + y="1149.7817" /></text> + <text + xml:space="preserve" + style="font-size:144px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Bold" + x="-2777.5154" + y="1262.9188" + id="text4011" + sodipodi:linespacing="125%" + transform="translate(89.63425,-506.65078)"><tspan + sodipodi:role="line" + id="tspan4013" + x="-2777.5154" + y="1262.9188" /></text> + <text + xml:space="preserve" + style="font-size:226.84741211px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Bold" + x="-166.75345" + y="695.85248" + id="text4015" + sodipodi:linespacing="125%" + inkscape:export-filename="/home/davis/Desktop/download-dlib.png" + inkscape:export-xdpi="12.886221" + inkscape:export-ydpi="12.886221"><tspan + sodipodi:role="line" + id="tspan4017" + x="-166.75345" + y="695.85248">Download</tspan></text> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none" + d="m -433.81769,468.84058 0,117.50529 -68.92731,0 145.68235,173.96653 145.68219,-173.96653 -68.92723,0 0,-117.50529 -153.51,0 z" + id="rect4023" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/davis/Desktop/download-dlib.png" + inkscape:export-xdpi="12.886221" + inkscape:export-ydpi="12.886221" /> + <path + sodipodi:nodetypes="scccsccccccccccccccccccccccccccccccccccccccc" + inkscape:export-filename="/home/davis/Desktop/download-dlib.png" + inkscape:export-ydpi="12.886221" + inkscape:export-xdpi="12.886221" + inkscape:connector-curvature="0" + id="path4116" + d="m 1264.0349,531.69557 c -0.6379,-0.008 -1.2762,0.0265 -1.9246,0.0999 -14.8133,0.55788 -21.7844,22.92579 -9.6484,31.59466 10.004,9.32945 29.5747,1.0154 28.8702,-13.02282 0.4352,-9.56314 -7.7272,-18.55404 -17.2972,-18.67183 z m -143.0257,10.29563 0,0.79987 0,0.79986 0,25.54569 28.8951,0 0,135.42705 58.0152,0 0,-27.12042 -28.6702,0 0,-135.45205 z m 180.8728,0 0,0.79987 0,0.79986 0,161.22266 c 9.5611,-0.96273 19.3553,0.92939 28.77,-1.37475 1.4257,-1.3281 -0.3316,-5.85463 1.9498,-3.69938 18.2401,12.50959 46.7511,9.66789 59.415,-9.37339 17.1726,-22.95776 18.3483,-54.84905 9.4983,-81.33621 -6.0691,-16.12448 -20.8094,-29.99721 -38.7434,-30.41986 -11.1183,-0.78857 -22.289,2.39898 -31.5447,8.47358 l 0,-45.09238 z m -85.739,39.1684 0,0.79981 0,0.79989 0,25.54569 32.5696,0 0,96.25868 29.3699,0 0,-123.40407 z m 138.2801,24.37084 c 12.1831,-0.11711 20.0511,12.43687 21.0464,23.49603 3.1602,16.59453 1.2961,36.70675 -12.4229,48.26683 -8.3805,5.29962 -19.8984,1.25205 -25.8706,-6.04901 -5.6168,-4.9648 -7.0267,-13.01376 -5.824,-20.22157 0.249,-10.83641 -1.5347,-22.23184 1.1997,-32.69449 5.1019,-6.88225 12.8898,-12.8205 21.8714,-12.79779 z" + style="font-size:271.78607178px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:-50.81999969px;word-spacing:0px;fill:#585858;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Sans" /> + <path + style="fill:url(#linearGradient4064);fill-opacity:1;stroke:none" + d="m 1268.9434,52.066811 c -4.4399,0.0783 -8.8732,0.34486 -13.2999,0.68389 0,104.985059 0,209.969949 0,314.954929 10.9774,1.06823 22.0625,0.86916 33.014,-0.40085 2.9192,-12.3239 5.9294,-24.62621 8.9375,-36.92867 14.912,-3.18861 29.2834,-9.06346 42.1638,-17.23815 10.8007,6.57069 21.5982,13.1471 32.401,19.71416 8.5231,-6.65074 16.2514,-14.12062 23.2514,-22.30813 -6.6016,-10.88915 -13.232,-21.76102 -19.8556,-32.63683 8.2477,-12.9921 14.4046,-27.47162 17.3795,-42.61178 12.3738,-2.98954 24.7441,-5.99305 37.1173,-8.98453 0.8417,-10.73682 0.7424,-21.54296 -0.3302,-32.25953 -12.2849,-2.9832 -24.5721,-5.95764 -36.8578,-8.93745 -3.0637,-15.11286 -8.8976,-29.73129 -17.356,-42.61178 6.6288,-10.86653 13.2575,-21.73328 19.9028,-32.58968 -6.85,-8.31912 -14.4877,-15.841959 -22.8977,-22.567559 -10.9539,6.65874 -21.9008,13.329019 -32.849,19.997119 -12.8351,-8.380079 -27.1847,-14.360129 -42.1639,-17.615349 -2.9948,-12.3411 -5.9855,-24.68311 -8.9846,-37.02309 -6.5071,-0.61696 -13.0415,-0.72268 -19.5726,-0.63672 z m 29.4297,73.810249 c 38.7151,11.62129 66.6503,52.33562 61.7814,92.76628 -3.3217,34.41319 -28.2656,66.372 -61.8521,75.77089 -0.3681,-10.59275 0.05,-21.29227 -0.1472,-31.92939 -0.014,-45.55945 -0.028,-91.11896 -0.042,-136.67849 l 0.2594,0.071 z" + id="path4118" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/davis/source/docs/docs/download-dlib.png" + inkscape:export-xdpi="12.53" + inkscape:export-ydpi="12.53" /> + <path + inkscape:export-filename="/home/davis/source/docs/docs/dlib-logo.png" + inkscape:export-ydpi="11.454896" + inkscape:export-xdpi="11.454896" + inkscape:connector-curvature="0" + id="path3423" + d="m -700.44965,-1241.6921 c -7.0694,0.2366 -14.1694,0.4859 -21.1458,1.6945 -3.9716,29.9411 -0.5085,60.2416 -1.7297,90.3372 0,110.3652 0,220.7303 0,331.09533 17.5181,1.96294 35.2448,2.08247 52.7761,0.21181 3.4078,-13.87477 6.8258,-27.74701 10.2376,-41.62079 20.5306,-4.46116 40.1991,-12.40545 57.9655,-23.75805 12.2009,7.504 24.4283,14.9674 36.6432,22.45188 13.6273,-10.93108 26.016,-23.11298 36.9257,-36.78448 -6.9551,-12.4221 -15.746,-24.7642 -21.7812,-37.1021 11.293,-17.4531 19.3462,-37.0165 23.864,-57.4006 13.8881,-3.3324 27.7787,-6.6561 41.6914,-9.8845 2.0867,-17.2981 2.0527,-34.8194 0.2471,-52.1408 -13.8438,-3.5404 -27.8086,-6.6202 -41.5855,-10.414 -4.3487,-20.575 -12.404,-40.2377 -23.7581,-57.8244 7.3943,-12.2575 14.9867,-24.3222 22.346,-36.6078 -10.8242,-13.6674 -23.0855,-26.0674 -36.7491,-36.8904 -12.3892,6.9984 -24.7935,15.6739 -37.1022,21.7459 -17.4152,-11.5954 -37.066,-19.4658 -57.4007,-24.0052 -3.3418,-13.8244 -6.6084,-27.6666 -9.8492,-41.5149 -10.4685,-1.3508 -21.0455,-1.7791 -31.5951,-1.5886 z m 38.4084,93.1614 c 57.1343,15.2082 98.0809,76.4632 88.9957,135.1705 -5.9464,47.0781 -41.3184,89.2807 -87.1601,102.6222 -3.4364,2.54 -1.6086,-3.9072 -1.9063,-5.507 0.108,-77.4094 -0.037,-154.9296 0.071,-232.2857 z" + style="fill:url(#linearGradient4276);fill-opacity:1;stroke:#7b7b7b;stroke-width:7.39929724;stroke-linejoin:miter;stroke-miterlimit:0.60000002;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + style="fill:url(#linearGradient3256);fill-opacity:1;stroke:#7b7b7b;stroke-width:7.39929724;stroke-linejoin:miter;stroke-miterlimit:0.60000002;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 104.95566,-590.67116 c -7.0694,0.2366 -14.1694,0.4859 -21.1458,1.6945 -3.9716,29.9411 -0.5085,60.2416 -1.7297,90.3372 0,110.3652 0,220.7303 0,331.09533 17.5181,1.96294 35.2448,2.08247 52.7761,0.21181 3.4078,-13.87477 6.8258,-27.74701 10.2376,-41.62079 20.5306,-4.46116 40.1991,-12.40545 57.9655,-23.75805 12.2009,7.504 24.4283,14.9674 36.6432,22.45188 13.6273,-10.93108 26.016,-23.11298 36.9257,-36.78448 -6.9551,-12.4221 -15.746,-24.7642 -21.7812,-37.1021 11.293,-17.4531 19.3462,-37.0165 23.864,-57.4006 13.8881,-3.3324 27.7787,-6.6561 41.6914,-9.8845 2.0867,-17.2981 2.0527,-34.8194 0.2471,-52.1408 -13.8438,-3.5404 -27.8086,-6.6202 -41.5855,-10.414 -4.3487,-20.575 -12.404,-40.2377 -23.7581,-57.8244 7.3943,-12.2575 14.9867,-24.3222 22.346,-36.6078 -10.8242,-13.6674 -23.0855,-26.0674 -36.7491,-36.8904 -12.3892,6.9984 -24.7935,15.6739 -37.1022,21.7459 -17.4152,-11.5954 -37.066,-19.4658 -57.4007,-24.0052 -3.3418,-13.8244 -6.6084,-27.6666 -9.8492,-41.5149 -10.4685,-1.3508 -21.0455,-1.7791 -31.5951,-1.5886 z m 38.4084,93.1614 c 57.1343,15.2082 98.0809,76.4632 88.9957,135.1705 -5.9464,47.0781 -41.3184,89.2807 -87.1601,102.6222 -3.4364,2.54 -1.6086,-3.9072 -1.9063,-5.507 0.108,-77.4094 -0.037,-154.9296 0.071,-232.2857 z" + id="path3254" + inkscape:connector-curvature="0" + inkscape:export-xdpi="11.455284" + inkscape:export-ydpi="11.455284" + inkscape:export-filename="/home/davis/Desktop/dlib-logo.png" /> + <path + inkscape:export-filename="/home/davis/Desktop/download-dlib.png" + inkscape:export-ydpi="12.886221" + inkscape:export-xdpi="12.886221" + inkscape:connector-curvature="0" + id="path3258" + d="m 988.35185,474.54841 c -4.80144,0.1607 -9.62368,0.33001 -14.36195,1.15088 -2.69746,20.33562 -0.34537,40.91534 -1.1748,61.35588 0,74.95866 0,149.91724 0,224.87577 11.89808,1.3332 23.9378,1.41438 35.8449,0.14386 2.3145,-9.42357 4.6359,-18.84542 6.9532,-28.26832 13.9441,-3.02996 27.3027,-8.42562 39.3695,-16.13616 8.2866,5.09662 16.5913,10.16567 24.8876,15.24903 9.2554,-7.42425 17.6697,-15.69804 25.0794,-24.98355 -4.7238,-8.43694 -10.6945,-16.81954 -14.7936,-25.19928 7.6701,-11.85392 13.1398,-25.14114 16.2082,-38.98576 9.4327,-2.26333 18.8669,-4.52074 28.3163,-6.71343 1.4172,-11.74865 1.3941,-23.64889 0.1678,-35.41337 -9.4025,-2.4046 -18.8873,-4.49636 -28.2443,-7.07306 -2.9536,-13.97428 -8.4247,-27.32894 -16.1363,-39.2736 5.0221,-8.32514 10.1788,-16.51933 15.1771,-24.86355 -7.3516,-9.28273 -15.6793,-17.70465 -24.9594,-25.05549 -8.4147,4.75322 -16.8394,10.64551 -25.1994,14.76953 -11.8281,-7.87544 -25.1747,-13.22092 -38.9858,-16.30402 -2.2698,-9.38936 -4.4884,-18.79081 -6.6895,-28.1964 -7.1101,-0.91745 -14.29379,-1.20835 -21.45895,-1.07896 z m 26.08645,63.27405 c 38.8049,10.32922 66.6153,51.93284 60.4448,91.80609 -4.0388,31.97485 -28.0629,60.63832 -59.198,69.6997 -2.3341,1.72514 -1.0926,-2.65372 -1.2948,-3.74028 0.073,-52.57549 -0.025,-105.22623 0.048,-157.76551 z" + style="fill:url(#linearGradient3260);fill-opacity:1;stroke:none" /> + </g> +</svg> diff --git a/ml/dlib/docs/docs/dlib-logo-small.png b/ml/dlib/docs/docs/dlib-logo-small.png Binary files differnew file mode 100644 index 00000000..6abcc9df --- /dev/null +++ b/ml/dlib/docs/docs/dlib-logo-small.png diff --git a/ml/dlib/docs/docs/dlib-logo.png b/ml/dlib/docs/docs/dlib-logo.png Binary files differnew file mode 100644 index 00000000..59222722 --- /dev/null +++ b/ml/dlib/docs/docs/dlib-logo.png diff --git a/ml/dlib/docs/docs/dlib.css b/ml/dlib/docs/docs/dlib.css new file mode 100644 index 00000000..e7e9fb45 --- /dev/null +++ b/ml/dlib/docs/docs/dlib.css @@ -0,0 +1,369 @@ + +/* + * Overall page layout stuff. It goes like: + * + * ============ page_header ============= + * | | + * ============ top_content ============= + * | | | | + * | main_menu | main_text | right_menu | + * | | | | + * ============ bottom_content ========== + * | | + * | . | + * | . | + * | . | + * | | + */ + +body +{ + margin:0px; + background-color: #EDF3EE; + width:62.0em; + margin-left: auto; + margin-right: auto; + font-size: 17px; +} + +h1,h2,h3 +{ + line-height:1.2; +} + +#page_header { + height:59px; + text-align: left; + margin-top: 0.4em; +} + +#top_content +{ + width: 100%; + height: 900px; + display: table; +} +#top_content > div +{ + display: table-cell; +} +#main_menu +{ + width: fit-content; + padding-bottom: 6em; /* So the menu_footer always has room. */ +} +#main_text +{ + background-color: white; + border: 1px solid rgb(102,102,102); + width: 100%; + line-height: 1.3em; +} +#main_text_title +{ + margin-top: 10px; + margin-bottom: 20px; + text-align: center; + font-size: 2.1em; + font-weight: bold; +} +#main_text_body +{ + vertical-align: top; + padding-top: 1px; + padding-left: 10px; + padding-right: 10px; +} + +#right_menu +{ + width: fit-content; + min-width: 9em; +} + +div.menu +{ + vertical-align: top; + position: relative; + background-color:#F5F5F5; + padding:7px; + border: 1px solid rgb(102,102,102); +} +div.menu_top { +} +div.menu_footer { + position: absolute; + bottom: 10px; +} + + +#bottom_content +{ + line-height: 1.3em; +} + +/* ============================================================= */ + +pre {margin:0px;} + +ul.tree li { list-style: none; margin-left:10px;} +ul.tree { margin:0px; padding:0px; margin-left:5px; font-size:0.95em; } +ul.tree li ul { margin-left:10px; padding:0px; } + +li#term { list-style: none; } + +div.include_file_more_details_wrapper +{ + margin-top: 1em; + margin-bottom: 5px; + overflow: auto; + width: 100%; + display: inline-block; +} +div.include_file +{ + font-size: 1.3em; + font-weight: bold; + font-family: monospace; + + float: right; + + padding: 0.4em; +} +a.more_details, a.more_details_extension +{ + font-size: 1.6em; + font-weight: bold; + float: left; + + + margin: 5px; + + font: 200 1.6em source-sans-pro, sans-serif; + text-align: center; + padding-left: 1.5em; + padding-right: 1.5em; + -webkit-font-smoothing: antialiased; + background-color: #f59820; + border-color: #d47c0a; + color: #fff; + + padding: 0.2em 1.5em 0.2em; + + -moz-box-shadow: 2px 2px 9px #777777; + -webkit-box-shadow: 2px 2px 9px #777777; + box-shadow: 1px 1px 5px #777777; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + + transition: 320ms; + display: inline-block; + +} +a.more_details:hover, a.more_details_extension:hover +{ + text-decoration: none; + -moz-box-shadow: 1px 1px 9px #77a777; + -webkit-box-shadow: 1px 1px 9px #77a777; + box-shadow: 1px 1px 5px #77a777; + color: #ffffff; + + background-color: #d5780a; +} + +a.more_details_extension +{ + margin-top: 10px; + padding: 0.1em 1.0em 0.1em; + display: block; + font-size: 1.3em; + float: none; + width: 160px; +} + +div.component { + background-color:white; + border: 2px solid rgb(102,102,102); + text-align:left; + margin-top: 1.5em; + padding: 0.7em; +} + +div.question { + background-color:white; + border: 2px solid rgb(102,102,102); + text-align:left; + margin-top: 1.5em; + margin-bottom: 90%; + padding: 0.7em; +} + +div.function { + background-color:white; + border: 2px solid rgb(102,102,255); + text-align:left; + margin-top: 0.3em; + padding: 0.3em; +} + +div.class { + background-color:white; + border: 2px solid rgb(255,102,102); + text-align:left; + margin-top: 0.3em; + padding: 0.3em; +} + +div.extension { + background-color:#FDFDFD; + border: 1px solid rgb(102,102,102); + text-align:left; + margin-top: 1.0em; + padding: 0.7em; +} + +div.logb { + text-align:left; + padding: 0.0em; + float: left; + background-color:#c0c0c0; + border: double ; + margin: 0.5em; +} + +div.name { + float: left; +} +div.line1 { + float:left; + width:100%; + background-color:#dfdfdf; +} +div.line2 { + float:left; + width:100%; +} +div.inc { + float: right; +} + +video +{ + border: black dotted 1px; + border-bottom: black solid 2px; +} + +.code_box +{ + color: black; + margin: 1em 0.25in; + padding: 0.5em; + background: rgb(240,240,240); + border-top: black dotted 1px; + border-left: black dotted 1px; + border-right: black solid 2px; + border-bottom: black solid 2px; +} + +tt +{ + padding: 0.3em; + font-size:13px; + font-family: monospace; + background: rgb(240,240,240); + color: black; +} + + + +.bdotted {border-bottom: 1px dotted} +.bdashed {border-bottom: 1px dashed} +.bsolid {border-bottom: 1px solid} +.bdouble {border-bottom: 1px double} +.bgroove {border-bottom: 1px groove} +.bridge {border-bottom: 1px ridge} +.binset {border-bottom: 1px inset} +.boutset {border-bottom: 1px outset} + +div.row1 { + background-color:#dfdfdf; +} +div.row2 { + background-color:#f2f2f2; +} + +div.typedefs { + margin-left: 1.5em; + margin-top: 0.2em; + border: 1px dotted; + width: 52em; +} + +div.tdn { + width: 10em; +} + +.fullhr { + clear: both; +} + + +a { + text-decoration: none; + font-family: sans-serif; +} +a:hover{ + text-decoration: underline; +} +a.menu{ + white-space: nowrap; +} +a.sub{ + cursor: pointer; + margin-left:-9px; + color: green; +} +#download_button { + font: 200 16px source-sans-pro, sans-serif; + text-align: center; + padding-left: 1.5em; + padding-right: 1.5em; + -webkit-font-smoothing: antialiased; + background-color: #2098f5; + border-color: #0a7cd4; + color: #fff; + + padding: 0.7em 1em 0.8em; + + -moz-box-shadow: 2px 2px 9px #777777; + -webkit-box-shadow: 2px 2px 9px #777777; + box-shadow: 1px 1px 5px #777777; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + + transition: 320ms; + display: inline-block; +} +#download_button:hover { + text-decoration: none; + -moz-box-shadow: 1px 1px 9px #77a777; + -webkit-box-shadow: 1px 1px 9px #77a777; + box-shadow: 1px 1px 5px #77a777; + color: #ffffff; + background-color: #0a7cd4; +} + +div { + display:block; +} + +#dlib_version { + color: #fff; + display: block; + font-size: 0.8em; + font-weight: 400; + margin: 0; +} + diff --git a/ml/dlib/docs/docs/dlib.js b/ml/dlib/docs/docs/dlib.js new file mode 100644 index 00000000..025bbf99 --- /dev/null +++ b/ml/dlib/docs/docs/dlib.js @@ -0,0 +1,94 @@ + +function init_page() +{ + if (navigator.appVersion.indexOf("Win")!=-1) + { + var a = document.getElementById("download_button"); + a.href = a.href.replace("tar.bz2", "zip"); + } +} +window.onload = init_page; + +// -------------------------------------------------------------- +// Tree collapse stuff +// -------------------------------------------------------------- + +function Toggle(node) +{ + // Unfold the branch if it isn't visible + var next_node = node.nextSibling; + if (next_node.style.display == 'none') + { + // Change the image (if there is an image) + if (node.childNodes.length > 0) + { + if (node.childNodes.length > 0) + { + if (node.childNodes.item(0).nodeName == "IMG") + { + node.childNodes.item(0).src = "minus.gif"; + } + } + } + + next_node.style.display = 'block'; + } + // Collapse the branch if it IS visible + else + { + // Change the image (if there is an image) + if (node.childNodes.length > 0) + { + if (node.childNodes.length > 0) + { + if (node.childNodes.item(0).nodeName == "IMG") + { + node.childNodes.item(0).src = "plus.gif"; + } + } + } + + next_node.style.display = 'none'; + } + +} +function BigToggle(node) +{ + // Unfold the branch if it isn't visible + var next_node = node.nextSibling; + if (next_node.style.display == 'none') + { + // Change the image (if there is an image) + if (node.childNodes.length > 0) + { + if (node.childNodes.length > 0) + { + if (node.childNodes.item(0).nodeName == "IMG") + { + node.childNodes.item(0).src = "bigminus.gif"; + } + } + } + + next_node.style.display = 'block'; + } + // Collapse the branch if it IS visible + else + { + // Change the image (if there is an image) + if (node.childNodes.length > 0) + { + if (node.childNodes.length > 0) + { + if (node.childNodes.item(0).nodeName == "IMG") + { + node.childNodes.item(0).src = "bigplus.gif"; + } + } + } + + next_node.style.display = 'none'; + } + +} + diff --git a/ml/dlib/docs/docs/down.gif b/ml/dlib/docs/docs/down.gif Binary files differnew file mode 100644 index 00000000..5d7bb646 --- /dev/null +++ b/ml/dlib/docs/docs/down.gif diff --git a/ml/dlib/docs/docs/enable_if.html b/ml/dlib/docs/docs/enable_if.html new file mode 100644 index 00000000..09cc2d4d --- /dev/null +++ b/ml/dlib/docs/docs/enable_if.html @@ -0,0 +1,387 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD><TITLE>enable_if</TITLE> + +<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<META name="GENERATOR" content="Microsoft FrontPage 5.0"> +</HEAD> +<BODY > +<!--HEVEA command line is: hevea -nosymb -noiso -pedantic -v enable_if_docs_for_boost.tex --> +<!--HTMLHEAD--> +<!--ENDHTML--> +<!--PREFIX <ARG ></ARG>--> +<!--CUT DEF section 1 --> +<BR> +<BR> + + +<h1> +<img border="0" src="boost.png" align="center" width="277" height="86">enable_if</h1> +<BR> +<BR> +Copyright 2003 Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine.<BR> +<BR> +<!--TOC section Introduction--> + +<H2><A NAME="htoc1">1</A> Introduction</H2><!--SEC END --> + +<A NAME="introduction"></A> +The <TT>enable_if</TT> family of templates is a set of tools to allow a function template or a class template specialization +to include or exclude itself from a set of matching functions or specializations +based on properties of its template arguments. +For example, one can define function templates that +are only enabled for, and thus only match, an arbitrary set of types +defined by a traits class. The <TT>enable_if</TT> templates can also be +applied to enable class template specializations. Applications of +<TT>enable_if</TT> are discussed in length +in [<A HREF="#jarvi:03:cuj_arbitrary_overloading"><CITE>1</CITE></A>] and [<A HREF="#jarvi:03:c++typeclasses"><CITE>2</CITE></A>].<BR> +<BR> +<!--TOC subsection Synopsis--> + +<H3><A NAME="htoc2">1.1</A> Synopsis</H3><!--SEC END --> + +<A NAME="sec:synopsis"></A> +<PRE>namespace boost { + template <class Cond, class T = void> struct enable_if; + template <class Cond, class T = void> struct disable_if; + template <class Cond, class T> struct lazy_enable_if; + template <class Cond, class T> struct lazy_disable_if; + + template <bool B, class T = void> struct enable_if_c; + template <bool B, class T = void> struct disable_if_c; + template <bool B, class T> struct lazy_enable_if_c; + template <bool B, class T> struct lazy_disable_if_c; +} +</PRE> +<!--TOC subsection Background--> + +<H3><A NAME="htoc3">1.2</A> Background</H3><!--SEC END --> + +<A NAME="sec:background"></A> +Sensible operation of template function overloading in C++ relies +on the <EM>SFINAE</EM> (substitution-failure-is-not-an-error) +principle [<A HREF="#vandevoorde2002:templates"><CITE>3</CITE></A>]: if an invalid argument +or return type is formed during the instantiation of a function +template, the instantiation is removed from the overload resolution +set instead of causing a compilation error. The following example, +taken from [<A HREF="#jarvi:03:cuj_arbitrary_overloading"><CITE>1</CITE></A>], +demonstrates why this is important: +<PRE>int negate(int i) { return -i; } + +template <class F> +typename F::result_type negate(const F& f) { return -f(); } + +</PRE> +Suppose the compiler encounters the call <TT>negate(1)</TT>. The first +definition is obviously a better match, but the compiler must +nevertheless consider (and instantiate the prototypes) of both +definitions to find this out. Instantiating the latter definition with +<TT>F</TT> as <TT>int</TT> would result in: +<PRE>int::result_type negate(const int&); + +</PRE> +where the return type is invalid. If this was an error, adding an unrelated function template +(that was never called) could break otherwise valid code. +Due to the SFINAE principle the above example is not, however, erroneous. +The latter definition of <TT>negate</TT> is simply removed from the overload resolution set.<BR> +<BR> +The <TT>enable_if</TT> templates are tools for controlled creation of the SFINAE +conditions.<BR> +<BR> +<!--TOC section The <TT>enable_if</TT> templates--> + +<H2><A NAME="htoc4">2</A> The <TT>enable_if</TT> templates</H2><!--SEC END --> + +<A NAME="enable_if"></A> +The names of the <TT>enable_if</TT> templates have three parts: an optional <TT>lazy_</TT> tag, +either <TT>enable_if</TT> or <TT>disable_if</TT>, and an optional <TT>_c</TT> tag. +All eight combinations of these parts are supported. +The meaning of the <TT>lazy_</TT> tag is described in Section <A HREF="#sec:enable_if_lazy">3.3</A>. +The second part of the name indicates whether a true condition argument should +enable or disable the current overload. +The third part of the name indicates whether the condition argument is a <TT>bool</TT> value +(<TT>_c</TT> suffix), or a type containing a static <TT>bool</TT> constant named <TT>value</TT> (no suffix). +The latter version interoperates with Boost.MPL. <BR> +<BR> +The definitions of <TT>enable_if_c</TT> and <TT>enable_if</TT> are as follows (we use <TT>enable_if</TT> templates +unqualified but they are in the <TT>boost</TT> namespace). +<PRE>template <bool B, class T = void> +struct enable_if_c { + typedef T type; +}; + +template <class T> +struct enable_if_c<false, T> {}; + +template <class Cond, class T = void> +struct enable_if : public enable_if_c<Cond::value, T> {}; + +</PRE> +An instantiation of the <TT>enable_if_c</TT> template with the parameter +<TT>B</TT> as <TT>true</TT> contains a member type <TT>type</TT>, defined +to be <TT>T</TT>. If <TT>B</TT> is +<TT>false</TT>, no such member is defined. Thus +<TT>enable_if_c<B, T>::type</TT> is either a valid or an invalid type +expression, depending on the value of <TT>B</TT>. +When valid, <TT>enable_if_c<B, T>::type</TT> equals <TT>T</TT>. +The <TT>enable_if_c</TT> template can thus be used for controlling when functions are considered for +overload resolution and when they are not. +For example, the following function is defined for all arithmetic types (according to the +classification of the <A HREF="http://www.boost.org/doc/libs/release/libs/type_traits/index.html">Boost type_traits library</A>): +<PRE>template <class T> +typename enable_if_c<boost::is_arithmetic<T>::value, T>::type +foo(T t) { return t; } + +</PRE> +The <TT>disable_if_c</TT> template is provided as well, and has the +same functionality as <TT>enable_if_c</TT> except for the negated condition. The following +function is enabled for all non-arithmetic types. +<PRE>template <class T> +typename disable_if_c<boost::is_arithmetic<T>::value, T>::type +bar(T t) { return t; } + +</PRE> +For easier syntax in some cases and interoperation with Boost.MPL we provide versions of +the <TT>enable_if</TT> templates taking any type with a <TT>bool</TT> member constant named +<TT>value</TT> as the condition argument. +The MPL <TT>bool_</TT>, <TT>and_</TT>, <TT>or_</TT>, and <TT>not_</TT> templates are likely to be +useful for creating such types. Also, the traits classes in the Boost.Type_traits library +follow this convention. +For example, the above example function <TT>foo</TT> can be alternatively written as: +<PRE>template <class T> +typename enable_if<boost::is_arithmetic<T>, T>::type +foo(T t) { return t; } + +</PRE> +<!--TOC section Using <TT>enable_if</TT>--> + +<H2><A NAME="htoc5">3</A> Using <TT>enable_if</TT></H2><!--SEC END --> + +<A NAME="sec:using_enable_if"></A> +The <TT>enable_if</TT> templates are defined in +<TT>boost/utility/enable_if.hpp</TT>, which is included by <TT>boost/utility.hpp</TT>.<BR> +<BR> +The <TT>enable_if</TT> template can be used either as the return type, or as an +extra argument. For example, the <TT>foo</TT> function in the previous section could also be written +as: +<PRE>template <class T> +T foo(T t, typename enable_if<boost::is_arithmetic<T> >::type* dummy = 0); + +</PRE>Hence, an extra parameter of type <TT>void*</TT> is added, but it is given +a default value to keep the parameter hidden from client code. +Note that the second template argument was not given to <TT>enable_if</TT>, as the default +<TT>void</TT> gives the desired behavior.<BR> +<BR> +Whether to write the enabler as an argument or within the return type is +largely a matter of taste, but for certain functions, only one +alternative is possible: +<UL><LI> +Operators have a fixed number of arguments, thus <TT>enable_if</TT> must be used in the return type. +<LI>Constructors and destructors do not have a return type; an extra argument is the only option. +<LI>There does not seem to be a way to specify an enabler for a conversion operator. Converting constructors, +however, can have enablers as extra default arguments. +</UL> +<!--TOC subsection Enabling template class specializations--> + +<H3><A NAME="htoc6">3.1</A> Enabling template class specializations</H3><!--SEC END --> + +<A NAME="sec:enable_if_classes"></A> +Class template specializations can be enabled or disabled with <TT>enable_if</TT>. +One extra template parameter needs to be added for the enabler expressions. +This parameter has the default value <TT>void</TT>. +For example: +<PRE>template <class T, class Enable = void> +class A { ... }; + +template <class T> +class A<T, typename enable_if<is_integral<T> >::type> { ... }; + +template <class T> +class A<T, typename enable_if<is_float<T> >::type> { ... }; + +</PRE>Instantiating <TT>A</TT> with any integral type matches the first specialization, +whereas any floating point type matches the second one. All other types +match the primary template. +The condition can be any compile-time boolean expression that depends on the +template arguments of the class. +Note that again, the second argument to <TT>enable_if</TT> is not needed; the default (<TT>void</TT>) +is the correct value.<BR> +<BR> +<!--TOC subsection Overlapping enabler conditions--> + +<H3><A NAME="htoc7">3.2</A> Overlapping enabler conditions</H3><!--SEC END --> + +<A NAME="sec:overlapping_conditions"></A> +Once the compiler has examined the enabling conditions and included the +function into the overload resolution set, normal C++ overload resolution +rules are used to select the best matching function. +In particular, there is no ordering between enabling conditions. +Function templates with enabling conditions that are not mutually exclusive can +lead to ambiguities. For example: +<PRE>template <class T> +typename enable_if<boost::is_integral<T>, void>::type +foo(T t) {} + +template <class T> +typename enable_if<boost::is_arithmetic<T>, void>::type +foo(T t) {} + +</PRE> +All integral types are also arithmetic. Therefore, say, for the call <TT>foo(1)</TT>, +both conditions are true and both functions are thus in the overload resolution set. +They are both equally good matches and thus ambiguous. +Of course, more than one enabling condition can be simultaneously true as long as +other arguments disambiguate the functions.<BR> +<BR> +The above discussion applies to using <TT>enable_if</TT> in class template +partial specializations as well.<BR> +<BR> +<!--TOC subsection Lazy <TT>enable_if</TT>--> + +<H3><A NAME="htoc8">3.3</A> Lazy <TT>enable_if</TT></H3><!--SEC END --> + +<A NAME="sec:enable_if_lazy"></A> +In some cases it is necessary to avoid instantiating part of a +function signature unless an enabling condition is true. For example: +<PRE>template <class T, class U> class mult_traits; + +template <class T, class U> +typename enable_if<is_multipliable<T, U>, typename mult_traits<T, U>::type>::type +operator*(const T& t, const U& u) { ... } + +</PRE>Assume the class template <TT>mult_traits</TT> is a traits class defining +the resulting type of a multiplication operator. The <TT>is_multipliable</TT> traits +class specifies for which types to enable the operator. Whenever +<TT>is_multipliable<A, B>::value</TT> is <TT>true</TT> for some types <TT>A</TT> and <TT>B</TT>, +then <TT>mult_traits<A, B>::type</TT> is defined.<BR> +<BR> +Now, trying to invoke (some other overload) of <TT>operator*</TT> with, say, operand types <TT>C</TT> and <TT>D</TT> +for which <TT>is_multipliable<C, D>::value</TT> is <TT>false</TT> +and <TT>mult_traits<C, D>::type</TT> is not defined is an error on some compilers. +The SFINAE principle is not applied because +the invalid type occurs as an argument to another template. The <TT>lazy_enable_if</TT> +and <TT>lazy_disable_if</TT> templates (and their <TT>_c</TT> versions) can be used in such +situations: +<PRE>template<class T, class U> +typename lazy_enable_if<is_multipliable<T, U>, mult_traits<T, U> >::type +operator*(const T& t, const U& u) { ... } + +</PRE>The second argument of <TT>lazy_enable_if</TT> must be a class type +that defines a nested type named <TT>type</TT> whenever the first +parameter (the condition) is true.<BR> +<BR> +<!--TOC paragraph Note--> + +<H5>Note</H5><!--SEC END --> + +Referring to one member type or static constant in a traits class +causes all of the members (type and static constant) of that +specialization to be instantiated. Therefore, if your traits classes +can sometimes contain invalid types, you should use two distinct +templates for describing the conditions and the type mappings. In the +above example, <TT>is_multipliable<T, U>::value</TT> defines when +<TT>mult_traits<T, U>::type</TT> is valid.<BR> +<BR> +<!--TOC subsection Compiler workarounds--> + +<H3><A NAME="htoc9">3.4</A> Compiler workarounds</H3><!--SEC END --> + +<A NAME="sec:workarounds"></A> +Some compilers flag functions as ambiguous if the only distinguishing factor is a different +condition in an enabler (even though the functions could never be ambiguous). For example, +some compilers (e.g. GCC 3.2) diagnose the following two functions as ambiguous: +<PRE>template <class T> +typename enable_if<boost::is_arithmetic<T>, T>::type +foo(T t); + +template <class T> +typename disable_if<boost::is_arithmetic<T>, T>::type +foo(T t); + +</PRE>Two workarounds can be applied: +<UL><LI> +Use an extra dummy parameter which disambiguates the functions. Use a default value for +it to hide the parameter from the caller. For example: +<PRE>template <int> struct dummy { dummy(int) {} }; + +template <class T> +typename enable_if<boost::is_arithmetic<T>, T>::type +foo(T t, dummy<0> = 0); + +template <class T> +typename disable_if<boost::is_arithmetic<T>, T>::type +foo(T t, dummy<1> = 0); +</PRE><BR> +<BR> +<LI>Define the functions in different namespaces and bring them into a common +namespace with <TT>using</TT> declarations: +<PRE>namespace A { + template <class T> + typename enable_if<boost::is_arithmetic<T>, T>::type + foo(T t); +} + +namespace B { + template <class T> + typename disable_if<boost::is_arithmetic<T>, T>::type + foo(T t); +} + +using A::foo; +using B::foo; + +</PRE> +Note that the second workaround above cannot be used for member +templates. On the other hand, operators do not accept extra arguments, +which makes the first workaround unusable. As the net effect, +neither of the workarounds are of assistance for templated operators that +need to be defined as member functions (assignment and +subscript operators). +</UL> +<!--TOC section Acknowledgements--> + +<H2><A NAME="htoc10">4</A> Acknowledgements</H2><!--SEC END --> + +We are grateful to Howard Hinnant, Jason Shirk, Paul Mensonides, and Richard +Smith whose findings have influenced the library.<BR> +<BR> +<!--TOC section References--> + +<H2>References</H2><!--SEC END --> +<DL COMPACT=compact><DT><A NAME="jarvi:03:cuj_arbitrary_overloading"><FONT COLOR=purple>[1]</FONT></A><DD> +Jaakko Järvi, Jeremiah Willcock, Howard Hinnant, and Andrew Lumsdaine. +Function overloading based on arbitrary properties of types. +<EM>C/C++ Users Journal</EM>, 21(6):25--32, June 2003.<BR> +<BR> +<DT><A NAME="jarvi:03:c++typeclasses"><FONT COLOR=purple>[2]</FONT></A><DD> +Jaakko Järvi, Jeremiah Willcock, and Andrew Lumsdaine. +Concept-controlled polymorphism. +In Frank Pfennig and Yannis Smaragdakis, editors, <EM>Generative + Programming and Component Engineering</EM>, volume 2830 of <EM>LNCS</EM>, pages + 228--244. Springer Verlag, September 2003.<BR> +<BR> +<DT><A NAME="vandevoorde2002:templates"><FONT COLOR=purple>[3]</FONT></A><DD> +David Vandevoorde and Nicolai M. Josuttis. +<EM>C++ Templates: The Complete Guide</EM>. +Addison-Wesley, 2002.</DL> + + + + + +<hr></hr> + +<B>Contributed by:</B> <BR> +Jaakko Järvi, Jeremiah Willcock and Andrew Lumsdaine<BR> +<EM>{jajarvi|jewillco|lums}@osl.iu.edu</EM><BR> +Indiana University<BR> +Open Systems Lab +<!--HTMLFOOT--> +<!--ENDHTML--> +<!--FOOTER--> +<HR SIZE=2> +<BLOCKQUOTE><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by +</EM><A HREF="http://pauillac.inria.fr/~maranget/hevea/index.html"><EM>H<FONT SIZE=2><sup>E</sup></FONT>V<FONT SIZE=2><sup>E</sup></FONT>A</EM></A><EM>. +</EM></BLOCKQUOTE> +</BODY> +</HTML> diff --git a/ml/dlib/docs/docs/face_landmarking_example.png b/ml/dlib/docs/docs/face_landmarking_example.png Binary files differnew file mode 100644 index 00000000..27f70ecb --- /dev/null +++ b/ml/dlib/docs/docs/face_landmarking_example.png diff --git a/ml/dlib/docs/docs/faq.xml b/ml/dlib/docs/docs/faq.xml new file mode 100644 index 00000000..dbec1b84 --- /dev/null +++ b/ml/dlib/docs/docs/faq.xml @@ -0,0 +1,547 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Frequently Asked Questions</title> + + <!-- ************************************************************************* --> + <questions group="General"> + + <question text="Why do I get USER_ERROR__inconsistent_build_configuration__see_dlib_faq_1?"> + You are getting this error because you are not compiling all the C++ + code in your program with consistent settings. This is a violation of + <a href="https://en.wikipedia.org/wiki/One_Definition_Rule">C++'s One Definition Rule</a>. + In this case, you are compiling some translation units with dlib's + assert macros enabled and others with them disabled. + <p> + For reference, the code that generates this error is: + <a href="dlib/test_for_odr_violations.h.html">dlib/test_for_odr_violations.h</a> and + <a href="dlib/test_for_odr_violations.cpp.html">dlib/test_for_odr_violations.cpp</a>. + </p> + </question> + + + <question text="Why do I get USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2?"> + You are getting this error because you are not compiling all the C++ + code in your program with consistent settings. This is a violation of + <a href="https://en.wikipedia.org/wiki/One_Definition_Rule">C++'s One Definition Rule</a>. + In this case, you compiled a standalone copy of dlib with CMake and instead of using <tt>make install</tt> + or <tt>cmake --build . --target install</tt> to copy the resulting build files somewhere you went + and cherry picked files manually and messed it up. In particular, CMake compiled dlib + with a bunch of settings recorded in the CMake generated config.h file but you instead + are now trying to build more dlib related code with the + <a href="dlib/config.h.html">dlib/config.h</a> from source control. + <p> + For reference, the code that generates this error is: + <a href="dlib/test_for_odr_violations.h.html">dlib/test_for_odr_violations.h</a> and + <a href="dlib/test_for_odr_violations.cpp.html">dlib/test_for_odr_violations.cpp</a>. + </p> + </question> + + <question text="It doesn't work?"> + Do not post a question like "I'm using dlib, and it doesn't work?" or + "I'm using the object detector and it doesn't work, what do I do?". + If this is all you say then I have no idea what is wrong. 99% of the + time it's some kind of user error. 1% of the time it's some problem + in dlib. But again, without more information it's impossible to know. + So please don't post questions like this. + + <p> + If you think you found some kind of bug or problem in dlib then feel + free to submit a dlib issue on <a href="https://github.com/davisking/dlib/issues">github</a>. + But include the version of dlib you are using, what you + are trying, what happened, what you expected to have happened instead, etc. + </p> + + <p> + On the other hand, if you haven't found a bug or problem in dlib, but + instead are looking for machine learning/computer vision/programming + help then post your question to <a href="http://stackoverflow.com/questions/tagged/dlib">stack overflow with the dlib tag</a>. + </p> + </question> + + <question text="How can I use dlib in Visual Studio?"> + <p> + First, note that you need a version of Visual Studio with decent + C++11 support. This means you need Visual Studio 2015 or newer. + </p> + There are instructions on the <a href="compile.html">How to Compile</a> page. + If you do not understand the instructions in the "<b>Compiling on Windows Using Visual Studio</b>" section + or are getting errors then follow the instructions in the "<b>Compiling on Any Operating System Using CMake</b>" + section. In particular, <a href="http://www.cmake.org/download/">install CMake</a> and then type + these exact commands from within the root of the dlib distribution: +<code_box> +cd examples +mkdir build +cd build +del /F /S /Q * +cmake .. +cmake --build . --config Release +</code_box> + That should compile the dlib examples in visual studio. The output executables will appear in the Release folder. + The <tt>del /F /S /Q *</tt> command is to make sure you clear out any extraneous files you might have placed in + the build folder and is not necessary if build begins empty. + </question> + + <!-- ****************************************** --> + + <question text="Why is dlib slow?"> + Dlib isn't slow. I get this question many times a week and 95% of the time it's from someone + using Visual Studio who has compiled their program in Debug mode rather than the optimized + Release mode. So if you are using Visual Studio then realize that Visual Studio has these two modes. + The default is Debug. The mode is selectable via a drop down: + <p><img src="vs_mode_1.png"/></p> + Debug mode disables compiler optimizations. So the program will be very slow if you run it in Debug mode. + So click the drop down, + <p><img src="vs_mode_2.png"/></p> + and select Release. + <p><img src="vs_mode_3.png"/></p> + Then when you compile the program it will appear in a folder named Release rather than in a folder named Debug. + + <br/> + <br/> + Finally, you can enable either SSE4 or AVX instruction use. These will make certain operations much faster (e.g. face detection). + You do this using <a href="http://www.cmake.org/download/">CMake</a>'s cmake-gui tool. For example, if you execute + these commands you will get the cmake-gui screen: +<code_box> +cd examples +mkdir build +cd build +cmake .. +cmake-gui . +</code_box> + Which looks like this: + <p><img src="vs-cmake-gui.png"/></p> + Where you can select SSE4 or AVX instruction use. Then you click configure and then generate. After that + when you build your visual studio project some things will be faster. + + Finally, note that AVX is a little bit faster than SSE4 but if your computer is fairly old it might + not support it. In that case, either buy a new computer or use SSE4 + instructions. + </question> + + <!-- ****************************************** --> + + + + <question text="How can I cite dlib?"> + If you use dlib in your research then please use the following citation: + <br/> + <br/> +Davis E. King. <a href="http://jmlr.csail.mit.edu/papers/volume10/king09a/king09a.pdf">Dlib-ml: A Machine Learning Toolkit</a>. + <i>Journal of Machine Learning Research</i> 10, pp. 1755-1758, 2009 + <br/> + <pre> + +@Article{dlib09, + author = {Davis E. King}, + title = {Dlib-ml: A Machine Learning Toolkit}, + journal = {Journal of Machine Learning Research}, + year = {2009}, + volume = {10}, + pages = {1755-1758}, +} + </pre> + </question> + + <!-- ****************************************** --> + + + + <question text="Why isn't serialization working?"> + Here are the possibilities: + <ul> + <li>You are using a file stream and forgot to put it into binary mode. + You need to do something like this: +<code_box> +std::ifstream fin("myfile", std::ios::binary); +</code_box> +or +<code_box> +std::ofstream fout("myfile", std::ios::binary); +</code_box> + +If you don't give <tt>std::ios::binary</tt> then the iostream will mess with the binary data and cause serialization +to not work right. + </li> + + <br/> + <li>The iostream is in a bad state. You can check the state by calling <tt>mystream.good()</tt>. + If it returns false then the stream is in an error state such as end-of-file or maybe it failed + to do the I/O. Also note that if you close a file stream and reopen it you might have to call + <tt>mystream.clear()</tt> to clear out the error flags. + </li> + </ul> + + </question> + <!-- ****************************************** --> + + <question text="How do I set the size of a matrix at runtime?"> + Long answer, read the <a href="matrix_ex.cpp.html">matrix example program</a>. + <br/><br/> + Short answer, here are some examples: +<code_box> +matrix<double> mat; +mat.set_size(4,5); + +matrix<double,0,1> column_vect; +column_vect.set_size(6); + +matrix<double,0,1> column_vect2(6); // give size to constructor + +matrix<double,1> row_vect; +row_vect.set_size(5); +</code_box> + + </question> + <!-- ****************************************** --> + + <question text="Where is the documentation for <object/function>?"> + If you can't find something then check the <a href="term_index.html">index</a>. + <br/><br/> + Also, the bulk of the documentation can be found by following the + <more_details/> links. + </question> + + + <!-- ****************************************** --> + + <question text="How does dlib interface with other libraries/tools?"> + There should never be anything in dlib that prevents you from using or + interacting with other libraries. Moreover, there are some additional tools + in dlib to make some interactions easier: + + <ul> + <li><b>BLAS and LAPACK libraries</b> are used by the <a href="linear_algebra.html#matrix">matrix</a> + automatically if you <tt>#define</tt> DLIB_USE_BLAS and/or DLIB_USE_LAPACK and link against + the appropriate library files. Note that the CMakeLists.txt file that comes with dlib will + do this for you automatically in many instances.</li><br/> + + <li><b>Armadillo and Eigen libraries</b> have matrix objects which can be converted into + dlib matrix objects by calling dlib::mat() on them.</li><br/> + + <li><b>OpenCV</b> image objects can be converted into a form usable by dlib routines + by using <a href="imaging.html#cv_image">cv_image</a>. You can also convert from a + dlib matrix or image to an OpenCV Mat using dlib::<a href="imaging.html#toMat">toMat</a>().</li><br/> + + <li><b>Google Protocol Buffers</b> can be serialized by the dlib + <a href="other.html#serialize">serialization</a> routines. + This means that, for example, you can pass protocol buffer objects through a + <a href="network.html#bridge">bridge</a>. + </li><br/> + + <li><b>libpng and libjpeg</b> are used by <a + href="imaging.html#load_image">load_image</a> whenever + DLIB_PNG_SUPPORT and DLIB_JPEG_SUPPORT are defined respectively. + You must also tell your compiler to link against these libraries to + use them. However, CMake will try to link against them + automatically if they are installed.</li><br/> + + <!--<li><b>FFTW</b> is used by the fft() and ifft() routines if you #define DLIB_USE_FFTW and + link to fftw3. Otherwise dlib uses its own slower default implementation. </li><br/> --> + + <li><b>SQLite</b> is used by the <a href="other.html#database">database</a> object. In + fact, it is just a wrapper around SQLite's C interface which simplifies its use (e.g. + makes resource management use RAII).</li> + + </ul> + </question> + + </questions> + + + + + <!-- ************************************************************************* --> + + <questions group="Machine Learning"> + + <question text="Why is RVM training is really slow?"> + The optimization algorithm is somewhat unpredictable. Sometimes it is fast and + sometimes it is slow. What usually makes it really slow is if you use a radial basis + kernel and you set the gamma parameter to something too large. This causes the + algorithm to start using a whole lot of relevance vectors (i.e. basis vectors) which + then makes it slow. The algorithm is only fast as long as the number of relevance vectors + remains small but it is hard to know beforehand if that will be the case. + <p> + You should try <a href="ml.html#krr_trainer">kernel ridge regression</a> instead since it + also doesn't take any parameters but is always very fast. + </p> + + </question> + + <!-- ****************************************** --> + + <question text="Why is cross_validate_trainer_threaded() crashing?"> + This function makes a copy of your training data for each thread. So you are probably running out + of memory. To avoid this, use the <a href="algorithms.html#randomly_subsample">randomly_subsample</a> function + to reduce the amount of data you are using or use fewer threads. + <p> + For example, you could reduce the amount of data by saying this: +<code_box> +// reduce to only 1000 samples +cross_validate_trainer_threaded(trainer, + randomly_subsample(samples, 1000), + randomly_subsample(labels, 1000), + 4, // num folds + 4); // num threads +</code_box> + </p> + </question> + + <!-- ****************************************** --> + + <question text="How can I define a custom kernel?"> + See the <a href="using_custom_kernels_ex.cpp.html">Using Custom Kernels</a> example program. + </question> + + <!-- ****************************************** --> + + <question text="Can you give advice on feature generation/kernel selection?"> + <p> + Picking the right kernel all comes down to understanding your data, and obviously this is + highly dependent on your problem. + </p> + + <p> + One thing that's sometimes useful is to plot each feature against the target value. You can get an idea of + what your overall feature space looks like and maybe tell if a linear kernel is the right solution. But + this still hides important information from you. For example, imagine you have two diagonal lines which + are very close together and are both the same length. Suppose one line is of the +1 class and the other is the -1 + class. Each feature (the x or y coordinate values) by itself tells you almost nothing about which class + a point belongs to but together they tell you everything you need to know. + </p> + + <p> + On the other hand, if you know something about the data you are working with then you can also try and + generate your own features. So for example, if your data is a bunch of images and you know that one + of your classes contains a lot of lines then you can make a feature that attempts to measure the number + of lines in an image using a hough transform or sobel edge filter or whatever. Generally, try and + think up features which should be highly correlated with your target value. A good way to do this is + to try and actually hand code N solutions to the problem using whatever you know about your data or + domain. If you do a good job then you will have N really great features and a linear or rbf kernel + will probably do very well when using them. + </p> + + <p> + Or you can just try a whole bunch of kernels, kernel parameters, and training algorithm options while + using cross validation. I.e. when in doubt, use brute force :) There is an example of that kind of + thing in the <a href="model_selection_ex.cpp.html">model selection</a> example program. + </p> + </question> + + <!-- ****************************************** --> + + <question text="Why does my decision_function always give the same output?"> + This happens when you use the radial_basis_kernel and you set the gamma value to + something highly inappropriate. To understand what's happening lets imagine your + data has just one feature and its value ranges from 0 to 7. Then what you want is a + gamma value that gives nice Gaussian bumps like the one in this graph: <br/> + + <center><image src="rbf_normal.gif"/></center> + + <br/> + However, if you make gamma really huge you will get this (it's zero everywhere except for one place): + <br/> + <center><image src="rbf_big_gamma.gif"/></center> + + <br/> + Or if you make gamma really small then it will be 1.0 everywhere: + <br/> + <center><image src="rbf_small_gamma.gif"/></center> + + <p> + So you need to pick the gamma value so that it is scaled reasonably to your data. A <i><font color="red">good rule of + thumb (i.e. not the optimal gamma, just a heuristic guess)</font></i> is the following: + </p> + <code_box>const double gamma = 1.0/compute_mean_squared_distance(randomly_subsample(samples, 2000));</code_box> + + </question> + + <!-- ****************************************** --> + + </questions> + + <!-- ************************************************************************* --> + + + <questions group="Computer Vision"> + <question text="Why doesn't the object detector I trained work?"> + There are three general mistakes people make when trying to train an object detector with dlib. + <ul> + <li><h3>Not labeling all the objects in each image</h3> + The tools for training object detectors in dlib use the <a href="https://arxiv.org/abs/1502.00046">Max-Margin Object Detection</a> + loss. This loss optimizes the performance of the detector on the whole image, not on some subset of windows cropped from the training data. + That means it counts the number of missed detections and false alarms for each of the training images and tries to find a way + to minimize the sum of these two error metrics. For this to be possible, <b>you must label all the objects in each training image</b>. + If you leave unannotated objects in some of your training images then the loss will think any detections on these unannotated objects + are false alarms, and will therefore try to find a detector that doesn't detect them. If you have enough unannotated objects, the + most accurate detector will be the one that never detects anything. That's obviously not what you want. So make sure you annotate all the + objects in each image. + <p> + Sometimes annotating all the objects in each image is too + onerous, or there are ambiguous objects you don't care about. + In these cases you should annotate these objects you don't + care about with ignore boxes so that the MMOD loss knows to + ignore them. You can do this with dlib's imglab tool by + selecting a box and pressing i. Moreover, there are two ways + the code treats ignore boxes. When a detector generates a + detection it compares it against any ignore boxes and ignores + it if the boxes "overlap". Deciding if they overlap is based + on either their intersection over union or just basic percent + coverage of one by another. You have to think about what + mode you want when you annotate things and configure the + training code appropriately. The default behavior is to use + intersection over union to measure overlap. However, if you + wanted to simply mask out large parts of an image you + wouldn't want to use intersection over union to measure + overlap since small boxes contained entirely within the large + ignored region would have small IoU with the big ignore region and thus not "overlap" + the ignore region. In this case you should change the + settings to reflect this before training. The available configuration + options are discussed in great detail in parts of <a href="#Whereisthedocumentationforobjectfunction">dlib's documentation</a>. + </p> + </li> + + <li><h3>Using training images that don't look like the testing images</h3> + This should be obvious, but needs to be pointed out. If there + is some clear difference between your training and testing + images then you have messed up. You need to show the training + algorithm real images so it can learn what to do. If instead + you only show it images that look obviously different from your + testing images don't be surprised if, when you run the detector + on the testing images, it doesn't work. As a rule of thumb, + <b>a human should not be able to tell if an image came from the training dataset or testing dataset</b>. + + <p> + Here are some examples of bad datasets: + <ul> + <li>A training dataset where objects always appear with + some specific orientation but the testing images have a + diverse set of orientations.</li> + <li>A training dataset where objects are tightly cropped, but testing images that are uncropped.</li> + <li>A training dataset where objects appear only on a perfectly white background with nothing else present, but testing images where objects appear in a normal environment like living rooms or in natural scenes.</li> + </ul> + </p> + + <p> + Another way you can mess this up is when using the <a + href="imaging.html#random_cropper">random_cropper</a> to jitter your training data, which is + common when training a CNN or other deep model. In general, the random_cropper finds images + that are more or less centered on your objects of interest and it also scales the images so + the object has some user specified minimum size. That's all fine. But what can happen is + you train a model that gets 0 training error but when you go and use it it doesn't detect + any objects. Why is that? It's probably because all the objects in your normal images, the + ones you give to the random_cropper, are really small. Smaller than the min size you told + the cropper to make them. So now your testing images are really different from your training + images. Moreover, in general object detectors have some minimum size they scan and if + objects are smaller than that they will never be found. Another related issue is all your + uncropped images might show objects at the very border of the image. But the random_cropper + will center the objects in the crops, by padding with zeros if necessary. Again, <b>make your + testing images look like the training images</b>. Pad the edges of your images with zeros if + needed. + </p> + </li> + + <li><h3>Using a HOG based detector but not understanding the limits of HOG templates</h3> + The <a href="fhog_object_detector_ex.cpp.html">HOG detector</a> is very fast and generally easy to train. However, you + have to be aware that HOG detectors are essentially rigid templates that are scanned over an image. So a single HOG detector + isn't going to be able to detect objects that appear in a wide range of orientations or undergo complex deformations or have complex + articulation. + <p> + For example, a HOG detector isn't going to be able to learn to detect human faces that are upright as well as faces rotated 90 degrees. + If you wanted to deal with that you would be best off training 2 detectors. One for upright faces and another for 90 degree rotated faces. + You can efficiently run multiple HOG detectors at once using the <a href="imaging.html#evaluate_detectors">evaluate_detectors</a> function, so it's not a huge deal to do this. Dlib's imglab tool also has a --cluster option that will help you split a training dataset into clusters that can + be detected by a single HOG detector. You will still need to manually review and clean the dataset after applying --cluster, but it makes + the process of splitting a dataset into coherent poses, from the point of view of HOG, a lot easier. + </p> + <p> + A related issue arises because HOG is a rigid template, which is that the boxes in your training data need to all have essentially the same + aspect ratio. For instance, a single HOG filter can't possibly detect objects that are both 100x50 pixels and 50x100 pixels. To do this you + would need to split your dataset into two parts, objects with a 2:1 aspect ratio and objects with a 1:2 aspect ratio and then train two separate + HOG detectors, one for each aspect ratio. + </p> + <p> + However, it should be emphasized that even using multiple HOG detectors will only get you so far. So at some point you should consider + using a <a href="ml.html#loss_mmod_">CNN based detection method</a> since CNNs can generally deal with arbitrary + rotations, poses, and deformations with one unified + detector. + </p> + </li> + </ul> + </question> + </questions> + + <!-- ************************************************************************* --> + + <questions group="Deep Learning"> + <question text="Why can't I use the DNN module with Visual Studio?"> + You can, but you need to use Visual Studio 2015 Update 3 or newer since prior versions + had bad C++11 support. To make this as confusing as possible, + Microsoft has released multiple different versions of "Visual Studio + 2015 Update 3". As of October 2016, the version available from the + Microsoft web page has good enough C++11 support to compile the DNN + tools in dlib. So make sure you have a version no older than October + 2016. + <p> + To make this even more complicated, Visual Studio 2017 had + regressions in its C++11 support. So all versions of Visual Studio + 2017 prior to December 2017 would just hang if you tried to compile + the DNN examples. Happily, the newest versions of Visual Studio + 2017 appear to have good C++11 support and will compile the DNN + codes without any issue. So make sure your Visual Studio is + fully updated. + </p> + <p> + Finally, it should be noted that you should give the <tt>-T host=x64</tt> + cmake option when generating a Visual Studio project. If you don't + do this then you will get the default Visual Studio toolchain, + <b>which runs the compiler in 32bit mode, restricting it to 2GB of + RAM, leading to compiler crashes due to it running out of RAM in some + cases</b>. This isn't the 1990s anymore, so you should probably + run your compiler in 64bit mode so it can use your computer's RAM. + Giving <tt>-T host=x64</tt> will let Visual Studio use as much RAM + as it needs. + </p> + </question> + + <question text="Why can't I change the network architecture at runtime?"> + A major design goal of this API is to let users create new loss + layers, computational layers, and solvers without needing to + understand or even look at the dlib internals. A lot of the API + decisions are based on what makes the interface a user needs to + implement to create new layers as simple as possible. In particular, + designing the API in this compile-time static way makes it simple for + these use cases. + <p> + Here is an example of one problem it addresses. Since dlib + exposes the entire network architecture to the C++ type system we + can get automatic serialization of networks. Without this, we + would have to resort to the kind of hacky global layer registry + used in other tools that compose networks entirely at runtime. + </p> + <p> + Another nice feature is that we get to use C++11 alias template + statements to create network sub-blocks, which we can then use to easily + define very large networks. There are examples of this in <a + href="dnn_introduction2_ex.cpp.html">this example program</a>. It + should also be pointed out that it takes days or even weeks to + train one network. So it isn't as if you will be writing a + program that loops over large numbers of networks and trains them + all. This makes the time needed to recompile a program to change + the network irrelevant compared to the entire training time. + Moreover, there are plenty of compile time constructs in C++ you + can use to enumerate network architectures (e.g. loop + over filter widths) if you really wanted to do so. + </p> + <p> + All that said, if you think you found a compelling use case that isn't supported + by the current API feel free to post a <a href="https://github.com/davisking/dlib/issues">github</a> issue. + </p> + </question> + </questions> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/find_max_global_example.mp4 b/ml/dlib/docs/docs/find_max_global_example.mp4 Binary files differnew file mode 100644 index 00000000..2514abe1 --- /dev/null +++ b/ml/dlib/docs/docs/find_max_global_example.mp4 diff --git a/ml/dlib/docs/docs/find_max_global_example.png b/ml/dlib/docs/docs/find_max_global_example.png Binary files differnew file mode 100644 index 00000000..42b2eb2b --- /dev/null +++ b/ml/dlib/docs/docs/find_max_global_example.png diff --git a/ml/dlib/docs/docs/find_max_global_example.webm b/ml/dlib/docs/docs/find_max_global_example.webm Binary files differnew file mode 100644 index 00000000..64556b34 --- /dev/null +++ b/ml/dlib/docs/docs/find_max_global_example.webm diff --git a/ml/dlib/docs/docs/find_max_global_results_table.svg b/ml/dlib/docs/docs/find_max_global_results_table.svg new file mode 100644 index 00000000..8bdc4653 --- /dev/null +++ b/ml/dlib/docs/docs/find_max_global_results_table.svg @@ -0,0 +1,3398 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + xml:space="preserve" + width="845.85858" + height="545.04041" + viewBox="0 0 845.85858 545.04041" + sodipodi:docname="results_table.svg"><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1469" + inkscape:window-height="1140" + id="namedview4" + showgrid="false" + inkscape:zoom="0.95353535" + inkscape:cx="453.22943" + inkscape:cy="151.05687" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="0" + inkscape:current-layer="g12" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /><metadata + id="metadata8"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs6" /><g + transform="matrix(1.25,0,0,-1.25,-0.77257931,833.50285)" + inkscape:label="results_table" + inkscape:groupmode="layer" + id="g10"><g + transform="matrix(1.9419924,0,0,1.9419924,-3.3308524,439.18276)" + id="g12"><path + inkscape:connector-curvature="0" + id="path18" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 2.5594895,116.43073 347.9237405,0 0,0.77855 -347.9237405,0 0,-0.77855 z" /><text + id="text22" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872783" + y="-108.88178"><tspan + id="tspan24" + sodipodi:role="line" + y="-108.88178" + x="1.7872783 6.8871465 9.9678965 13.702539 17.851864 19.926525 23.353788 60.656673 66.490593 70.225235 72.299896 76.449226 79.87648 82.957237 87.52755 91.158051 95.307365 97.382034 110.40942 115.80341 119.53806 125.76204 129.91136 131.98602 135.41328 139.35559 145.18951 148.92416 150.99881 155.14815 158.57539 177.48595 183.08255 186.81717 189.76286 193.19011 197.13116 201.28047 204.36125 208.30415 211.41522 244.4987 248.64804 252.79736 256.94669 260.37396 263.45468 301.24295 306.96515 310.39243 317.02856 322.86249 324.93713">ProblemHolderTableComplexHolderRosenbrockSphereDebN.1</tspan></text> +<path + d="m 2.5594895,105.05311 347.9237405,0" + style="fill:none;stroke:#000000;stroke-width:0.38364187;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + id="path28" + inkscape:connector-curvature="0" /><text + id="text30" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872783" + y="-97.311989"><tspan + id="tspan32" + sodipodi:role="line" + y="-97.311989" + x="1.7872783 8.8665009 12.497002 16.439301 20.925669 23.74259 28.842459 34.452942 40.261616 45.456791" + style="fill:#000000;fill-opacity:1">MaxLIPO+TR</tspan><tspan + id="tspan34" + sodipodi:role="line" + y="-97.311989" + x="68.707268 72.44191">50</tspan></text> +<text + id="text36" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="76.177193" + y="-97.311989"><tspan + id="tspan38" + y="-97.311989" + x="76.177193">(</tspan></text> +<text + id="text40" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.700081" + y="-97.311989"><tspan + id="tspan42" + y="-97.311989" + x="78.700081">±</tspan></text> +<text + id="text44" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.745148" + y="-97.311989"><tspan + id="tspan46" + sodipodi:role="line" + y="-97.311989" + x="83.745148 86.988739 90.23233">28)</tspan></text> +<text + id="text48" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="122.14241" + y="-97.311989"><tspan + id="tspan50" + sodipodi:role="line" + y="-97.311989" + x="122.14241 125.87705 129.61169">148</tspan></text> +<text + id="text52" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.34616" + y="-97.311989"><tspan + id="tspan54" + y="-97.311989" + x="133.34616">(</tspan></text> +<text + id="text56" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="135.86835" + y="-97.311989"><tspan + id="tspan58" + y="-97.311989" + x="135.86835">±</tspan></text> +<text + id="text60" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="140.91412" + y="-97.311989"><tspan + id="tspan62" + sodipodi:role="line" + y="-97.311989" + x="140.91412 144.15771 147.40131 184.8847 188.1283 191.37189">90)23(</tspan></text> +<text + id="text64" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="-97.311989"><tspan + id="tspan66" + y="-97.311989" + x="193.8961">±</tspan></text> +<text + id="text68" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="-97.311989"><tspan + id="tspan70" + sodipodi:role="line" + y="-97.311989" + x="198.94188 202.18547 205.42906 245.77798 249.02158 252.26517">10)39(</tspan></text> +<text + id="text72" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="254.78746" + y="-97.311989"><tspan + id="tspan74" + y="-97.311989" + x="254.78746">±</tspan></text> +<text + id="text76" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="259.83252" + y="-97.311989"><tspan + id="tspan78" + sodipodi:role="line" + y="-97.311989" + x="259.83252 263.07611 300.18082 303.42441 306.668 309.91159">8)169(</tspan></text> +<text + id="text80" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="-97.311989"><tspan + id="tspan82" + y="-97.311989" + x="312.43439">±</tspan></text> +<text + id="text84" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-97.311989"><tspan + id="tspan86" + sodipodi:role="line" + y="-97.311989" + x="317.48016 320.72375 323.96735 327.21094">161)</tspan></text> +<text + id="text88" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872783" + y="-89.597618"><tspan + id="tspan90" + sodipodi:role="line" + y="-89.597618" + x="1.7872783 6.8871465 12.483747 16.63307 22.441744 27.636917">PRS+TR</tspan></text> +<text + id="text92" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="-89.597618"><tspan + id="tspan94" + sodipodi:role="line" + y="-89.597618" + x="69.199135 72.442726 75.686317">91(</tspan></text> +<text + id="text96" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-89.597618"><tspan + id="tspan98" + y="-89.597618" + x="78.208733">±</tspan></text> +<text + id="text100" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254501" + y="-89.597618"><tspan + id="tspan102" + sodipodi:role="line" + y="-89.597618" + x="83.254501 86.4981 89.741692 118.01629 121.25988 124.50348 127.74707 130.99066">96)1589(</tspan></text> +<text + id="text104" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-89.597618"><tspan + id="tspan106" + y="-89.597618" + x="133.51018">±</tspan></text> +<text + id="text108" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-89.597618"><tspan + id="tspan110" + sodipodi:role="line" + y="-89.597618" + x="138.55595 141.79955 145.04314 148.28673 151.53032">2941)</tspan></text> +<text + id="text112" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="186.01773" + y="-89.597618"><tspan + id="tspan114" + sodipodi:role="line" + y="-89.597618" + x="186.01773 189.75238">19</tspan></text> +<text + id="text116" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.48642" + y="-89.597618"><tspan + id="tspan118" + y="-89.597618" + x="193.48642">(</tspan></text> +<text + id="text120" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="196.00931" + y="-89.597618"><tspan + id="tspan122" + y="-89.597618" + x="196.00931">±</tspan></text> +<text + id="text124" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="201.05437" + y="-89.597618"><tspan + id="tspan126" + sodipodi:role="line" + y="-89.597618" + x="201.05437 204.29796 245.77669 249.02028 252.26387">9)44(</tspan></text> +<text + id="text128" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="254.78746" + y="-89.597618"><tspan + id="tspan130" + y="-89.597618" + x="254.78746">±</tspan></text> +<text + id="text132" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="259.83252" + y="-89.597618"><tspan + id="tspan134" + sodipodi:role="line" + y="-89.597618" + x="259.83252 263.07611 300.18082 303.42441 306.668 309.91159">9)168(</tspan></text> +<text + id="text136" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="-89.597618"><tspan + id="tspan138" + y="-89.597618" + x="312.43439">±</tspan></text> +<text + id="text140" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-89.597618"><tspan + id="tspan142" + sodipodi:role="line" + y="-89.597618" + x="317.48016 320.72375 323.96735 327.21094">150)</tspan></text> +<text + id="text144" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872783" + y="-81.883247"><tspan + id="tspan146" + sodipodi:role="line" + y="-81.883247" + x="1.7872783 6.2736473 9.0905666 14.190435 19.80092 25.609596 30.80477">LIPO+TR</tspan></text> +<text + id="text148" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="-81.883247"><tspan + id="tspan150" + sodipodi:role="line" + y="-81.883247" + x="69.199135 72.442726 75.686317">56(</tspan></text> +<text + id="text152" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-81.883247"><tspan + id="tspan154" + y="-81.883247" + x="78.208733">±</tspan></text> +<text + id="text156" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254501" + y="-81.883247"><tspan + id="tspan158" + sodipodi:role="line" + y="-81.883247" + x="83.254501 86.4981 89.741692 121.2542 124.4978 127.74139 130.98499">41)213(</tspan></text> +<text + id="text160" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-81.883247"><tspan + id="tspan162" + y="-81.883247" + x="133.51018">±</tspan></text> +<text + id="text164" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-81.883247"><tspan + id="tspan166" + sodipodi:role="line" + y="-81.883247" + x="138.55595 141.79955 145.04314 148.28673">130)</tspan></text> +<text + id="text168" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="186.01773" + y="-81.883247"><tspan + id="tspan170" + sodipodi:role="line" + y="-81.883247" + x="186.01773 189.75238">19</tspan></text> +<text + id="text172" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.48642" + y="-81.883247"><tspan + id="tspan174" + y="-81.883247" + x="193.48642">(</tspan></text> +<text + id="text176" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="196.00931" + y="-81.883247"><tspan + id="tspan178" + y="-81.883247" + x="196.00931">±</tspan></text> +<text + id="text180" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="201.05437" + y="-81.883247"><tspan + id="tspan182" + sodipodi:role="line" + y="-81.883247" + x="201.05437 204.29796">9)</tspan></text> +<text + id="text184" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="245.28651" + y="-81.883247"><tspan + id="tspan186" + sodipodi:role="line" + y="-81.883247" + x="245.28651 249.02116">35</tspan></text> +<text + id="text188" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="252.75592" + y="-81.883247"><tspan + id="tspan190" + y="-81.883247" + x="252.75592">(</tspan></text> +<text + id="text192" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="255.27811" + y="-81.883247"><tspan + id="tspan194" + y="-81.883247" + x="255.27811">±</tspan></text> +<text + id="text196" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="260.32388" + y="-81.883247"><tspan + id="tspan198" + sodipodi:role="line" + y="-81.883247" + x="260.32388 263.56747">7)</tspan></text> +<text + id="text200" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="299.4455" + y="-81.883247"><tspan + id="tspan202" + sodipodi:role="line" + y="-81.883247" + x="299.4455 303.18015 306.91476">166</tspan></text> +<text + id="text204" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="310.64853" + y="-81.883247"><tspan + id="tspan206" + y="-81.883247" + x="310.64853">(</tspan></text> +<text + id="text208" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="313.17142" + y="-81.883247"><tspan + id="tspan210" + y="-81.883247" + x="313.17142">±</tspan></text> +<text + id="text212" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="318.21649" + y="-81.883247"><tspan + id="tspan214" + sodipodi:role="line" + y="-81.883247" + x="318.21649 321.46008 324.70367 327.94727">126)</tspan></text> +<text + id="text216" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872783" + y="-74.168884"><tspan + id="tspan218" + sodipodi:role="line" + y="-74.168884" + x="1.7872783 6.2736473 9.0905666 14.190435">LIPO</tspan></text> +<text + id="text220" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="67.577278" + y="-74.168884"><tspan + id="tspan222" + sodipodi:role="line" + y="-74.168884" + x="67.577278 70.820869 74.064461 77.308052">140(</tspan></text> +<text + id="text224" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.830589" + y="-74.168884"><tspan + id="tspan226" + y="-74.168884" + x="79.830589">±</tspan></text> +<text + id="text228" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="84.876358" + y="-74.168884"><tspan + id="tspan230" + sodipodi:role="line" + y="-74.168884" + x="84.876358 88.119949 91.363541 121.26026 124.50385 127.74744 130.99104">71)245(</tspan></text> +<text + id="text232" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-74.168884"><tspan + id="tspan234" + y="-74.168884" + x="133.51018">±</tspan></text> +<text + id="text236" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-74.168884"><tspan + id="tspan238" + sodipodi:role="line" + y="-74.168884" + x="138.55595 141.79955 145.04314 148.28673 184.88649 188.13008 191.37367">116)61(</tspan></text> +<text + id="text240" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="-74.168884"><tspan + id="tspan242" + y="-74.168884" + x="193.8961">±</tspan></text> +<text + id="text244" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="-74.168884"><tspan + id="tspan246" + sodipodi:role="line" + y="-74.168884" + x="198.94188 202.18547 205.42906 244.15587 247.39946 250.64305">55)53(</tspan></text> +<text + id="text248" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="-74.168884"><tspan + id="tspan250" + y="-74.168884" + x="253.1656">±</tspan></text> +<text + id="text252" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="-74.168884"><tspan + id="tspan254" + sodipodi:role="line" + y="-74.168884" + x="258.21069 261.45428 264.69788 313.87686">16)-</tspan></text> +<text + id="text256" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872783" + y="-66.454514"><tspan + id="tspan258" + sodipodi:role="line" + y="-66.454514" + x="1.7872783 6.8871465 12.483747">PRS</tspan></text> +<text + id="text260" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="62.712421" + y="-66.454514"><tspan + id="tspan262" + sodipodi:role="line" + y="-66.454514" + x="62.712421 65.956009 69.1996 72.443199 75.68679">1842(</tspan></text> +<text + id="text264" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-66.454514"><tspan + id="tspan266" + y="-66.454514" + x="78.208733">±</tspan></text> +<text + id="text268" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254501" + y="-66.454514"><tspan + id="tspan270" + sodipodi:role="line" + y="-66.454514" + x="83.254501 86.4981 89.741692 92.985283 96.228874 114.77081 118.0144 121.25799 124.50158 127.74518 130.98877">1751)36421(</tspan></text> +<text + id="text272" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-66.454514"><tspan + id="tspan274" + y="-66.454514" + x="133.51018">±</tspan></text> +<text + id="text276" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-66.454514"><tspan + id="tspan278" + sodipodi:role="line" + y="-66.454514" + x="138.55595 141.79955 145.04314 148.28673 151.53032 154.77391 181.64101 184.88458 188.12819 191.37178">37249)118(</tspan></text> +<text + id="text280" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="-66.454514"><tspan + id="tspan282" + y="-66.454514" + x="193.8961">±</tspan></text> +<text + id="text284" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="-66.454514"><tspan + id="tspan286" + sodipodi:role="line" + y="-66.454514" + x="198.94188 202.18547 205.42906 208.67265 231.18466 234.42825 237.67184 240.91544 244.15903 247.40262 250.63989">114)198274(</tspan></text> +<text + id="text288" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="-66.454514"><tspan + id="tspan290" + y="-66.454514" + x="253.1656">±</tspan></text> +<text + id="text292" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="-66.454514"><tspan + id="tspan294" + sodipodi:role="line" + y="-66.454514" + x="258.21069 261.45428 264.69788 267.94147 271.18506 274.42865 277.67224 290.45157 293.69516 296.93875 300.18234 303.42593 306.66953 309.91312">199449)529251(</tspan></text> +<text + id="text296" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43512" + y="-66.454514"><tspan + id="tspan298" + y="-66.454514" + x="312.43512">±</tspan></text> +<text + id="text300" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-66.454514"><tspan + id="tspan302" + sodipodi:role="line" + y="-66.454514" + x="317.48016 320.72375 323.96735 327.21094 330.45453 333.69812 336.94171">538740)</tspan></text> +<text + id="text308" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-100.84783" + y="-344.67651"><tspan + id="tspan310" + sodipodi:role="line" + y="-344.67651" + x="-100.84783 -98.325035 -95.081444 -92.544136 -89.300545 -86.414825 -81.727112 -78.48983 -75.246239">target99%</tspan></text> +<path + inkscape:connector-curvature="0" + id="path316" + style="fill:none;stroke:#000000;stroke-width:0.38364187;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 2.5594907,62.695526 347.9237393,0" /><text + id="text320" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-54.954407"><tspan + id="tspan322" + sodipodi:role="line" + y="-54.954407" + x="1.7872792 8.8665018 12.497003 16.439302 20.925671 23.74259 28.842459 34.452942 40.261616 45.456795" + style="fill:#000000;fill-opacity:1">MaxLIPO+TR</tspan><tspan + id="tspan324" + sodipodi:role="line" + y="-54.954407" + x="68.707268 72.44191">51</tspan></text> +<text + id="text326" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="76.177193" + y="-54.954407"><tspan + id="tspan328" + y="-54.954407" + x="76.177193">(</tspan></text> +<text + id="text330" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.700081" + y="-54.954407"><tspan + id="tspan332" + y="-54.954407" + x="78.700081">±</tspan></text> +<text + id="text334" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.745148" + y="-54.954407"><tspan + id="tspan336" + sodipodi:role="line" + y="-54.954407" + x="83.745148 86.988739 90.23233">27)</tspan></text> +<text + id="text338" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="122.14241" + y="-54.954407"><tspan + id="tspan340" + sodipodi:role="line" + y="-54.954407" + x="122.14241 125.87705 129.61169">150</tspan></text> +<text + id="text342" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.34616" + y="-54.954407"><tspan + id="tspan344" + y="-54.954407" + x="133.34616">(</tspan></text> +<text + id="text346" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="135.86835" + y="-54.954407"><tspan + id="tspan348" + y="-54.954407" + x="135.86835">±</tspan></text> +<text + id="text350" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="140.91412" + y="-54.954407"><tspan + id="tspan352" + sodipodi:role="line" + y="-54.954407" + x="140.91412 144.15771 147.40131">89)</tspan></text> +<text + id="text354" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="182.52835" + y="-54.954407"><tspan + id="tspan356" + sodipodi:role="line" + y="-54.954407" + x="182.52835 186.263 189.99763">149</tspan></text> +<text + id="text358" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.7321" + y="-54.954407"><tspan + id="tspan360" + y="-54.954407" + x="193.7321">(</tspan></text> +<text + id="text362" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="196.25427" + y="-54.954407"><tspan + id="tspan364" + y="-54.954407" + x="196.25427">±</tspan></text> +<text + id="text366" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="201.30005" + y="-54.954407"><tspan + id="tspan368" + sodipodi:role="line" + y="-54.954407" + x="201.30005 204.54364 207.78723">84)</tspan></text> +<text + id="text370" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="245.28651" + y="-54.954407"><tspan + id="tspan372" + sodipodi:role="line" + y="-54.954407" + x="245.28651 249.02116">23</tspan></text> +<text + id="text374" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="252.75592" + y="-54.954407"><tspan + id="tspan376" + y="-54.954407" + x="252.75592">(</tspan></text> +<text + id="text378" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="255.27811" + y="-54.954407"><tspan + id="tspan380" + y="-54.954407" + x="255.27811">±</tspan></text> +<text + id="text382" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="260.32388" + y="-54.954407"><tspan + id="tspan384" + sodipodi:role="line" + y="-54.954407" + x="260.32388 263.56747 300.17984 303.42343 306.66702 309.91061">5)138(</tspan></text> +<text + id="text386" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="-54.954407"><tspan + id="tspan388" + y="-54.954407" + x="312.43439">±</tspan></text> +<text + id="text390" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-54.954407"><tspan + id="tspan392" + sodipodi:role="line" + y="-54.954407" + x="317.48016 320.72375 323.96735 327.21094">160)</tspan></text> +<text + id="text394" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-47.24004"><tspan + id="tspan396" + sodipodi:role="line" + y="-47.24004" + x="1.7872792 6.8871474 12.483747 16.63307 22.441746 27.636919">PRS+TR</tspan></text> +<text + id="text398" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="-47.24004"><tspan + id="tspan400" + sodipodi:role="line" + y="-47.24004" + x="69.199135 72.442726 75.686317">92(</tspan></text> +<text + id="text402" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-47.24004"><tspan + id="tspan404" + y="-47.24004" + x="78.208733">±</tspan></text> +<text + id="text406" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="-47.24004"><tspan + id="tspan408" + sodipodi:role="line" + y="-47.24004" + x="83.254509 86.4981 89.741692 118.01629 121.25989 124.50348 127.74707 130.99066">96)1590(</tspan></text> +<text + id="text410" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-47.24004"><tspan + id="tspan412" + y="-47.24004" + x="133.51018">±</tspan></text> +<text + id="text414" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-47.24004"><tspan + id="tspan416" + sodipodi:role="line" + y="-47.24004" + x="138.55595 141.79955 145.04314 148.28673 151.53032 183.26375 186.50734 189.75092 192.99452">2942)172(</tspan></text> +<text + id="text418" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="195.51797" + y="-47.24004"><tspan + id="tspan420" + y="-47.24004" + x="195.51797">±</tspan></text> +<text + id="text422" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="200.56374" + y="-47.24004"><tspan + id="tspan424" + sodipodi:role="line" + y="-47.24004" + x="200.56374 203.80733 207.05092 245.77773 249.02132 252.26491">90)28(</tspan></text> +<text + id="text426" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="254.78746" + y="-47.24004"><tspan + id="tspan428" + y="-47.24004" + x="254.78746">±</tspan></text> +<text + id="text430" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="259.83252" + y="-47.24004"><tspan + id="tspan432" + sodipodi:role="line" + y="-47.24004" + x="259.83252 263.07611 300.18082 303.42441 306.668 309.91159">6)139(</tspan></text> +<text + id="text434" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="-47.24004"><tspan + id="tspan436" + y="-47.24004" + x="312.43439">±</tspan></text> +<text + id="text438" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-47.24004"><tspan + id="tspan440" + sodipodi:role="line" + y="-47.24004" + x="317.48016 320.72375 323.96735 327.21094">149)</tspan></text> +<text + id="text442" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-39.526375"><tspan + id="tspan444" + sodipodi:role="line" + y="-39.526375" + x="1.7872792 6.2736487 9.0905676 14.190436 19.800922 25.609596 30.80477">LIPO+TR</tspan></text> +<text + id="text446" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="-39.526375"><tspan + id="tspan448" + sodipodi:role="line" + y="-39.526375" + x="69.199135 72.442726 75.686317">58(</tspan></text> +<text + id="text450" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-39.526375"><tspan + id="tspan452" + y="-39.526375" + x="78.208733">±</tspan></text> +<text + id="text454" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="-39.526375"><tspan + id="tspan456" + sodipodi:role="line" + y="-39.526375" + x="83.254509 86.4981 89.741692 121.2542 124.4978 127.74139 130.98499">42)207(</tspan></text> +<text + id="text458" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-39.526375"><tspan + id="tspan460" + y="-39.526375" + x="133.51018">±</tspan></text> +<text + id="text462" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-39.526375"><tspan + id="tspan464" + sodipodi:role="line" + y="-39.526375" + x="138.55595 141.79955 145.04314 148.28673 183.26437 186.50797 189.75156 192.99515">131)163(</tspan></text> +<text + id="text466" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="195.51797" + y="-39.526375"><tspan + id="tspan468" + y="-39.526375" + x="195.51797">±</tspan></text> +<text + id="text470" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="200.56374" + y="-39.526375"><tspan + id="tspan472" + sodipodi:role="line" + y="-39.526375" + x="200.56374 203.80733 207.05092">92)</tspan></text> +<text + id="text474" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="245.28651" + y="-39.526375"><tspan + id="tspan476" + sodipodi:role="line" + y="-39.526375" + x="245.28651 249.02116">23</tspan></text> +<text + id="text478" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="252.75522" + y="-39.526375"><tspan + id="tspan480" + y="-39.526375" + x="252.75522">(</tspan></text> +<text + id="text482" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="255.27811" + y="-39.526375"><tspan + id="tspan484" + y="-39.526375" + x="255.27811">±</tspan></text> +<text + id="text486" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="260.32388" + y="-39.526375"><tspan + id="tspan488" + sodipodi:role="line" + y="-39.526375" + x="260.32388 263.56747">5)</tspan></text> +<text + id="text490" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="299.4455" + y="-39.526375"><tspan + id="tspan492" + sodipodi:role="line" + y="-39.526375" + x="299.4455 303.18015 306.91476">135</tspan></text> +<text + id="text494" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="310.64853" + y="-39.526375"><tspan + id="tspan496" + y="-39.526375" + x="310.64853">(</tspan></text> +<text + id="text498" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="313.17072" + y="-39.526375"><tspan + id="tspan500" + y="-39.526375" + x="313.17072">±</tspan></text> +<text + id="text502" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="318.21649" + y="-39.526375"><tspan + id="tspan504" + sodipodi:role="line" + y="-39.526375" + x="318.21649 321.46008 324.70367 327.94727">124)</tspan></text> +<text + id="text506" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-31.812004"><tspan + id="tspan508" + sodipodi:role="line" + y="-31.812004" + x="1.7872792 6.2736487 9.0905676 14.190436">LIPO</tspan></text> +<text + id="text510" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="67.577278" + y="-31.812004"><tspan + id="tspan512" + sodipodi:role="line" + y="-31.812004" + x="67.577278 70.820869 74.064468 77.30806">161(</tspan></text> +<text + id="text514" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.830589" + y="-31.812004"><tspan + id="tspan516" + y="-31.812004" + x="79.830589">±</tspan></text> +<text + id="text518" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="84.876358" + y="-31.812004"><tspan + id="tspan520" + sodipodi:role="line" + y="-31.812004" + x="84.876358 88.119949 91.363548 121.26026 124.50385 127.74744 130.98473">81)264(</tspan></text> +<text + id="text522" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-31.812004"><tspan + id="tspan524" + y="-31.812004" + x="133.51018">±</tspan></text> +<text + id="text526" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-31.812004"><tspan + id="tspan528" + sodipodi:role="line" + y="-31.812004" + x="138.55595 141.79955 145.04314 148.28673 195.33868 244.1573 247.40089 250.64449">119)-38(</tspan></text> +<text + id="text530" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="-31.812004"><tspan + id="tspan532" + y="-31.812004" + x="253.1656">±</tspan></text> +<text + id="text534" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="-31.812004"><tspan + id="tspan536" + sodipodi:role="line" + y="-31.812004" + x="258.21069 261.45428 264.69788 313.87686">14)-</tspan></text> +<text + id="text538" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-24.097635"><tspan + id="tspan540" + sodipodi:role="line" + y="-24.097635" + x="1.7872792 6.8871474 12.483747">PRS</tspan></text> +<text + id="text542" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="62.712421" + y="-24.097635"><tspan + id="tspan544" + sodipodi:role="line" + y="-24.097635" + x="62.712421 65.956017 69.199608 72.443199 75.68679">3043(</tspan></text> +<text + id="text546" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-24.097635"><tspan + id="tspan548" + y="-24.097635" + x="78.208733">±</tspan></text> +<text + id="text550" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="-24.097635"><tspan + id="tspan552" + sodipodi:role="line" + y="-24.097635" + x="83.254509 86.4981 89.741692 92.985283 96.228874 114.77081 118.0144 121.25799 124.50159 127.74518 130.98877">2901)75589(</tspan></text> +<text + id="text554" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-24.097635"><tspan + id="tspan556" + y="-24.097635" + x="133.51018">±</tspan></text> +<text + id="text558" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-24.097635"><tspan + id="tspan560" + sodipodi:role="line" + y="-24.097635" + x="138.55595 141.79955 145.04314 148.28673 151.53032 154.77391 171.91464 175.15823 178.40182 181.64542 184.88901 188.1326 191.37619">76490)108873(</tspan></text> +<text + id="text562" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="-24.097635"><tspan + id="tspan564" + y="-24.097635" + x="193.8961">±</tspan></text> +<text + id="text566" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="-24.097635"><tspan + id="tspan568" + sodipodi:role="line" + y="-24.097635" + x="198.94188 202.18547 205.42906 208.67265 211.91624 215.15984 218.40343 237.67122 240.91481 244.1584 247.40199 250.64558">112572)1929(</tspan></text> +<text + id="text570" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="-24.097635"><tspan + id="tspan572" + y="-24.097635" + x="253.1656">±</tspan></text> +<text + id="text574" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="-24.097635"><tspan + id="tspan576" + sodipodi:role="line" + y="-24.097635" + x="258.21069 261.45428 264.69788 267.94147 271.18506 296.94128 300.17856 303.42215 306.66574 309.90933">2034)3933(</tspan></text> +<text + id="text578" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="-24.097635"><tspan + id="tspan580" + y="-24.097635" + x="312.43439">±</tspan></text> +<text + id="text582" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-24.097635"><tspan + id="tspan584" + sodipodi:role="line" + y="-24.097635" + x="317.48016 320.72375 323.96735 327.21094 330.45453">3869)</tspan></text> +<text + id="text590" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-53.850647" + y="-343.44955"><tspan + id="tspan592" + y="-343.44955" + x="-53.850647" /></text> +<text + id="text594" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-49.420818" + y="-343.44955"><tspan + id="tspan596" + sodipodi:role="line" + y="-343.44955" + x="-49.420818 -42.57008">=0</tspan></text> +<text + id="text598" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-39.329277" + y="-343.44955"><tspan + id="tspan600" + y="-343.44955" + x="-39.329277">.</tspan></text> +<text + id="text602" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-37.52792" + y="-343.44955"><tspan + id="tspan604" + y="-343.44955" + x="-37.52792">1</tspan></text> +<path + inkscape:connector-curvature="0" + id="path610" + style="fill:none;stroke:#000000;stroke-width:0.38364187;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 2.5594907,20.33865 347.9237393,0" /><text + id="text614" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-12.597532"><tspan + id="tspan616" + sodipodi:role="line" + y="-12.597532" + x="1.7872792 8.8665018 12.497003 16.439302 20.925671 23.74259 28.842459 34.452942 40.261616 45.456795" + style="fill:#000000;fill-opacity:1">MaxLIPO+TR</tspan><tspan + id="tspan618" + sodipodi:role="line" + y="-12.597532" + x="68.707268 72.44191">54</tspan></text> +<text + id="text620" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="76.177193" + y="-12.597532"><tspan + id="tspan622" + y="-12.597532" + x="76.177193">(</tspan></text> +<text + id="text624" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.700081" + y="-12.597532"><tspan + id="tspan626" + y="-12.597532" + x="78.700081">±</tspan></text> +<text + id="text628" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.745148" + y="-12.597532"><tspan + id="tspan630" + sodipodi:role="line" + y="-12.597532" + x="83.745148 86.988739 90.23233">27)</tspan></text> +<text + id="text632" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="122.14241" + y="-12.597532"><tspan + id="tspan634" + sodipodi:role="line" + y="-12.597532" + x="122.14241 125.87705 129.61169">156</tspan></text> +<text + id="text636" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.34616" + y="-12.597532"><tspan + id="tspan638" + y="-12.597532" + x="133.34616">(</tspan></text> +<text + id="text640" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="135.86835" + y="-12.597532"><tspan + id="tspan642" + y="-12.597532" + x="135.86835">±</tspan></text> +<text + id="text644" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="140.91412" + y="-12.597532"><tspan + id="tspan646" + sodipodi:role="line" + y="-12.597532" + x="140.91412 144.15771 147.40131">89)</tspan></text> +<text + id="text648" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="182.52835" + y="-12.597532"><tspan + id="tspan650" + sodipodi:role="line" + y="-12.597532" + x="182.52835 186.263 189.99763">189</tspan></text> +<text + id="text652" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.7321" + y="-12.597532"><tspan + id="tspan654" + y="-12.597532" + x="193.7321">(</tspan></text> +<text + id="text656" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="196.25427" + y="-12.597532"><tspan + id="tspan658" + y="-12.597532" + x="196.25427">±</tspan></text> +<text + id="text660" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="201.30005" + y="-12.597532"><tspan + id="tspan662" + sodipodi:role="line" + y="-12.597532" + x="201.30005 204.54364 207.78723">88)</tspan></text> +<text + id="text664" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="245.28651" + y="-12.597532"><tspan + id="tspan666" + sodipodi:role="line" + y="-12.597532" + x="245.28651 249.02116">57</tspan></text> +<text + id="text668" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="252.75592" + y="-12.597532"><tspan + id="tspan670" + y="-12.597532" + x="252.75592">(</tspan></text> +<text + id="text672" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="255.27811" + y="-12.597532"><tspan + id="tspan674" + y="-12.597532" + x="255.27811">±</tspan></text> +<text + id="text676" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="260.32388" + y="-12.597532"><tspan + id="tspan678" + sodipodi:role="line" + y="-12.597532" + x="260.32388 263.56747 300.17984 303.42343 306.66702 309.91061">9)175(</tspan></text> +<text + id="text680" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="-12.597532"><tspan + id="tspan682" + y="-12.597532" + x="312.43439">±</tspan></text> +<text + id="text684" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="-12.597532"><tspan + id="tspan686" + sodipodi:role="line" + y="-12.597532" + x="317.48016 320.72375 323.96735 327.21094">161)</tspan></text> +<text + id="text688" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="-4.883163"><tspan + id="tspan690" + sodipodi:role="line" + y="-4.883163" + x="1.7872792 6.8871474 12.483747 16.63307 22.441746 27.636919">PRS+TR</tspan></text> +<text + id="text692" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="-4.883163"><tspan + id="tspan694" + sodipodi:role="line" + y="-4.883163" + x="69.199135 72.442726 75.686317">91(</tspan></text> +<text + id="text696" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="-4.883163"><tspan + id="tspan698" + y="-4.883163" + x="78.208733">±</tspan></text> +<text + id="text700" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="-4.883163"><tspan + id="tspan702" + sodipodi:role="line" + y="-4.883163" + x="83.254509 86.4981 89.741692 118.01629 121.25989 124.50348 127.74707 130.99066">91)1590(</tspan></text> +<text + id="text704" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="-4.883163"><tspan + id="tspan706" + y="-4.883163" + x="133.51018">±</tspan></text> +<text + id="text708" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="-4.883163"><tspan + id="tspan710" + sodipodi:role="line" + y="-4.883163" + x="138.55595 141.79955 145.04314 148.28673 151.53032 183.26375 186.50734 189.75092 192.99452">3106)221(</tspan></text> +<text + id="text712" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="195.51797" + y="-4.883163"><tspan + id="tspan714" + y="-4.883163" + x="195.51797">±</tspan></text> +<text + id="text716" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="200.56374" + y="-4.883163"><tspan + id="tspan718" + sodipodi:role="line" + y="-4.883163" + x="200.56374 203.80733 207.05092 244.15562 247.39922 250.64281">99)62(</tspan></text> +<text + id="text720" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="-4.883163"><tspan + id="tspan722" + y="-4.883163" + x="253.1656">±</tspan></text> +<text + id="text724" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="-4.883163"><tspan + id="tspan726" + sodipodi:role="line" + y="-4.883163" + x="258.21069 261.45428 264.69788">11)</tspan></text> +<text + id="text728" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="299.4455" + y="-4.883163"><tspan + id="tspan730" + sodipodi:role="line" + y="-4.883163" + x="299.4455 303.18015 306.91476">174</tspan></text> +<text + id="text732" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="310.64853" + y="-4.883163"><tspan + id="tspan734" + y="-4.883163" + x="310.64853">(</tspan></text> +<text + id="text736" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="313.17142" + y="-4.883163"><tspan + id="tspan738" + y="-4.883163" + x="313.17142">±</tspan></text> +<text + id="text740" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="318.21649" + y="-4.883163"><tspan + id="tspan742" + sodipodi:role="line" + y="-4.883163" + x="318.21649 321.46008 324.70367 327.94727">137)</tspan></text> +<text + id="text744" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="2.8312061"><tspan + id="tspan746" + sodipodi:role="line" + y="2.8312061" + x="1.7872792 6.2736487 9.0905676 14.190436 19.800922 25.609596 30.80477">LIPO+TR</tspan></text> +<text + id="text748" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="2.8312061"><tspan + id="tspan750" + sodipodi:role="line" + y="2.8312061" + x="69.199135 72.442726 75.686317">61(</tspan></text> +<text + id="text752" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="2.8312061"><tspan + id="tspan754" + y="2.8312061" + x="78.208733">±</tspan></text> +<text + id="text756" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="2.8312061"><tspan + id="tspan758" + sodipodi:role="line" + y="2.8312061" + x="83.254509 86.4981 89.741692 121.2542 124.4978 127.74139 130.98499">45)216(</tspan></text> +<text + id="text760" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="2.8312061"><tspan + id="tspan762" + y="2.8312061" + x="133.51018">±</tspan></text> +<text + id="text764" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="2.8312061"><tspan + id="tspan766" + sodipodi:role="line" + y="2.8312061" + x="138.55595 141.79955 145.04314 148.28673 183.26437 186.50797 189.75156 192.99515">129)210(</tspan></text> +<text + id="text768" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="195.51797" + y="2.8312061"><tspan + id="tspan770" + y="2.8312061" + x="195.51797">±</tspan></text> +<text + id="text772" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="200.56374" + y="2.8312061"><tspan + id="tspan774" + sodipodi:role="line" + y="2.8312061" + x="200.56374 203.80733 207.05092 244.15562 247.39922 250.64281">98)57(</tspan></text> +<text + id="text776" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="2.8312061"><tspan + id="tspan778" + y="2.8312061" + x="253.1656">±</tspan></text> +<text + id="text780" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="2.8312061"><tspan + id="tspan782" + sodipodi:role="line" + y="2.8312061" + x="258.21069 261.45428 264.69788 300.18045 303.42404 306.66763 309.91122">10)181(</tspan></text> +<text + id="text784" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="2.8312061"><tspan + id="tspan786" + y="2.8312061" + x="312.43439">±</tspan></text> +<text + id="text788" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="2.8312061"><tspan + id="tspan790" + sodipodi:role="line" + y="2.8312061" + x="317.48016 320.72375 323.96735 327.21094">166)</tspan></text> +<text + id="text792" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="10.545575"><tspan + id="tspan794" + sodipodi:role="line" + y="10.545575" + x="1.7872792 6.2736487 9.0905676 14.190436">LIPO</tspan></text> +<text + id="text796" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.650383" + y="10.545575"><tspan + id="tspan798" + sodipodi:role="line" + y="10.545575" + x="79.650383 134.95114 195.33913 254.60994 313.87445">-----</tspan></text> +<text + id="text800" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="18.259945"><tspan + id="tspan802" + sodipodi:role="line" + y="18.259945" + x="1.7872792 6.8871474 12.483747">PRS</tspan></text> +<text + id="text804" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="59.468712" + y="18.259945"><tspan + id="tspan806" + sodipodi:role="line" + y="18.259945" + x="59.468712 62.712303 65.955894 69.199486 72.443077 75.686668">31351(</tspan></text> +<text + id="text808" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="18.259945"><tspan + id="tspan810" + y="18.259945" + x="78.208733">±</tspan></text> +<text + id="text812" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="18.259945"><tspan + id="tspan814" + sodipodi:role="line" + y="18.259945" + x="83.254509 86.4981 89.741692 92.985283 96.228874 99.472466 111.52596 114.76955 118.01314 121.25673 124.50032 127.74391 130.9875">31805)730957(</tspan></text> +<text + id="text816" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="18.259945"><tspan + id="tspan818" + y="18.259945" + x="133.51018">±</tspan></text> +<text + id="text820" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="18.259945"><tspan + id="tspan822" + sodipodi:role="line" + y="18.259945" + x="138.55595 141.79955 145.04314 148.28673 151.53032 154.77391 158.0175 170.07098">703887)3</tspan></text> +<text + id="text824" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="173.31531" + y="18.259945"><tspan + id="tspan826" + y="18.259945" + x="173.31531">.</tspan></text> +<text + id="text828" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="175.11737" + y="18.259945"><tspan + id="tspan830" + y="18.259945" + x="175.11737">7</tspan></text> +<text + id="text832" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="177.64026" + y="18.259945"><tspan + id="tspan834" + y="18.259945" + x="177.64026">×</tspan></text> +<text + id="text836" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="181.96449" + y="18.259945"><tspan + id="tspan838" + sodipodi:role="line" + y="18.259945" + x="181.96449 185.2081">10</tspan></text> +<text + id="text840" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="188.45192" + y="15.578674"><tspan + id="tspan842" + y="15.578674" + x="188.45192">6</tspan></text> +<text + id="text844" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="191.37393" + y="18.259945"><tspan + id="tspan846" + y="18.259945" + x="191.37393">(</tspan></text> +<text + id="text848" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="18.259945"><tspan + id="tspan850" + y="18.259945" + x="193.8961">±</tspan></text> +<text + id="text852" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="18.259945"><tspan + id="tspan854" + y="18.259945" + x="198.94188">3</tspan></text> +<text + id="text856" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="202.18559" + y="18.259945"><tspan + id="tspan858" + y="18.259945" + x="202.18559">.</tspan></text> +<text + id="text860" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="203.98695" + y="18.259945"><tspan + id="tspan862" + y="18.259945" + x="203.98695">7</tspan></text> +<text + id="text864" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="206.50983" + y="18.259945"><tspan + id="tspan866" + y="18.259945" + x="206.50983">×</tspan></text> +<text + id="text868" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="210.83478" + y="18.259945"><tspan + id="tspan870" + sodipodi:role="line" + y="18.259945" + x="210.83478 214.07837">10</tspan></text> +<text + id="text872" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="217.32149" + y="15.578674"><tspan + id="tspan874" + y="15.578674" + x="217.32149">6</tspan></text> +<text + id="text876" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="220.24352" + y="18.259945"><tspan + id="tspan878" + sodipodi:role="line" + y="18.259945" + x="220.24352 234.38617">)2</tspan></text> +<text + id="text880" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="236.90906" + y="18.259945"><tspan + id="tspan882" + y="18.259945" + x="236.90906">×</tspan></text> +<text + id="text884" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="241.23399" + y="18.259945"><tspan + id="tspan886" + sodipodi:role="line" + y="18.259945" + x="241.23399 244.47758">10</tspan></text> +<text + id="text888" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="247.7207" + y="15.578674"><tspan + id="tspan890" + y="15.578674" + x="247.7207">7</tspan></text> +<text + id="text892" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="250.64272" + y="18.259945"><tspan + id="tspan894" + y="18.259945" + x="250.64272">(</tspan></text> +<text + id="text896" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="18.259945"><tspan + id="tspan898" + y="18.259945" + x="253.1656">±</tspan></text> +<text + id="text900" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="18.259945"><tspan + id="tspan902" + y="18.259945" + x="258.21069">2</tspan></text> +<text + id="text904" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="260.73355" + y="18.259945"><tspan + id="tspan906" + y="18.259945" + x="260.73355">×</tspan></text> +<text + id="text908" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="265.0585" + y="18.259945"><tspan + id="tspan910" + sodipodi:role="line" + y="18.259945" + x="265.0585 268.30209">10</tspan></text> +<text + id="text912" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="271.54523" + y="15.578674"><tspan + id="tspan914" + y="15.578674" + x="271.54523">7</tspan></text> +<text + id="text916" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="274.46725" + y="18.259945"><tspan + id="tspan918" + sodipodi:role="line" + y="18.259945" + x="274.46725 288.60989">)1</tspan></text> +<text + id="text920" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="291.85361" + y="18.259945"><tspan + id="tspan922" + y="18.259945" + x="291.85361">.</tspan></text> +<text + id="text924" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="293.65567" + y="18.259945"><tspan + id="tspan926" + y="18.259945" + x="293.65567">6</tspan></text> +<text + id="text928" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="296.17856" + y="18.259945"><tspan + id="tspan930" + y="18.259945" + x="296.17856">×</tspan></text> +<text + id="text932" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="300.50278" + y="18.259945"><tspan + id="tspan934" + sodipodi:role="line" + y="18.259945" + x="300.50278 303.74637">10</tspan></text> +<text + id="text936" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="306.9902" + y="15.578674"><tspan + id="tspan938" + y="15.578674" + x="306.9902">6</tspan></text> +<text + id="text940" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="309.91223" + y="18.259945"><tspan + id="tspan942" + y="18.259945" + x="309.91223">(</tspan></text> +<text + id="text944" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="18.259945"><tspan + id="tspan946" + y="18.259945" + x="312.43439">±</tspan></text> +<text + id="text948" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="18.259945"><tspan + id="tspan950" + y="18.259945" + x="317.48016">1</tspan></text> +<text + id="text952" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="320.72388" + y="18.259945"><tspan + id="tspan954" + y="18.259945" + x="320.72388">.</tspan></text> +<text + id="text956" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="322.52524" + y="18.259945"><tspan + id="tspan958" + y="18.259945" + x="322.52524">6</tspan></text> +<text + id="text960" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="325.04813" + y="18.259945"><tspan + id="tspan962" + y="18.259945" + x="325.04813">×</tspan></text> +<text + id="text964" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="329.37308" + y="18.259945"><tspan + id="tspan966" + sodipodi:role="line" + y="18.259945" + x="329.37308 332.61667">10</tspan></text> +<text + id="text968" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="335.8598" + y="15.578674"><tspan + id="tspan970" + y="15.578674" + x="335.8598">6</tspan></text> +<text + id="text972" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="338.7818" + y="18.259945"><tspan + id="tspan974" + y="18.259945" + x="338.7818">)</tspan></text> +<text + id="text980" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-13.114918" + y="-343.44955"><tspan + id="tspan982" + y="-343.44955" + x="-13.114918" /></text> +<text + id="text984" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="-8.6850872" + y="-343.44955"><tspan + id="tspan986" + sodipodi:role="line" + y="-343.44955" + x="-8.6850872 -1.834348">=0</tspan></text> +<text + id="text988" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="1.4064536" + y="-343.44955"><tspan + id="tspan990" + y="-343.44955" + x="1.4064536">.</tspan></text> +<text + id="text992" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="3.2078104" + y="-343.44955"><tspan + id="tspan994" + sodipodi:role="line" + y="-343.44955" + x="3.2078104 6.4514022">01</tspan></text> +<path + inkscape:connector-curvature="0" + id="path1000" + style="fill:none;stroke:#000000;stroke-width:0.38364187;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 2.5594907,-22.018226 347.9237393,0" /><text + id="text1004" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="29.759344"><tspan + id="tspan1006" + sodipodi:role="line" + y="29.759344" + x="1.7872792 8.8665018 12.497003 16.439302 20.925671 23.74259 28.842459 34.452942 40.261616 45.456795" + style="fill:#000000;fill-opacity:1">MaxLIPO+TR</tspan><tspan + id="tspan1008" + sodipodi:role="line" + y="29.759344" + x="68.707268 72.44191">57</tspan></text> +<text + id="text1010" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="76.177193" + y="29.759344"><tspan + id="tspan1012" + y="29.759344" + x="76.177193">(</tspan></text> +<text + id="text1014" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.700081" + y="29.759344"><tspan + id="tspan1016" + y="29.759344" + x="78.700081">±</tspan></text> +<text + id="text1018" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.745148" + y="29.759344"><tspan + id="tspan1020" + sodipodi:role="line" + y="29.759344" + x="83.745148 86.988739 90.23233">28)</tspan></text> +<text + id="text1022" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="122.14241" + y="29.759344"><tspan + id="tspan1024" + sodipodi:role="line" + y="29.759344" + x="122.14241 125.87705 129.61169">165</tspan></text> +<text + id="text1026" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.34616" + y="29.759344"><tspan + id="tspan1028" + y="29.759344" + x="133.34616">(</tspan></text> +<text + id="text1030" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="135.86835" + y="29.759344"><tspan + id="tspan1032" + y="29.759344" + x="135.86835">±</tspan></text> +<text + id="text1034" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="140.91412" + y="29.759344"><tspan + id="tspan1036" + sodipodi:role="line" + y="29.759344" + x="140.91412 144.15771 147.40131">87)</tspan></text> +<text + id="text1038" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="182.52835" + y="29.759344"><tspan + id="tspan1040" + sodipodi:role="line" + y="29.759344" + x="182.52835 186.263 189.99763">219</tspan></text> +<text + id="text1042" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.7321" + y="29.759344"><tspan + id="tspan1044" + y="29.759344" + x="193.7321">(</tspan></text> +<text + id="text1046" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="196.25427" + y="29.759344"><tspan + id="tspan1048" + y="29.759344" + x="196.25427">±</tspan></text> +<text + id="text1050" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="201.30005" + y="29.759344"><tspan + id="tspan1052" + sodipodi:role="line" + y="29.759344" + x="201.30005 204.54364 207.78723 244.15346 247.39705 250.64064">89)92(</tspan></text> +<text + id="text1054" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="29.759344"><tspan + id="tspan1056" + y="29.759344" + x="253.1656">±</tspan></text> +<text + id="text1058" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="29.759344"><tspan + id="tspan1060" + sodipodi:role="line" + y="29.759344" + x="258.21069 261.45428 264.69788 300.18045 303.42404 306.66763 309.91122">15)199(</tspan></text> +<text + id="text1062" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="29.759344"><tspan + id="tspan1064" + y="29.759344" + x="312.43439">±</tspan></text> +<text + id="text1066" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="29.759344"><tspan + id="tspan1068" + sodipodi:role="line" + y="29.759344" + x="317.48016 320.72375 323.96735 327.21094">171)</tspan></text> +<text + id="text1070" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="37.473713"><tspan + id="tspan1072" + sodipodi:role="line" + y="37.473713" + x="1.7872792 6.8871474 12.483747 16.63307 22.441746 27.636919">PRS+TR</tspan></text> +<text + id="text1074" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="37.473713"><tspan + id="tspan1076" + sodipodi:role="line" + y="37.473713" + x="69.199135 72.442726 75.686317">94(</tspan></text> +<text + id="text1078" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="37.473713"><tspan + id="tspan1080" + y="37.473713" + x="78.208733">±</tspan></text> +<text + id="text1082" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="37.473713"><tspan + id="tspan1084" + sodipodi:role="line" + y="37.473713" + x="83.254509 86.4981 89.741692 118.01629 121.25989 124.50348 127.74707 130.99066">87)1776(</tspan></text> +<text + id="text1086" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="37.473713"><tspan + id="tspan1088" + y="37.473713" + x="133.51018">±</tspan></text> +<text + id="text1090" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="37.473713"><tspan + id="tspan1092" + sodipodi:role="line" + y="37.473713" + x="138.55595 141.79955 145.04314 148.28673 151.53032 183.26375 186.50734 189.75092 192.99452">3437)236(</tspan></text> +<text + id="text1094" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="195.51797" + y="37.473713"><tspan + id="tspan1096" + y="37.473713" + x="195.51797">±</tspan></text> +<text + id="text1098" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="200.56374" + y="37.473713"><tspan + id="tspan1100" + sodipodi:role="line" + y="37.473713" + x="200.56374 203.80733 207.05092 244.15562 247.39922 250.64281">97)99(</tspan></text> +<text + id="text1102" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.1656" + y="37.473713"><tspan + id="tspan1104" + y="37.473713" + x="253.1656">±</tspan></text> +<text + id="text1106" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.21069" + y="37.473713"><tspan + id="tspan1108" + sodipodi:role="line" + y="37.473713" + x="258.21069 261.45428 264.69788 300.18045 303.42404 306.66763 309.91122">17)202(</tspan></text> +<text + id="text1110" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="37.473713"><tspan + id="tspan1112" + y="37.473713" + x="312.43439">±</tspan></text> +<text + id="text1114" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="37.473713"><tspan + id="tspan1116" + sodipodi:role="line" + y="37.473713" + x="317.48016 320.72375 323.96735 327.21094">174)</tspan></text> +<text + id="text1118" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="45.188084"><tspan + id="tspan1120" + sodipodi:role="line" + y="45.188084" + x="1.7872792 6.2736487 9.0905676 14.190436 19.800922 25.609596 30.80477">LIPO+TR</tspan></text> +<text + id="text1122" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="45.188084"><tspan + id="tspan1124" + sodipodi:role="line" + y="45.188084" + x="69.199135 72.442726 75.686317">63(</tspan></text> +<text + id="text1126" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="45.188084"><tspan + id="tspan1128" + y="45.188084" + x="78.208733">±</tspan></text> +<text + id="text1130" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="45.188084"><tspan + id="tspan1132" + sodipodi:role="line" + y="45.188084" + x="83.254509 86.4981 89.741692 121.2542 124.4978 127.74139 130.98499">43)221(</tspan></text> +<text + id="text1134" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="45.188084"><tspan + id="tspan1136" + y="45.188084" + x="133.51018">±</tspan></text> +<text + id="text1138" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="45.188084"><tspan + id="tspan1140" + sodipodi:role="line" + y="45.188084" + x="138.55595 141.79955 145.04314 148.28673 181.64226 184.88585 188.12944 191.37303">132)232(</tspan></text> +<text + id="text1142" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="45.188084"><tspan + id="tspan1144" + y="45.188084" + x="193.8961">±</tspan></text> +<text + id="text1146" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="45.188084"><tspan + id="tspan1148" + sodipodi:role="line" + y="45.188084" + x="198.94188 202.18547 205.42906 208.67265">103)</tspan></text> +<text + id="text1150" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="243.66467" + y="45.188084"><tspan + id="tspan1152" + sodipodi:role="line" + y="45.188084" + x="243.66467 247.39931">91</tspan></text> +<text + id="text1154" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="251.13406" + y="45.188084"><tspan + id="tspan1156" + y="45.188084" + x="251.13406">(</tspan></text> +<text + id="text1158" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.65625" + y="45.188084"><tspan + id="tspan1160" + y="45.188084" + x="253.65625">±</tspan></text> +<text + id="text1162" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="258.70203" + y="45.188084"><tspan + id="tspan1164" + sodipodi:role="line" + y="45.188084" + x="258.70203 261.94562 265.18921">15)</tspan></text> +<text + id="text1166" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="299.4455" + y="45.188084"><tspan + id="tspan1168" + sodipodi:role="line" + y="45.188084" + x="299.4455 303.18015 306.91476">198</tspan></text> +<text + id="text1170" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="310.64853" + y="45.188084"><tspan + id="tspan1172" + y="45.188084" + x="310.64853">(</tspan></text> +<text + id="text1174" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="313.17142" + y="45.188084"><tspan + id="tspan1176" + y="45.188084" + x="313.17142">±</tspan></text> +<text + id="text1178" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="318.21649" + y="45.188084"><tspan + id="tspan1180" + sodipodi:role="line" + y="45.188084" + x="318.21649 321.46008 324.70367 327.94727">152)</tspan></text> +<text + id="text1182" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="52.902451"><tspan + id="tspan1184" + sodipodi:role="line" + y="52.902451" + x="1.7872792 6.2736487 9.0905676 14.190436">LIPO</tspan></text> +<text + id="text1186" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.650383" + y="52.902451"><tspan + id="tspan1188" + sodipodi:role="line" + y="52.902451" + x="79.650383 134.95114 195.33913 254.60994 313.87445">-----</tspan></text> +<text + id="text1190" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="60.616821"><tspan + id="tspan1192" + sodipodi:role="line" + y="60.616821" + x="1.7872792 6.8871474 12.483747">PRS</tspan></text> +<text + id="text1194" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.650383" + y="60.616821"><tspan + id="tspan1196" + sodipodi:role="line" + y="60.616821" + x="79.650383 134.95114 195.33913 254.60994 313.87445">-----</tspan></text> +<text + id="text1202" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="27.620102" + y="-343.44955"><tspan + id="tspan1204" + y="-343.44955" + x="27.620102" /></text> +<text + id="text1206" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="32.049934" + y="-343.44955"><tspan + id="tspan1208" + sodipodi:role="line" + y="-343.44955" + x="32.049934 38.900673">=0</tspan></text> +<text + id="text1210" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="42.141476" + y="-343.44955"><tspan + id="tspan1212" + y="-343.44955" + x="42.141476">.</tspan></text> +<text + id="text1214" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="43.942829" + y="-343.44955"><tspan + id="tspan1216" + sodipodi:role="line" + y="-343.44955" + x="43.942829 47.18642 50.430012">001</tspan></text> +<path + inkscape:connector-curvature="0" + id="path1222" + style="fill:none;stroke:#000000;stroke-width:0.38364187;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 2.5594907,-64.375102 347.9237393,0" /><text + id="text1226" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="72.116219"><tspan + id="tspan1228" + sodipodi:role="line" + y="72.116219" + x="1.7872792 8.8665018 12.497003 16.439302 20.925671 23.74259 28.842459 34.452942 40.261616 45.456795" + style="fill:#000000;fill-opacity:1">MaxLIPO+TR</tspan><tspan + id="tspan1230" + sodipodi:role="line" + y="72.116219" + x="68.707268 72.44191">66</tspan></text> +<text + id="text1232" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="76.177193" + y="72.116219"><tspan + id="tspan1234" + y="72.116219" + x="76.177193">(</tspan></text> +<text + id="text1236" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.700081" + y="72.116219"><tspan + id="tspan1238" + y="72.116219" + x="78.700081">±</tspan></text> +<text + id="text1240" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.745148" + y="72.116219"><tspan + id="tspan1242" + sodipodi:role="line" + y="72.116219" + x="83.745148 86.988739 90.23233">27)</tspan></text> +<text + id="text1244" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="122.14241" + y="72.116219"><tspan + id="tspan1246" + sodipodi:role="line" + y="72.116219" + x="122.14241 125.87705 129.61169">169</tspan></text> +<text + id="text1248" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.34616" + y="72.116219"><tspan + id="tspan1250" + y="72.116219" + x="133.34616">(</tspan></text> +<text + id="text1252" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="135.86835" + y="72.116219"><tspan + id="tspan1254" + y="72.116219" + x="135.86835">±</tspan></text> +<text + id="text1256" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="140.91412" + y="72.116219"><tspan + id="tspan1258" + sodipodi:role="line" + y="72.116219" + x="140.91412 144.15771 147.40131">89)</tspan></text> +<text + id="text1260" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="182.52835" + y="72.116219"><tspan + id="tspan1262" + sodipodi:role="line" + y="72.116219" + x="182.52835 186.263 189.99763">238</tspan></text> +<text + id="text1264" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.7321" + y="72.116219"><tspan + id="tspan1266" + y="72.116219" + x="193.7321">(</tspan></text> +<text + id="text1268" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="196.25427" + y="72.116219"><tspan + id="tspan1270" + y="72.116219" + x="196.25427">±</tspan></text> +<text + id="text1272" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="201.30005" + y="72.116219"><tspan + id="tspan1274" + sodipodi:role="line" + y="72.116219" + x="201.30005 204.54364 207.78723">88)</tspan></text> +<text + id="text1276" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="241.79784" + y="72.116219"><tspan + id="tspan1278" + sodipodi:role="line" + y="72.116219" + x="241.79784 245.53249 249.26712">400</tspan></text> +<text + id="text1280" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="253.00089" + y="72.116219"><tspan + id="tspan1282" + y="72.116219" + x="253.00089">(</tspan></text> +<text + id="text1284" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="255.52377" + y="72.116219"><tspan + id="tspan1286" + y="72.116219" + x="255.52377">±</tspan></text> +<text + id="text1288" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="260.56885" + y="72.116219"><tspan + id="tspan1290" + sodipodi:role="line" + y="72.116219" + x="260.56885 263.81244 267.05603 300.18433 303.42792 306.67151 309.9151">49)236(</tspan></text> +<text + id="text1292" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="72.116219"><tspan + id="tspan1294" + y="72.116219" + x="312.43439">±</tspan></text> +<text + id="text1296" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="72.116219"><tspan + id="tspan1298" + sodipodi:role="line" + y="72.116219" + x="317.48016 320.72375 323.96735 327.21094">162)</tspan></text> +<text + id="text1300" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="79.830589"><tspan + id="tspan1302" + sodipodi:role="line" + y="79.830589" + x="1.7872792 6.8871474 12.483747 16.63307 22.441746 27.636919">PRS+TR</tspan></text> +<text + id="text1304" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="67.577278" + y="79.830589"><tspan + id="tspan1306" + sodipodi:role="line" + y="79.830589" + x="67.577278 70.820869 74.064468 77.30806">102(</tspan></text> +<text + id="text1308" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.830589" + y="79.830589"><tspan + id="tspan1310" + y="79.830589" + x="79.830589">±</tspan></text> +<text + id="text1312" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="84.876358" + y="79.830589"><tspan + id="tspan1314" + sodipodi:role="line" + y="79.830589" + x="84.876358 88.119949 91.363548 118.01604 121.25963 124.50322 127.74681 130.9904">92)1548(</tspan></text> +<text + id="text1316" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="79.830589"><tspan + id="tspan1318" + y="79.830589" + x="133.51018">±</tspan></text> +<text + id="text1320" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="79.830589"><tspan + id="tspan1322" + sodipodi:role="line" + y="79.830589" + x="138.55595 141.79955 145.04314 148.28673 151.53032 183.26375 186.50734 189.75092 192.99452">2989)264(</tspan></text> +<text + id="text1324" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="195.51797" + y="79.830589"><tspan + id="tspan1326" + y="79.830589" + x="195.51797">±</tspan></text> +<text + id="text1328" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="200.56374" + y="79.830589"><tspan + id="tspan1330" + sodipodi:role="line" + y="79.830589" + x="200.56374 203.80733 207.05092 242.53351 245.7771 249.02069 252.26428">96)411(</tspan></text> +<text + id="text1332" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="254.78746" + y="79.830589"><tspan + id="tspan1334" + y="79.830589" + x="254.78746">±</tspan></text> +<text + id="text1336" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="259.83252" + y="79.830589"><tspan + id="tspan1338" + sodipodi:role="line" + y="79.830589" + x="259.83252 263.07611 266.3197 300.18018 303.42377 306.66736 309.91095">52)236(</tspan></text> +<text + id="text1340" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="312.43439" + y="79.830589"><tspan + id="tspan1342" + y="79.830589" + x="312.43439">±</tspan></text> +<text + id="text1344" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="317.48016" + y="79.830589"><tspan + id="tspan1346" + sodipodi:role="line" + y="79.830589" + x="317.48016 320.72375 323.96735 327.21094">168)</tspan></text> +<text + id="text1348" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="87.54496"><tspan + id="tspan1350" + sodipodi:role="line" + y="87.54496" + x="1.7872792 6.2736487 9.0905676 14.190436 19.800922 25.609596 30.80477">LIPO+TR</tspan></text> +<text + id="text1352" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="69.199135" + y="87.54496"><tspan + id="tspan1354" + sodipodi:role="line" + y="87.54496" + x="69.199135 72.442726 75.686317">73(</tspan></text> +<text + id="text1356" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="78.208733" + y="87.54496"><tspan + id="tspan1358" + y="87.54496" + x="78.208733">±</tspan></text> +<text + id="text1360" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="83.254509" + y="87.54496"><tspan + id="tspan1362" + sodipodi:role="line" + y="87.54496" + x="83.254509 86.4981 89.741692 121.2542 124.4978 127.74139 130.98499">43)230(</tspan></text> +<text + id="text1364" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="133.51018" + y="87.54496"><tspan + id="tspan1366" + y="87.54496" + x="133.51018">±</tspan></text> +<text + id="text1368" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="138.55595" + y="87.54496"><tspan + id="tspan1370" + sodipodi:role="line" + y="87.54496" + x="138.55595 141.79955 145.04314 148.28673 181.64226 184.88585 188.12944 191.37303">130)260(</tspan></text> +<text + id="text1372" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="193.8961" + y="87.54496"><tspan + id="tspan1374" + y="87.54496" + x="193.8961">±</tspan></text> +<text + id="text1376" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="198.94188" + y="87.54496"><tspan + id="tspan1378" + sodipodi:role="line" + y="87.54496" + x="198.94188 202.18547 205.42906 208.67265 242.53313 245.77672 249.02031 252.2639">100)400(</tspan></text> +<text + id="text1380" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="254.78746" + y="87.54496"><tspan + id="tspan1382" + y="87.54496" + x="254.78746">±</tspan></text> +<text + id="text1384" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="259.83252" + y="87.54496"><tspan + id="tspan1386" + sodipodi:role="line" + y="87.54496" + x="259.83252 263.07611 266.3197">53)</tspan></text> +<text + id="text1388" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="299.4455" + y="87.54496"><tspan + id="tspan1390" + sodipodi:role="line" + y="87.54496" + x="299.4455 303.18015 306.91476">232</tspan></text> +<text + id="text1392" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="310.64853" + y="87.54496"><tspan + id="tspan1394" + y="87.54496" + x="310.64853">(</tspan></text> +<text + id="text1396" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathSymbols9;-inkscape-font-specification:LMMathSymbols9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="313.17142" + y="87.54496"><tspan + id="tspan1398" + y="87.54496" + x="313.17142">±</tspan></text> +<text + id="text1400" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="318.21649" + y="87.54496"><tspan + id="tspan1402" + sodipodi:role="line" + y="87.54496" + x="318.21649 321.46008 324.70367 327.94727">165)</tspan></text> +<text + id="text1404" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="95.259331"><tspan + id="tspan1406" + sodipodi:role="line" + y="95.259331" + x="1.7872792 6.2736487 9.0905676 14.190436">LIPO</tspan></text> +<text + id="text1408" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.650383" + y="95.259331"><tspan + id="tspan1410" + sodipodi:role="line" + y="95.259331" + x="79.650383 134.95114 195.33913 254.60994 313.87445">-----</tspan></text> +<text + id="text1412" + style="font-variant:normal;font-weight:bold;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="1.7872792" + y="102.9737"><tspan + id="tspan1414" + sodipodi:role="line" + y="102.9737" + x="1.7872792 6.8871474 12.483747">PRS</tspan></text> +<text + id="text1416" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="scale(1,-1)" + x="79.650383" + y="102.9737"><tspan + id="tspan1418" + sodipodi:role="line" + y="102.9737" + x="79.650383 134.95114 195.33913 254.60994 313.87445">-----</tspan></text> +<text + id="text1424" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMMathItalic9;-inkscape-font-specification:LMMathItalic9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="70.634453" + y="-343.44955"><tspan + id="tspan1426" + y="-343.44955" + x="70.634453" /></text> +<text + id="text1428" + style="font-variant:normal;font-weight:normal;font-size:6.31171799px;font-family:LMRoman9;-inkscape-font-specification:LMRoman9-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="75.064285" + y="-343.44955"><tspan + id="tspan1430" + sodipodi:role="line" + y="-343.44955" + x="75.064285 81.915024 85.158615">=10</tspan></text> +<text + id="text1432" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMMathSymbols6;-inkscape-font-specification:LMMathSymbols6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="88.398827" + y="-346.13083"><tspan + id="tspan1434" + y="-346.13083" + x="88.398827">−</tspan></text> +<text + id="text1436" + style="font-variant:normal;font-weight:normal;font-size:4.20781183px;font-family:LMRoman6;-inkscape-font-specification:LMRoman6-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(0,-1,-1,0,0,0)" + x="92.450653" + y="-346.13083"><tspan + id="tspan1438" + y="-346.13083" + x="92.450653">9</tspan></text> +<g + transform="matrix(0,-0.70393,0.70393,0,343.44956,-51.173603)" + id="g1440" /><path + inkscape:connector-curvature="0" + id="path1444" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 2.5594907,-107.31906 347.9237393,0 0,0.77855 -347.9237393,0 0,-0.77855 z" /></g><g + id="g4774" + transform="matrix(0,-0.47098091,0.47098091,0,521.47961,648.82634)"><g + word-spacing="normal" + letter-spacing="normal" + font-size-adjust="none" + font-stretch="normal" + font-weight="normal" + font-variant="normal" + font-style="normal" + stroke-miterlimit="10.433" + xml:space="preserve" + transform="matrix(0.77862916,0,0,-0.77862916,-136.2601,634.39394)" + id="content" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"><path + id="path4777" + d="m 470.84,417.26 0.15,0 0.16,0 0.15,0 0.07,0.01 0.08,0 0.07,0.01 0.07,0 0.07,0.01 0.07,0.01 0.07,0.01 0.06,0.02 0.07,0.02 0.06,0.01 0.06,0.02 0.06,0.03 0.05,0.03 0.05,0.02 0.05,0.04 0.05,0.03 0.04,0.04 0.04,0.05 0.03,0.04 0.02,0.03 0.01,0.02 0.01,0.03 0.02,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0,0.03 0.01,0.04 0,0.03 0.01,0.04 0,0.04 0,0.04 c 0,0.69 -0.6,0.69 -1.45,0.69 l -8.07,0 c 1.2,4.24 3.99,7.13 8.52,7.13 l 1.55,0 c 0.84,0 1.64,0 1.64,0.84 0,0.7 -0.65,0.7 -1.5,0.7 l -1.74,0 c -6.47,0 -13.15,-4.98 -13.15,-12.6 0,-5.48 3.74,-9.42 9.02,-9.42 3.23,0 6.47,2 6.47,2.54 0,0.15 -0.04,0.7 -0.49,0.7 -0.11,0 -0.2,0 -0.65,-0.3 -1.55,-1 -3.39,-1.84 -5.23,-1.84 -2.89,0 -5.38,2.09 -5.38,6.47 0,1.75 0.4,3.64 0.54,4.24 z" + inkscape:connector-curvature="0" + style="fill:#000000;stroke-width:0" /></g></g><g + transform="matrix(0,-0.47098091,0.47098091,0,521.26986,568.49371)" + id="g5503"><g + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="g5505" + transform="matrix(0.77862916,0,0,-0.77862916,-136.2601,634.39394)" + xml:space="preserve" + stroke-miterlimit="10.433" + font-style="normal" + font-variant="normal" + font-weight="normal" + font-stretch="normal" + font-size-adjust="none" + letter-spacing="normal" + word-spacing="normal"><path + style="fill:#000000;stroke-width:0" + inkscape:connector-curvature="0" + d="m 470.84,417.26 0.15,0 0.16,0 0.15,0 0.07,0.01 0.08,0 0.07,0.01 0.07,0 0.07,0.01 0.07,0.01 0.07,0.01 0.06,0.02 0.07,0.02 0.06,0.01 0.06,0.02 0.06,0.03 0.05,0.03 0.05,0.02 0.05,0.04 0.05,0.03 0.04,0.04 0.04,0.05 0.03,0.04 0.02,0.03 0.01,0.02 0.01,0.03 0.02,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0,0.03 0.01,0.04 0,0.03 0.01,0.04 0,0.04 0,0.04 c 0,0.69 -0.6,0.69 -1.45,0.69 l -8.07,0 c 1.2,4.24 3.99,7.13 8.52,7.13 l 1.55,0 c 0.84,0 1.64,0 1.64,0.84 0,0.7 -0.65,0.7 -1.5,0.7 l -1.74,0 c -6.47,0 -13.15,-4.98 -13.15,-12.6 0,-5.48 3.74,-9.42 9.02,-9.42 3.23,0 6.47,2 6.47,2.54 0,0.15 -0.04,0.7 -0.49,0.7 -0.11,0 -0.2,0 -0.65,-0.3 -1.55,-1 -3.39,-1.84 -5.23,-1.84 -2.89,0 -5.38,2.09 -5.38,6.47 0,1.75 0.4,3.64 0.54,4.24 z" + id="path5507" /></g></g><g + id="g5509" + transform="matrix(0,-0.47098091,0.47098091,0,521.47961,488.79032)"><g + word-spacing="normal" + letter-spacing="normal" + font-size-adjust="none" + font-stretch="normal" + font-weight="normal" + font-variant="normal" + font-style="normal" + stroke-miterlimit="10.433" + xml:space="preserve" + transform="matrix(0.77862916,0,0,-0.77862916,-136.2601,634.39394)" + id="g5511" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"><path + id="path5513" + d="m 470.84,417.26 0.15,0 0.16,0 0.15,0 0.07,0.01 0.08,0 0.07,0.01 0.07,0 0.07,0.01 0.07,0.01 0.07,0.01 0.06,0.02 0.07,0.02 0.06,0.01 0.06,0.02 0.06,0.03 0.05,0.03 0.05,0.02 0.05,0.04 0.05,0.03 0.04,0.04 0.04,0.05 0.03,0.04 0.02,0.03 0.01,0.02 0.01,0.03 0.02,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0,0.03 0.01,0.04 0,0.03 0.01,0.04 0,0.04 0,0.04 c 0,0.69 -0.6,0.69 -1.45,0.69 l -8.07,0 c 1.2,4.24 3.99,7.13 8.52,7.13 l 1.55,0 c 0.84,0 1.64,0 1.64,0.84 0,0.7 -0.65,0.7 -1.5,0.7 l -1.74,0 c -6.47,0 -13.15,-4.98 -13.15,-12.6 0,-5.48 3.74,-9.42 9.02,-9.42 3.23,0 6.47,2 6.47,2.54 0,0.15 -0.04,0.7 -0.49,0.7 -0.11,0 -0.2,0 -0.65,-0.3 -1.55,-1 -3.39,-1.84 -5.23,-1.84 -2.89,0 -5.38,2.09 -5.38,6.47 0,1.75 0.4,3.64 0.54,4.24 z" + inkscape:connector-curvature="0" + style="fill:#000000;stroke-width:0" /></g></g><g + transform="matrix(0,-0.47098091,0.47098091,0,521.47961,406.15049)" + id="g5515"><g + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="g5517" + transform="matrix(0.77862916,0,0,-0.77862916,-136.2601,634.39394)" + xml:space="preserve" + stroke-miterlimit="10.433" + font-style="normal" + font-variant="normal" + font-weight="normal" + font-stretch="normal" + font-size-adjust="none" + letter-spacing="normal" + word-spacing="normal"><path + style="fill:#000000;stroke-width:0" + inkscape:connector-curvature="0" + d="m 470.84,417.26 0.15,0 0.16,0 0.15,0 0.07,0.01 0.08,0 0.07,0.01 0.07,0 0.07,0.01 0.07,0.01 0.07,0.01 0.06,0.02 0.07,0.02 0.06,0.01 0.06,0.02 0.06,0.03 0.05,0.03 0.05,0.02 0.05,0.04 0.05,0.03 0.04,0.04 0.04,0.05 0.03,0.04 0.02,0.03 0.01,0.02 0.01,0.03 0.02,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0.01,0.03 0,0.03 0.01,0.04 0,0.03 0.01,0.04 0,0.04 0,0.04 c 0,0.69 -0.6,0.69 -1.45,0.69 l -8.07,0 c 1.2,4.24 3.99,7.13 8.52,7.13 l 1.55,0 c 0.84,0 1.64,0 1.64,0.84 0,0.7 -0.65,0.7 -1.5,0.7 l -1.74,0 c -6.47,0 -13.15,-4.98 -13.15,-12.6 0,-5.48 3.74,-9.42 9.02,-9.42 3.23,0 6.47,2 6.47,2.54 0,0.15 -0.04,0.7 -0.49,0.7 -0.11,0 -0.2,0 -0.65,-0.3 -1.55,-1 -3.39,-1.84 -5.23,-1.84 -2.89,0 -5.38,2.09 -5.38,6.47 0,1.75 0.4,3.64 0.54,4.24 z" + id="path5519" /></g></g></g></svg>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/graph_tools.xml b/ml/dlib/docs/docs/graph_tools.xml new file mode 100644 index 00000000..89770fca --- /dev/null +++ b/ml/dlib/docs/docs/graph_tools.xml @@ -0,0 +1,678 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Graph Tools</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + In dlib, there are two types of graph representations. On the one + hand, there are graphs based on an object which encapsulates the whole + graph, such as the <a href="containers.html#graph">graph</a> and + <a href="containers.html#directed_graph">directed_graph</a> objects. On the + other hand, there are graphs which are represented as simple vectors + of edges. In this case, we use vectors of <a href="#sample_pair">sample_pair</a> + or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects for undirected + and directed graphs respectively. + </p> + + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>Graph Object Based Graphs</name> + <item>graph_contains_directed_cycle</item> + <item>graph_has_symmetric_edges</item> + <item>graph_contains_undirected_cycle</item> + <item>create_moral_graph</item> + <item>triangulate_graph_and_find_cliques</item> + <item>graph_contains_length_one_cycle</item> + <item>find_connected_nodes</item> + <item>graph_is_connected</item> + <item>is_clique</item> + <item>is_maximal_clique</item> + <item>copy_graph_structure</item> + <item>copy_graph</item> + <item>edge</item> + <item>is_join_tree</item> + <item>create_join_tree</item> + </section> + + + <section> + <name>Creating Edge List Based Graphs</name> + <item>sample_pair</item> + <item>ordered_sample_pair</item> + <item>find_percent_shortest_edges_randomly</item> + <item>find_k_nearest_neighbors</item> + <item>find_k_nearest_neighbors_lsh</item> + <item>find_approximate_k_nearest_neighbors</item> + <item nolink="true"> + <name>Distance Functions</name> + <sub> + <item>negative_dot_product_distance</item> + <item>squared_euclidean_distance</item> + <item>cosine_distance</item> + </sub> + </item> + </section> + + <section> + <name>Using Edge List Based Graphs</name> + <item>remove_short_edges</item> + <item>remove_duplicate_edges</item> + <item>remove_long_edges</item> + <item>remove_percent_longest_edges</item> + <item>remove_percent_shortest_edges</item> + <item>use_weights_of_one</item> + <item>use_gaussian_weights</item> + <item>is_ordered_by_index</item> + <item>find_neighbor_ranges</item> + <item>convert_unordered_to_ordered</item> + <item>order_by_index</item> + <item>order_by_distance</item> + <item>order_by_descending_distance</item> + <item>order_by_distance_and_index</item> + <item>contains_duplicate_pairs</item> + <item>max_index_plus_one</item> + </section> + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>order_by_index</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/sample_pair_abstract.h</spec_file> + <description> + This function provides a total ordering of <a href="#sample_pair">sample_pair</a> + or <a href="#ordered_sample_pair">ordered_sample_pair</a> + objects that will cause pairs that represent the same edge to be adjacent + when sorted. So for example, this function can be used + with std::sort() to first sort a sequence of sample_pair objects and then + find duplicate edges. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>order_by_distance</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/sample_pair_abstract.h</spec_file> + <description> + This function provides a total ordering of <a href="#sample_pair">sample_pair</a> + or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects that causes + pairs with smallest distance to be the first in a sorted list. This function + can be used with std::sort(). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>order_by_descending_distance</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/sample_pair_abstract.h</spec_file> + <description> + This function provides a total ordering of <a href="#sample_pair">sample_pair</a> + or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects that causes + pairs with largest distance to be the first in a sorted list. This function + can be used with std::sort(). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>order_by_distance_and_index</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/sample_pair_abstract.h</spec_file> + <description> + This function provides a total ordering of <a href="#sample_pair">sample_pair</a> or + <a href="#ordered_sample_pair">ordered_sample_pair</a> objects that causes pairs + with smallest distance to be the first in a sorted list but also orders + samples with equal distances according to order_by_index(). This function + can be used with std::sort(). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>contains_duplicate_pairs</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function checks if a std::vector of <a href="#sample_pair">sample_pair</a> or + <a href="#ordered_sample_pair">ordered_sample_pair</a> objects + contains any edge more than once. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>max_index_plus_one</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function finds the number that is one greater than the largest index + value in a std::vector of <a href="#sample_pair">sample_pair</a> or + <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. Therefore, + it is useful for finding out how many nodes are in an edge list graph (assuming + the graph contains all node indices from 0 to the largest index indicated + by an edge). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sample_pair</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/sample_pair_abstract.h</spec_file> + <description> + This object is intended to represent an edge in an undirected graph + which has data samples at its vertices. Therefore, it is the undirected version + of <a href="#ordered_sample_pair">ordered_sample_pair</a>. + </description> + + <examples> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>ordered_sample_pair</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/ordered_sample_pair_abstract.h</spec_file> + <description> + This object is intended to represent an edge in a directed graph + which has data samples at its vertices. Therefore, it is the directed version + of <a href="#sample_pair">sample_pair</a>. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_percent_shortest_edges_randomly</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function is a simple approximate form of <a href="#find_k_nearest_neighbors">find_k_nearest_neighbors</a>. + Instead of checking all possible edges it randomly samples a large number of them and + then returns the best ones. + </description> + + <examples> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_k_nearest_neighbors</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This is a function which finds all the k nearest neighbors of a set of points and outputs + the result as a vector of <a href="#sample_pair">sample_pair</a> objects. It takes O(n^2) time where + n is the number of data samples. A faster approximate version is provided by + <a href="#find_approximate_k_nearest_neighbors">find_approximate_k_nearest_neighbors</a> + and <a href="#find_k_nearest_neighbors_lsh">find_k_nearest_neighbors_lsh</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_k_nearest_neighbors_lsh</name> + <file>dlib/graph_utils_threaded.h</file> + <spec_file link="true">dlib/graph_utils/find_k_nearest_neighbors_lsh_abstract.h</spec_file> + <description> + This function is a simple approximate form of <a href="#find_k_nearest_neighbors">find_k_nearest_neighbors</a>. + It uses <a href="algorithms.html#hash_similar_angles_128">locality sensitive hashing</a> + to speed up the nearest neighbor computation and is also capable of using a multi-core CPU. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_approximate_k_nearest_neighbors</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function is a simple approximate form of <a href="#find_k_nearest_neighbors">find_k_nearest_neighbors</a>. + Instead of checking all possible edges it randomly samples a large number of them and then performs + exact k-nearest-neighbors on that randomly selected subset. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>remove_short_edges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This is a simple function for removing edges with a small distance value from + a vector of <a href="#sample_pair">sample_pair</a> or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>remove_duplicate_edges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This is a simple function for removing duplicate edges (i.e. edges that compare equal + according to ==) from + a vector of <a href="#sample_pair">sample_pair</a> or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>remove_long_edges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This is a simple function for removing edges with a large distance value from + a vector of <a href="#sample_pair">sample_pair</a> or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>remove_percent_longest_edges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This is a simple function for removing edges with a large distance value from + a vector of <a href="#sample_pair">sample_pair</a> or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>remove_percent_shortest_edges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This is a simple function for removing edges with a small distance value from + a vector of <a href="#sample_pair">sample_pair</a> or <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>squared_euclidean_distance</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/function_objects_abstract.h</spec_file> + <description> + This is a simple function object that computes squared euclidean distance + between two <a href="linear_algebra.html#matrix">matrix</a> objects. + </description> + <examples> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cosine_distance</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/function_objects_abstract.h</spec_file> + <description> + This is a simple function object that computes cosine of the angle between + two vectors. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>negative_dot_product_distance</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/function_objects_abstract.h</spec_file> + <description> + This is a simple function object that computes -dot(v1,v2) for two + vectors v1 and v2. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>use_weights_of_one</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/function_objects_abstract.h</spec_file> + <description> + This is a simple function object that takes a single argument + and always returns 1 + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>use_gaussian_weights</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/function_objects_abstract.h</spec_file> + <description> + This is a simple function object that takes a single argument + which should be an object similar to <a href="#sample_pair">sample_pair</a>. + </description> + <examples> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_ordered_by_index</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function checks if a vector of <a href="#sample_pair">sample_pair</a> or + <a href="#ordered_sample_pair">ordered_sample_pair</a> objects is in sorted + order according to their index values. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_neighbor_ranges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function takes a graph, defined by a vector of + <a href="#ordered_sample_pair">ordered_sample_pair</a> objects, and finds the + ranges that contain the edges for each node in the graph. The output therefore + lets you easily locate the neighbors of any node in the graph. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>convert_unordered_to_ordered</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/edge_list_graphs_abstract.h</spec_file> + <description> + This function takes a graph, defined by a vector of + <a href="#sample_pair">sample_pair</a> objects and converts it into the equivalent + graph defined by a vector of <a href="#ordered_sample_pair">ordered_sample_pair</a> objects. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>edge</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> or + <a href="containers.html#directed_graph">directed_graph</a> object and a + pair of indices. It returns a reference to the edge object between the two nodes + with the given indices. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_join_tree</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes two <a href="containers.html#graph">graph</a> objects and + checks if the second of the two graphs is a valid join tree (aka tree decomposition) + of the first graph. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_join_tree</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> object and + creates a join tree for that graph. Or in other words, this function finds a + tree decomposition of the given graph. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_contains_directed_cycle</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function checks a <a href="containers.html#directed_graph">directed_graph</a> for directed cycles. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_has_symmetric_edges</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function checks if a <a href="containers.html#directed_graph">directed_graph</a> + has a pair of nodes with just one edge between them. If so then it + does not have symmetric edges. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>triangulate_graph_and_find_cliques</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> and + turns it into a chordal graph. It also returns a + <a href="containers.html#set">set</a> that contains + all the cliques present in the chordal graph. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_moral_graph</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#directed_graph">directed_graph</a> + and returns the moralized version of the graph in the form of a + <a href="containers.html#graph">graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_contains_length_one_cycle</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> + or <a href="containers.html#directed_graph">directed_graph</a> object and + returns true if and only if the graph contains a node that has an edge that + links back to itself. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_connected_nodes</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a node from a <a href="containers.html#graph">graph</a> + or <a href="containers.html#directed_graph">directed_graph</a> object and a + <a href="containers.html#set">set</a> of unsigned longs. It finds all the + nodes in the given graph that are connected to the given node by an + undirected path and returns them in the set (also note that the + original query node is also returned in this set). + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_is_connected</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> or + <a href="containers.html#directed_graph">directed_graph</a> object and + determines if the graph is connected. That is, it returns true if and only if + there is an undirected path between any two nodes in the given graph. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_clique</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> and a + <a href="containers.html#set">set</a> of node index values and checks + if the specified set of nodes is a clique in the graph. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>copy_graph</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> or + <a href="containers.html#directed_graph">directed_graph</a> and + makes a copy of it. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>copy_graph_structure</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> or + <a href="containers.html#directed_graph">directed_graph</a> and copies + its structure to another graph or directed_graph object. The only + restriction is that you can't copy the structure of a graph into a + directed_graph. The three other possible combinations are allowed + however. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_maximal_clique</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function takes a <a href="containers.html#graph">graph</a> and a + <a href="containers.html#set">set</a> of node index values and checks + if the specified set of nodes is a maximal clique in the graph. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_contains_undirected_cycle</name> + <file>dlib/graph_utils.h</file> + <spec_file link="true">dlib/graph_utils/graph_utils_abstract.h</spec_file> + <description> + This function checks a <a href="containers.html#directed_graph">directed_graph</a> for undirected cycles. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> + + + diff --git a/ml/dlib/docs/docs/guipics/button.png b/ml/dlib/docs/docs/guipics/button.png Binary files differnew file mode 100644 index 00000000..4b6b792b --- /dev/null +++ b/ml/dlib/docs/docs/guipics/button.png diff --git a/ml/dlib/docs/docs/guipics/check_box.png b/ml/dlib/docs/docs/guipics/check_box.png Binary files differnew file mode 100644 index 00000000..5dbf9181 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/check_box.png diff --git a/ml/dlib/docs/docs/guipics/directed_graph_drawer.png b/ml/dlib/docs/docs/guipics/directed_graph_drawer.png Binary files differnew file mode 100644 index 00000000..4a2caf57 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/directed_graph_drawer.png diff --git a/ml/dlib/docs/docs/guipics/image_window.jpg b/ml/dlib/docs/docs/guipics/image_window.jpg Binary files differnew file mode 100644 index 00000000..ed19406c --- /dev/null +++ b/ml/dlib/docs/docs/guipics/image_window.jpg diff --git a/ml/dlib/docs/docs/guipics/label.png b/ml/dlib/docs/docs/guipics/label.png Binary files differnew file mode 100644 index 00000000..67be0002 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/label.png diff --git a/ml/dlib/docs/docs/guipics/list_box.png b/ml/dlib/docs/docs/guipics/list_box.png Binary files differnew file mode 100644 index 00000000..30571664 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/list_box.png diff --git a/ml/dlib/docs/docs/guipics/menu_bar.png b/ml/dlib/docs/docs/guipics/menu_bar.png Binary files differnew file mode 100644 index 00000000..0c7461a0 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/menu_bar.png diff --git a/ml/dlib/docs/docs/guipics/message_box.png b/ml/dlib/docs/docs/guipics/message_box.png Binary files differnew file mode 100644 index 00000000..2decc106 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/message_box.png diff --git a/ml/dlib/docs/docs/guipics/mouse_tracker.png b/ml/dlib/docs/docs/guipics/mouse_tracker.png Binary files differnew file mode 100644 index 00000000..dc96d595 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/mouse_tracker.png diff --git a/ml/dlib/docs/docs/guipics/named_rectangle.png b/ml/dlib/docs/docs/guipics/named_rectangle.png Binary files differnew file mode 100644 index 00000000..45137ff3 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/named_rectangle.png diff --git a/ml/dlib/docs/docs/guipics/open_existing_file_box.png b/ml/dlib/docs/docs/guipics/open_existing_file_box.png Binary files differnew file mode 100644 index 00000000..19a3bb4f --- /dev/null +++ b/ml/dlib/docs/docs/guipics/open_existing_file_box.png diff --git a/ml/dlib/docs/docs/guipics/open_file_box.png b/ml/dlib/docs/docs/guipics/open_file_box.png Binary files differnew file mode 100644 index 00000000..3277bac2 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/open_file_box.png diff --git a/ml/dlib/docs/docs/guipics/perspective_window.png b/ml/dlib/docs/docs/guipics/perspective_window.png Binary files differnew file mode 100644 index 00000000..13c01f2e --- /dev/null +++ b/ml/dlib/docs/docs/guipics/perspective_window.png diff --git a/ml/dlib/docs/docs/guipics/popup_menu.png b/ml/dlib/docs/docs/guipics/popup_menu.png Binary files differnew file mode 100644 index 00000000..8e2bc028 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/popup_menu.png diff --git a/ml/dlib/docs/docs/guipics/radio_button.png b/ml/dlib/docs/docs/guipics/radio_button.png Binary files differnew file mode 100644 index 00000000..e5d7a635 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/radio_button.png diff --git a/ml/dlib/docs/docs/guipics/save_file_box.png b/ml/dlib/docs/docs/guipics/save_file_box.png Binary files differnew file mode 100644 index 00000000..a1d66c6b --- /dev/null +++ b/ml/dlib/docs/docs/guipics/save_file_box.png diff --git a/ml/dlib/docs/docs/guipics/scroll_bar.png b/ml/dlib/docs/docs/guipics/scroll_bar.png Binary files differnew file mode 100644 index 00000000..c08df752 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/scroll_bar.png diff --git a/ml/dlib/docs/docs/guipics/tabbed_display.png b/ml/dlib/docs/docs/guipics/tabbed_display.png Binary files differnew file mode 100644 index 00000000..6ab0417c --- /dev/null +++ b/ml/dlib/docs/docs/guipics/tabbed_display.png diff --git a/ml/dlib/docs/docs/guipics/text_box.png b/ml/dlib/docs/docs/guipics/text_box.png Binary files differnew file mode 100644 index 00000000..c00d008f --- /dev/null +++ b/ml/dlib/docs/docs/guipics/text_box.png diff --git a/ml/dlib/docs/docs/guipics/text_field.png b/ml/dlib/docs/docs/guipics/text_field.png Binary files differnew file mode 100644 index 00000000..ff917c57 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/text_field.png diff --git a/ml/dlib/docs/docs/guipics/text_grid.png b/ml/dlib/docs/docs/guipics/text_grid.png Binary files differnew file mode 100644 index 00000000..8b823af7 --- /dev/null +++ b/ml/dlib/docs/docs/guipics/text_grid.png diff --git a/ml/dlib/docs/docs/heatmap.png b/ml/dlib/docs/docs/heatmap.png Binary files differnew file mode 100644 index 00000000..d4bb4cab --- /dev/null +++ b/ml/dlib/docs/docs/heatmap.png diff --git a/ml/dlib/docs/docs/howto_contribute.xml b/ml/dlib/docs/docs/howto_contribute.xml new file mode 100644 index 00000000..3cf4a420 --- /dev/null +++ b/ml/dlib/docs/docs/howto_contribute.xml @@ -0,0 +1,604 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>How to Contribute</title> + + + + <!-- ************************************************************************* --> + + <body> + + + <!-- **************************** EASY CONTRIBUTIONS **************************** --> + + <h2>Contributing Money</h2> + + The simplest way to contribute is to donate money via Zelle or PayPal + to davis@dlib.net. Any amount is appreciated :) + + <!-- **************************** CODE CONTRIBUTIONS **************************** --> + <h2>Contributing Code</h2> + + Code contributions are welcome and can be done by submitting a pull request + to <a href="https://github.com/davisking/dlib">dlib's github page</a>. + + <p> If you want to make a big change or feature addition, it's probably a good idea to talk to me about it first. + Additionally, you should read over the coding guidelines below + and try to follow them. It is also probably a good idea to read the books Effective C++ and + More Effective C++ by Scott Meyers. + </p> + + + <h2>Coding Guidelines</h2> + + 1. <a href="#1">Use Design by Contract</a><br/> + 2. <a href="#2">Use spaces instead of tabs.</a><br/> + 3. <a href="#3">Use the standard C++ naming convention</a><br/> + 4. <a href="#4">Use RAII</a><br/> + 5. <a href="#5">Don't use pointers</a><br/> + 6. <a href="#6">Don't use #define for constants.</a><br/> + 7. <a href="#7">Don't use stack based arrays.</a><br/> + 8. <a href="#8">Use exceptions, but don't abuse them</a><br/> + 9. <a href="#9">Write portable code</a><br/> + 10. <a href="#10">Setup regression tests</a><br/> + 11. <a href="#11">Use the Boost Software License</a><br/> + + + <ul> + <!-- **************************** --> + <anchor>1</anchor> + <li> <h3> Apply Design by Contract to Your Code </h3> + <ul><p> + The most important part of a software library isn't the code, it is the set + of interfaces the library exposes to the user. These interfaces need to be easy + to use right, and hard to use wrong. The only way this + happens is if the interfaces are documented in a simple, consistent, and precise way. + </p> + <p> + The name for the way I design and document these interfaces is known as + Design by Contract. There is a lot that can be said about Design by Contract, in fact, + whole books have been written about it, and programming languages exist which + use Design by Contract as a central element. Here I will just go over some + of the basic ways it is used in dlib as well as some of the reasons why it is a + Good Thing. + </p> + <li> <b>Functions should have documented preconditions which are programmatically verifiable</b> + <ul> + <p> + Many functions have a set of requirements or preconditions that need to be satisfied + if they are to be used. If these requirements are not satisfied + when a function is called then the function will not do what it is supposed to do. Moreover, + any piece of software that calls a function but doesn't make sure all preconditions + are satisfied contains a bug, <i>by definition</i>. + </p> + <p> + This means all functions must precisely document their preconditions if they are to be + usable. In fact, all preconditions should be programmatically verifiable. Doing this + has a number of benefits. First, it means they are unambiguous. English + can be confusing and vague, but saying "<tt>some_predicate == true</tt>" uses a + formal language, C++, that we all should understand quite well. Second, it means + you can put checks into the code that will catch <i>all</i> usage errors. + </p> + <p> + These checks should always be implemented using + <a href="metaprogramming.html#DLIB_ASSERT">DLIB_ASSERT</a> or + <a href="metaprogramming.html#DLIB_CASSERT">DLIB_CASSERT</a> and they should always + cover all preconditions. + These macros take a boolean argument and if it is false they throw dlib::fatal_error. So + you can use them to check that all your preconditions are true. Also, don't forget that + a violated function precondition indicates a bug in a program. + That is, when dlib::fatal_error is thrown it means a bug has been found and the only thing + an application can do at that point is print an error message and terminate. + In fact, dlib::fatal_error has checks in it to make sure someone doesn't catch the + exception and ignore it. These checks will abruptly terminate any program that attempts + to ignore fatal errors. + </p> + <p> + The above considerations bring me to my next bit of advice. Developers new to Design by Contract + often confuse input validation requirements with function preconditions. When I tell them + to consider any violation of a function's preconditions a bug and terminate their application + with an error message they complain that this is not at all what an application should do when + it receives invalid user inputs. + + They are right, that would be a bad thing + and you should not write software that behaves that way. The way out of this problem is, of + course, to not consider invalid input as a bug. Instead, you should perform explicit input validation + on any + data coming into your program <i>before</i> it gets to any functions that have preconditions + which demand the validated inputs. Moreover, if you make your preconditions programmatically verifiable + then it should be easy to validate any inputs by simply using whatever it is you + use to check your preconditions. + </p> + <p> + Consider the function <a href="dlib/svm/svm_abstract.h.html#cross_validate_trainer">cross_validate_trainer</a> as an + example. One of its requirements is that the input forms a valid binary classification problem. + This is documented in the list of preconditions as + "<tt>is_binary_classification_problem(x,y) == true</tt>". This precondition is just saying + that when you call + the <a href="dlib/svm/svm_abstract.h.html#is_binary_classification_problem">is_binary_classification_problem</a> + function on the x and y inputs it had better return true + if you want to use those inputs with the <tt>cross_validate_trainer</tt> function. + Given this information it is trivial to perform input validation. All you have to do is + call <tt>is_binary_classification_problem</tt> on your input data and you are done. + </p> + <p> + Using the above technique you have validated your inputs, documented your preconditions, and are + buffered by DLIB_ASSERT statements that will catch you if you accidentally forget to validate any + inputs. + </p> + <p>The thing to understand here is that + a violation of a function's preconditions means you have a bug on your hands. Or in other words, + you should never intentionally violate any function preconditions. But of course + it will happen from time to time because bugs are unavoidable. But at least with + this approach you will get a detailed error message early in development rather than a + mysterious segmentation fault days or weeks later. + </p> + </ul></li> + <li> <b>Functions should have documented postconditions </b> + <ul><p> + I don't have nearly as much to say about postconditions as I did about function requirements. You should + strive to write programmatically verifiable postconditions because that makes your postconditions + more precise. However, it is sometimes the case that this isn't practical and that is fine. + But whatever you do write needs to clearly communicate to the + user what it is your function does. + </p></ul></li> + <p> + Now you may be wondering why this is called <i>Design</i> by Contract and not Documentation + by Contract. The reason is that the process of writing down all these detailed descriptions + of what your code does becomes part of how you design software. For example, often you + will find that when you go to write down the requirements for calling a function you are unable + to do so. This may be because the requirements are so complex you can't think of a way + to describe them, or you may realize that you don't even know what they are. Alternatively, + you may know what they are but discover there isn't any way to verify them programmatically. All these + things are symptoms of a bad <i>design</i> and the reason you became aware of this design problem + was by attempting to apply Design by Contract. + </p> + <p> + After you get enough practice with this way of writing software you begin to think a lot + more about questions like "how can I design this class such that every member function + has a very simple set of requirements and postconditions?" Once you start doing this + you are well on your way to creating software components that are easy to use right, and + hard to use wrong. + </p> + <p> + The notation dlib uses to document preconditions and postconditions is described in + the <a href="intro.html#Notation">introduction</a>. All code that goes into dlib + must document itself using this notation. You should also separate the implementation + and specification of a component into two separate files as described in the introduction. This + way users aren't confused or distracted by implementation details when they look at the documentation. + </p> + </ul> + </li> + + + <!-- **************************** --> + <anchor>2</anchor> + <li><h3>Use spaces instead of tabs. </h3> + <ul> <p>This is just generally good advice but + it is especially important in dlib since everything is viewable + as pretty-printed HTML. Tabs show up as 8 characters in most browsers + and this results in the HTML version being difficult to read. So + don't use tabs. Additionally, please use 4 spaces for each tab level.</p> + </ul></li> + + + + <!-- **************************** --> + <anchor>3</anchor> + <li><h3> Don't use capitol letters in the names of variables, functions, or + classes. Use the _ character to separate words. </h3> + <ul> + <p> + The reason dlib uses this style is because it is the style used by the + C++ standard library. But more importantly, dlib currently provides + an interface to users that has a consistent look and feel and it is + important to continue to do so. + </p> + <p> + As for constants, they should usually contain all upper case letters + but all lowercase is ok sometimes. + </p> + </ul></li> + + <!-- **************************** --> + <anchor>4</anchor> + <li> <h3> Don't use manual resource management. Use RAII + instead.</h3> + <ul><p> + You should not be calling new and delete in your own code. You should instead + be using objects like the std::vector, std::shared_ptr, + or any number of other objects that manage resources such as memory for you. If you want + an array use std::vector (or the checked <a href="containers.html#std_vector_c">std_vector_c</a>). + If you want to make a lookup table use a <a href="containers.html#map">map</a>. If you want + a two dimensional array use <a href="linear_algebra.html#matrix">matrix</a> or + <a href="containers.html#array2d">array2d</a>. + </p> + <p> + These container objects are examples of what is called RAII (Resource Acquisition Is Initialization) + in C++. It is essentially a name for the fact that, in C++, you can have totally automated and + deterministic resource management by always associating resource acquisition with the construction + of an object and resource release with the destruction of an object. I say resource management + here rather than memory management + because, unlike Java, RAII can be used for more than memory management. For example, when + you use a <a href="dlib/threads/threads_kernel_abstract.h.html#mutex">mutex</a> you first lock + it, do something, and then you need to remember to unlock it. The RAII way of doing this is + to use the <a href="api.html#auto_mutex">auto_mutex</a> which will lock a mutex and automatically + unlock it for you. Or suppose you have made a TCP <a href="api.html#sockets">connection</a> + to another machine and you want to be certain the resources associated with that connection + are always released. You can easily accomplish this with RAII by using the std::unique_ptr as + shown in <a href="sockstreambuf_ex.cpp.html">this</a> example program. + </p> + <p> + RAII is a trivial technique to use. All you have to do is not call new and delete and + you will never have another memory leak. Just use the appropriate <a href="containers.html">container</a> + instead. Finally, if you don't use RAII then your code is almost certainly not exception safe. + </p> + </ul> + </li> + + <!-- **************************** --> + <anchor>5</anchor> + <li> <h3>Don't use pointers </h3> + <ul><p> + There are a number of reasons to not use pointers. First, if you are using pointers then + you are probably not using RAII. Second, pointers are ambiguous. When I see a pointer + I don't know if it is a pointer to a single item, a pointer to nothing, or + a pointer to an array of who knows how many things. On the other hand, when I see a + std::vector I know with certainty that I'm dealing with a kind of array. Or if I see a + reference to something then I know I'm dealing with exactly one instance of some object. + </p> + <p> + Most importantly, it is impossible to validate the state of a pointer. Consider two + functions: + <code_box> +double compute_sum_of_array_elements(const double* array, int array_size); +double compute_sum_of_array_elements(const std::vector<double>& array); </code_box> + + The first function is inherently unsafe. If the user accidentally passes in an invalid pointer + or sets the size argument incorrectly then their program may crash and this will turn into a + potentially hard to find bug. This is because there is absolutely nothing you can do inside + the first function to tell the difference between a valid pointer and size pair and an invalid + pointer and size pair. <b><i>Nothing</i></b>. The second function has none of these difficulties. + </p> + <p> + If you absolutely need pointer semantics then you can usually use a smart pointer like + std::unique_ptr or std::shared_ptr. + If that still isn't good enough for you and you <i>really</i> need to use a normal C style pointer + then isolate your pointers inside a class or function so that they are contained in a small area of the code. + However, in practice the container classes in dlib and the STL are more than sufficient in nearly + every case where pointers would otherwise be used. + </p> + </ul> + </li> + + <!-- **************************** --> + <anchor>6</anchor> + <li> <h3> Don't use #define for constants. </h3> + <ul><p> + dlib is meant to be integrated into other people's projects. Because of this everything + in dlib is contained inside the dlib namespace to avoid naming conflicts with user's code. + #defines don't respect namespaces at all. For example, if you #define a constant called SIZE then it + will cause a conflict with any piece of code <i>anywhere</i> that contains the identifier SIZE. + This means that #define based constants must be avoided and constants should be created using the + const keyword instead. + </p> + </ul> + </li> + + <!-- **************************** --> + <anchor>7</anchor> + <li> <h3>Don't use stack based arrays. </h3> + <ul><p> + A stack based array, or C style array, is an array declared like this: + <code_box>int array[200];</code_box> + Most of my criticisms of pointers also apply to stack based arrays. In particular, + if you are passing a stack based array to a function then that means you are probably + using functions similar to the unsafe compute_sum_of_array_elements() example above. + </p> + <p> + The only time it is OK to use this kind of array is when you use it for simple + tasks and you don't start passing pointers to the array to other parts of your code. You + should also use a constant to store the array size and use that constant in your loops + rather than hard coding the size in numerous places. + </p> + <p> + But even still, you should use a container class instead and preferably one with the ability to do range + checking such as the <a href="containers.html#std_vector_c">std_vector_c</a>. </p> + <p> + Consider the following two bits of code: +<code_box> +for (int i = 0; i < array_size; ++i) + my_c_array[i] = 4; + +for (int i = 0; i < my_std_vector.size(); ++i) + my_std_vector[i] = 4; +</code_box> + The second loop clearly doesn't overflow the bounds of the my_std_vector. On the other + hand, just by looking at the code in the first loop, we can not tell if it overflows + my_c_array. We have to assume that array_size is the appropriate constant but we could be wrong. + </p> + <p> + Buffer overflows are probably the most common kind of bug in C and C++ code. These bugs also + lead to serious exploitable security holes in software. So please try to avoid stack based arrays. + </p> + </ul> + </li> + + + + <!-- **************************** --> + <anchor>8</anchor> + <li> <h3> Use exceptions, but don't abuse them. </h3> + <ul> + <p> + Exceptions are one of the great features of modern programming languages. Some + people, however, consider that to be a contentious statement. But if you accept + the notion that a software library should be hard to use wrong then it + becomes difficult to reject exceptions. + </p> + <p> + Most of the complaints I hear about exceptions are actually complaints + about their <i>misuse</i> rather than objections to the basic idea. + So before I begin to defend the above + paragraph I would like to lay out more clearly when it is appropriate to + use exceptions and when it is not. + </p> + <p> + There are two basic questions you should ask yourself when deciding whether to + throw an exception in response to some event. The first is (1) "should this event + occur in the normal use of my library component?" The second question is (2) "if this event + were to occur, is it likely that the user will want to place the code for dealing + with the event near the invocations of my library component?" + </p> + <p> + If your answers to the above two questions are "no" then you should probably + throw an exception in response to the event. On the other hand, if you answer + "yes" to either of these questions then you should probably <i>not</i> throw an exception. + </p> + + <p> + A good example of an event worth throwing exceptions for is running out of memory. + (1) It doesn't happen very often, and (2) when it does happen it is hardly ever the case that + you want to deal with the out of memory event right next to the place where you are + attempting to allocate memory. + </p> + <p> + Alternatively, an example of an event that shouldn't throw an exception comes to + us from the C++ I/O streams. This part of the standard library allows + you to read the contents of a file from disk. When you hit the end of file they + do not throw an exception. This is appropriate because (1) you usually want to + read a file in its entirety. So hitting EOF happens all the time. Additionally, (2) + when you hit EOF you usually want to break out of the loop you are in + and continue immediately into the next block of code. + </p> + <p> + Usually when someone tells me they don't like exceptions they give reasons like "they make + me put try/catch blocks all over the place and it makes the code hard to read." Or "it makes + it hard to understand the flow of a program with exceptions in it." Invariably they + have been working with bodies of software that disregard the above rules regarding questions + 1 and 2. Indeed, when exceptions are used for flow control the results are horrifying. Using + exceptions for events that occur in the normal use of a software component, especially when + the events need to be dealt with near where they happen result in a spaghetti-like mess + of throw statements and try/catch blocks. Clearly, exceptions should be used judiciously. + So please, take my advice regarding questions 1 and 2 to heart. + </p> + <p> + Now let's go back to my claim that exceptions are an important part of making + a library that is hard to use wrong. But first let's be honest about one thing, + many developers don't think very hard about error handling and they similarly aren't very + careful about checking function return codes. Moreover, even the most studious of + us can easily forget to add these checks. It is also easy to forget to add + appropriate exception catch blocks. + </p> + <p> + So what is so great about exceptions then? Well, let's imagine some error just occurred + and it caused an exception to be thrown. If you forgot to setup catch blocks to deal with + the error then your program will be aborted. Not exactly a great thing. But you will, however, + be able to easily find out what exception was thrown. Additionally, exceptions typically contain a + message telling you all about the error. Moreover, + any debugger worth its + salt will be able to show you a stack trace that lets you see exactly where the exception came from. + The exception <i>forces</i> you, the user, to + be aware of this potential error and to add a catch block to deal with it. + This is where the "hard to use wrong" comes from. + </p> + <p> + Now let's imagine that we are using return codes to communicate errors to the user and the + same error occurs. If you forgot to do all your return code checking then you will + simply be unaware of the error. Maybe your program will crash right away. But more likely, it + will continue to run for a while before crashing at some random place far away from the source + of the error. You and your debugger now get to spend a few hours of quality time + together trying to figure out what went wrong. + </p> + <p> + The above considerations are why I maintain that exceptions, when used properly, contribute to + the "hard to use wrong" factor of a library. There are also other reasons to use exceptions. + They free the user from needing to clutter up code with lots of return code checking. This makes + code easier to read and let's you focus more on the algorithm you are trying to implement and less + on the bookkeeping. + </p> + <p> + Finally, it is important to note that there is a place for return codes. When you answer "no" + to questions 1 and 2, I suggest using exceptions. However, if you answer "yes" to even one + of them then I would recommend pretty much anything other than throwing an exception. In this + case error codes are often an excellent idea. + </p> + + + <p> + As an aside, it is also important that your exception classes inherit from + <a href="other.html#error">dlib::error</a> to maintain consistency with the rest of the library. + </p> + </ul> + </li> + + + <!-- **************************** --> + <anchor>9</anchor> + <li> <h3>Write portable code</h3> + <ul> + <li> <b>Don't complicate the build process </b> + <ul> <p> + One of dlib's design goals is to not require any installation + process before it can be used. A user should be able to copy + the dlib folder into their project and have it just work. + </p> + <p> + In particular, using dlib in a project should not make it difficult to + compile the project from the command line. For example, all the + example programs provided with dlib can be compiled using a single + statement on the command line. + </p> + <p> + Similarly, the user should be able to check the dlib folder into whatever + version control system they use without running into any difficulties. + The user should then be able to check out copies of the code on any + of the dlib supported platforms and have their project build without + needing to mess with anything. + </p> + </ul></li> + <li> <b>Don't make assumptions about how objects are laid out in memory. </b> + <ul> <p> + If you have been following the prohibition against messing around with + pointers then this won't even be an issue for you. Moreover, just about the only + time this should even come up is when you are casting blocks of + memory into other types or dumping the contents of memory to an I/O channel. + All of these things are highly non-portable so don't do them. + </p> + <p> + If you want a portable way to write the state of an object to an + I/O channel then I recommend you use the <a href="other.html#serialize">serialization</a> + capability in dlib. If that doesn't suit your needs then do + something else, but whatever you do don't just dump the contents of memory. + Convert your data into some portable format and then output that. + </p> + <p> + As an example of something else you might do: suppose you have a bunch of integers + you want to write to disk. Assuming all your integers are positive numbers representable + using 32 or fewer bits you could store all your numbers in + <a href="other.html#uint32">dlib::uint32</a> variables and then convert them + into either big or little endian byte order and then write them to an output stream. + You could do this using code similar to the following: + + <code_box> +dlib::<a href="other.html#byte_orderer">byte_orderer</a> bo; +... +bo.host_to_big(my_uint); +my_out_stream.write((char*)&my_uint, sizeof(my_uint)); +... </code_box> + + <p> + There are three important things to understand about this process. First, you need + to pick variables that always have the same size on all platforms. This means you + can't use <i>any</i> of the built in C++ types like int, float, double, long, etc. All + of these types have different sizes depending on your platform and even compiler settings. + So you need to use something like dlib::uint32 to obtain a type of a known size. + </p> + <p> + Second, you need to convert each thing you write out into either big or little endian byte order. + The reason for this is, again, portability. If you don't explicitly convert to one + of these byte orders then you end up writing data out using whatever byte order + is used by your current machine. If you do this then only machines that have the same + byte order as yours will be able to read in your data. If you use the dlib::byte_orderer + object this is easy. It is very type safe. In fact, you should have a hard time even getting + it to compile if you use it wrong. + </p> + <p> + The third thing you should understand is that you need to write out each of your + variables one at a time. You can't write out an entire struct in a + single ostream.write() statement because the compiler is allowed to put any + kind of padding it feels like between the fields in a struct. + </p> + <p> + You may be aware that compilers usually provide #pragma directives that allow you + to explicitly control this padding. However, if you want to submit code to dlib + you will not use this feature. Not all compilers support it in the same way and, + more importantly, not all CPU architectures are even capable of running code that + has had the padding messed with. This is because it can result in the CPU attempting + to perform what is called an "unaligned load" which many CPUs (like the SPARC) are + incapable of doing. + </p> + <p> + So in summary, convert your data into a known type with a fixed size, then convert + into a specific byte order (like big endian), then write out each variable individually. + Or you could just use <a href="other.html#serialize">serialize</a> and not worry about all + this horrible stuff. :) + </p> + + </p> + </ul> + </li> + + <li> <b> All code that calls functions that aren't in dlib or the C++ + standard library must be isolated inside the API wrappers.</b> + <ul><p> + If you want to contribute code to dlib which needs to use something that isn't + in the C++ standard then we need to introduce a new library component + in the <a href="api.html">API wrappers</a> section. The new component would + provide whatever functionality you need. This new component would have + to provide at least POSIX and win32 implementations. + </p> + <p> + It is also worth pointing out that <i>simple</i> wrappers around operating system + specific calls are usually a bad solution. This is because there are + invariably subtle, if not huge, differences between what is available on different + operating systems. + So being truly portable takes a lot of work. It involves reading everything + you can find about all the APIs needed to implement the feature on each target platform. + In many cases there will be important details that are undocumented and you will + only be able to find out about them by searching the internet for other developers + complaining about bugs in API functions X, Y, and Z. All this stuff needs to be abstracted + away to put a portable and simple interface in front of it. So this is a task + that shouldn't be taken lightly. + </p> + </ul> + </li> + </ul></li> + + + <!-- **************************** --> + <anchor>10</anchor> + <li> <h3>Library components should have regression tests</h3> + <ul> + <p> + dlib has a <a href="other.html#dlib_testing_suite">regression test suite</a> located in + the dlib/test folder. Whenever possible, library components should have tests + associated with them. GUI components get a pass since it isn't very easy to setup + automatic tests for them but pretty much everything else should have some sort + of test. + </p> + </ul> + </li> + + <!-- **************************** --> + <anchor>11</anchor> + <li> <h3>You must use the Boost Software License</h3> + <ul> + <p> + Having the library use more than one open source license is confusing + so I ask that any code contributions be licensed under the Boost Software + License. + </p> + </ul> + </li> + + + </ul> + + + <!-- **************************** --> + + + + + + </body> + + + + <!-- ************************************************************************* --> + +</doc> + diff --git a/ml/dlib/docs/docs/imaging.xml b/ml/dlib/docs/docs/imaging.xml new file mode 100644 index 00000000..2fef49e7 --- /dev/null +++ b/ml/dlib/docs/docs/imaging.xml @@ -0,0 +1,2608 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Image Processing</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + This page documents the functionality present in this library that deals with the + management and manipulation of images. One thing to note is that there is no + explicit image object. Instead, everything deals with <a href="containers.html#array2d"> + array2d</a> objects that contain various kinds of pixels or user defined <a href="dlib/image_processing/generic_image.h.html"> + generic image</a> objects. + </p> + + + <p> + <h2>Pixel Types</h2> + Most image handling routines in dlib will accept images containing any pixel type. + This is made possible by defining a traits class, <a href="#pixel_traits">pixel_traits</a>, for + each possible pixel type. This traits class enables image processing routines to determine + how to handle each kind of pixel and therefore only pixels which have a pixel_traits definition + may be used. The following list defines all the pixel types which come with pixel_traits definitions. + <ul> + <li><b>RGB</b> + <ul> There are two RGB pixel types in dlib, <a href="#rgb_pixel">rgb_pixel</a> and <a href="#bgr_pixel">bgr_pixel</a>. + Each defines a 24bit RGB pixel type. The bgr_pixel is identical to rgb_pixel except that it lays + the color channels down in memory in BGR order rather than RGB order and is therefore useful + for interfacing with other image processing tools which expect this format (e.g. <a href="#cv_image">OpenCV</a>). </ul> + </li> + <li><b>RGB Alpha</b> + <ul>The <a href="#rgb_alpha_pixel">rgb_alpha_pixel</a> is an 8bit per channel RGB pixel with an 8bit alpha channel.</ul> + </li> + <li><b>HSI</b> + <ul>The <a href="#hsi_pixel">hsi_pixel</a> is a 24bit pixel which represents a point in the Hue Saturation Intensity + (HSI) color space. </ul> + </li> + <li><b>LAB</b> + <ul>The <a href="#lab_pixel">lab_pixel</a> is a 24bit pixel which represents a point in the CIELab color space. </ul> + </li> + <li><b>Grayscale</b> + <ul>Any built in scalar type may be used as a grayscale pixel type. For example, unsigned char, int, double, etc.</ul> + </li> + </ul> + </p> + + <p> + <h2>Object Detection</h2> + If you want to create object detectors then try the + <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a> tool first. It is quite + easy to use and train and will, in many cases, give excellent results. If that + doesn't give good results then try the more powerful + <a href="ml.html#loss_mmod_">convolutional neural network</a> based detector. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + + <section> + <name>Pixels</name> + <item>rgb_pixel</item> + <item>bgr_pixel</item> + <item>rgb_alpha_pixel</item> + <item>hsi_pixel</item> + <item>lab_pixel</item> + <item>pixel_traits</item> + <item>get_pixel_intensity</item> + <item>assign_pixel</item> + <item>assign_pixel_intensity</item> + </section> + + <section> + <name>Image I/O</name> + <item>jpeg_loader</item> + <item>load_bmp</item> + <item>load_dng</item> + <item>load_image</item> + <item>load_jpeg</item> + <item>load_png</item> + <item>png_loader</item> + <item>save_bmp</item> + <item>save_dng</item> + <item>save_png</item> + <item>save_jpeg</item> + </section> + + <section> + <name>Object Detection</name> + <item>get_frontal_face_detector</item> + <item>object_detector</item> + <item>evaluate_detectors</item> + <item>full_object_detection</item> + <item>mmod_rect</item> + <item>scan_image</item> + <item>scan_image_movable_parts</item> + <item>find_points_above_thresh</item> + <item>scan_image_pyramid</item> + <item>scan_image_boxes</item> + <item>scan_fhog_pyramid</item> + <item>scan_image_custom</item> + <item>find_candidate_object_locations</item> + <item>test_box_overlap</item> + <item>remove_unobtainable_rectangles</item> + <item>setup_hashed_features</item> + <item>correlation_tracker</item> + <item nolink="true"> + <name>Scan Image Pyramid Tools</name> + <sub> + <item>compute_box_dimensions</item> + <item>create_single_box_detection_template</item> + <item>create_overlapped_2x2_detection_template</item> + <item>create_grid_detection_template</item> + + <item>determine_object_boxes</item> + <item>setup_grid_detection_templates</item> + <item>setup_grid_detection_templates_verbose</item> + </sub> + </item> + </section> + + <section> + <name>Feature Extraction</name> + <item>get_surf_points</item> + <item>shape_predictor</item> + <item nolink="true"> + <name>SURF Tools</name> + <sub> + <item>hessian_pyramid</item> + <item>compute_surf_descriptor</item> + <item>haar_x</item> + <item>haar_y</item> + <item>get_interest_points</item> + <item>interest_point</item> + <item>surf_point</item> + <item>compute_dominant_angle</item> + <item>draw_surf_points</item> + </sub> + </item> + + <item>hog_image</item> + <item>extract_fhog_features</item> + <item>fine_hog_image</item> + <item>poly_image</item> + <item>hashed_feature_image</item> + <item>binned_vector_feature_image</item> + <item>nearest_neighbor_feature_image</item> + <item>randomly_sample_image_features</item> + + <item>make_uniform_lbp_image</item> + <item>extract_histogram_descriptors</item> + <item>extract_uniform_lbp_descriptors</item> + <item>extract_highdim_face_lbp_descriptors</item> + </section> + + + <section> + <name>Edges and Thresholds</name> + <item>edge_orientation</item> + <item>hysteresis_threshold</item> + <item>sobel_edge_detector</item> + <item>suppress_non_maximum_edges</item> + <item>threshold_image</item> + <item>auto_threshold_image</item> + <item>hough_transform</item> + </section> + + <section> + <name>Morphology</name> + <item>label_connected_blobs</item> + <item>segment_image</item> + <item>binary_dilation</item> + <item>binary_erosion</item> + <item>binary_open</item> + <item>binary_close</item> + <item>binary_intersection</item> + <item>binary_union</item> + <item>binary_difference</item> + <item>binary_complement</item> + <item>skeleton</item> + </section> + + <section> + <name>Filtering</name> + <item>gaussian_blur</item> + <item>spatially_filter_image</item> + <item>spatially_filter_image_separable</item> + <item>float_spatially_filter_image_separable</item> + <item>separable_3x3_filter_block_grayscale</item> + <item>separable_3x3_filter_block_rgb</item> + <item>sum_filter</item> + <item>sum_filter_assign</item> + <item>max_filter</item> + <item>spatially_filter_image_separable_down</item> + </section> + + <section> + <name>Scaling and Rotating</name> + <item>pyramid_up</item> + <item>pyramid_down</item> + <item>pyramid_disable</item> + <item>create_tiled_pyramid</item> + + <item>interpolate_nearest_neighbor</item> + <item>interpolate_bilinear</item> + <item>interpolate_quadratic</item> + <item>transform_image</item> + <item>rotate_image</item> + <item>resize_image</item> + <item>flip_image_left_right</item> + <item>flip_image_up_down</item> + <item>add_image_left_right_flips</item> + <item>add_image_rotations</item> + <item>upsample_image_dataset</item> + <item>flip_image_dataset_left_right</item> + <item>rotate_image_dataset</item> + <item>extract_image_chips</item> + <item>random_cropper</item> + <item>jitter_image</item> + <item>sub_image</item> + </section> + + <section> + <name>Visualization</name> + <item>randomly_color_image</item> + <item>heatmap</item> + <item>jet</item> + <item>render_face_detections</item> + <item>draw_line</item> + <item>draw_solid_circle</item> + <item>draw_surf_points</item> + <item>draw_rectangle</item> + <item>tile_images</item> + <item>draw_fhog</item> + <item>fill_rect</item> + </section> + + <section> + <name>Miscellaneous</name> + <item>cv_image</item> + <item>toMat</item> + <item>assign_image</item> + <item>assign_image_scaled</item> + <item>assign_all_pixels</item> + <item>assign_border_pixels</item> + <item>equalize_histogram</item> + <item>get_histogram</item> + <item>zero_border_pixels</item> + <item>integral_image</item> + <item>integral_image_generic</item> + <item>disturb_colors</item> + <item>random_color_transform</item> + + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>hough_transform</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/hough_transform_abstract.h</spec_file> + <description> + This object is a tool for computing the line finding version of + the Hough transform given some kind of edge detection image as + input. It also allows the edge pixels to be weighted such that + higher weighted edge pixels contribute correspondingly more to + the output of the Hough transform, allowing stronger edges to + create correspondingly stronger line detections in the final + Hough transform. + </description> + <examples> + <example>hough_transform_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>skeleton</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This function computes the skeletonization of an image. That is, + given a binary image, we progressively thin the binary blobs + until only a single pixel wide skeleton of the original blobs + remains. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>disturb_colors</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/random_color_transform_abstract.h</spec_file> + <description> + Applies a random color transform an image. This is done by + creating a <a href="#random_color_transform">random_color_transform</a> with the given parameters and then + transforming each pixel in the image with the resulting transform. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>random_color_transform</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/random_color_transform_abstract.h</spec_file> + <description> + This object generates a random color balancing and gamma correction + transform. It then allows you to apply that specific transform to as many + <a href="#rgb_pixel">rgb_pixel</a> objects as you like. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>integral_image_generic</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/integral_image_abstract.h</spec_file> + <description> + This object is an alternate way of representing image data + that allows for very fast computations of sums of pixels in + rectangular regions. To use this object you load it with a + normal image and then you can use the get_sum_of_area() + member function to compute sums of pixels in a given area in + constant time. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>integral_image</name> + <file>dlib/image_transforms.h</file> + <spec_file>dlib/image_transforms/integral_image_abstract.h</spec_file> + <description> + This is a specialization of the <a href="#integral_image_generic">integral_image_generic</a> + template for the case where sums of pixel values should be represented with + longs. E.g. if you use 8bit pixels in your original images then this is + the appropriate kind of integral image to use with them. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>haar_x</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/integral_image_abstract.h</spec_file> + <description> + This is a function that operates on an <a href="#integral_image">integral_image</a> + and allows you to compute the response of a Haar wavelet oriented along + the X axis. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>haar_y</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/integral_image_abstract.h</spec_file> + <description> + This is a function that operates on an <a href="#integral_image">integral_image</a> + and allows you to compute the response of a Haar wavelet oriented along + the Y axis. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>draw_surf_points</name> + <file>dlib/image_keypoint/draw_surf_points.h</file> + <spec_file link="true">dlib/image_keypoint/draw_surf_points_abstract.h</spec_file> + <description> + This routine adds a bunch of <a href="#surf_point">surf_point</a> objects onto + an <a href="dlib/gui_widgets/widgets_abstract.h.html#image_window">image_window</a> + object so they can be visualized. + </description> + <examples> + <example>surf_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compute_dominant_angle</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file> + <description> + Computes and returns the dominant angle (i.e. the angle of the dominant gradient) + at a given point and scale in an image. This function is part of the + main processing of the SURF algorithm. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_surf_points</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file> + <description> + This function runs the complete SURF algorithm on an input image and + returns the points it found. For a description of what exactly + the SURF algorithm does you should read the following paper: + <blockquote> + SURF: Speeded Up Robust Features + By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool + </blockquote> + <p> + Also note that there are numerous flavors of the SURF algorithm + you can put together using the functions in dlib. The get_surf_points() + function is just an example of one way you might do so. + </p> + </description> + <examples> + <example>surf_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>shape_predictor</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/shape_predictor_abstract.h</spec_file> + <description> + This object is a tool that takes in an image region containing some object + and outputs a set of point locations that define the pose of the + object. The classic example of this is human face pose prediction, where + you take an image of a human face as input and are expected to identify the + locations of important facial landmarks such as the corners of the mouth + and eyes, tip of the nose, and so forth. For example, here is the output + of dlib's <a href="face_landmark_detection_ex.cpp.html">68-face-landmark shape_predictor</a> on an image from the HELEN dataset: <br/><br/> + + <img src='face_landmarking_example.png'/> + <br/><br/> + + To create useful instantiations of this object you need to use the + <a href="ml.html#shape_predictor_trainer">shape_predictor_trainer</a> object to train a + shape_predictor using a set of training images, each annotated with shapes you want to predict. + To do this, the shape_predictor_trainer uses the state-of-the-art method from the + paper: + <blockquote> + One Millisecond Face Alignment with an Ensemble of Regression Trees + by Vahid Kazemi and Josephine Sullivan, CVPR 2014 + </blockquote> + </description> + <examples> + <example>face_landmark_detection_ex.cpp.html</example> + <example>train_shape_predictor_ex.cpp.html</example> + <example>webcam_face_pose_ex.cpp.html</example> + + <example>train_shape_predictor.py.html</example> + <example>face_landmark_detection.py.html</example> + <example>face_alignment.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compute_surf_descriptor</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file> + <description> + Computes the 64 dimensional SURF descriptor vector of a box centered + at a given center point, tilted at a given angle, and sized according to + a given scale. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hog_image</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/hog_abstract.h</spec_file> + <description> + This object is a tool for performing the image feature extraction algorithm + described in the following paper: + <blockquote> + Histograms of Oriented Gradients for Human Detection + by Navneet Dalal and Bill Triggs + </blockquote> + </description> + <examples> + <example>object_detector_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>extract_fhog_features</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/fhog_abstract.h</spec_file> + <description> + This function implements the HOG feature extraction method described in + the paper: + <blockquote> + Object Detection with Discriminatively Trained Part Based Models by + P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan + in IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, Sep. 2010 + </blockquote> + This means that it takes an input image and outputs Felzenszwalb's + 31 dimensional version of HOG features. + </description> + <examples> + <example>fhog_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>fine_hog_image</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/fine_hog_image_abstract.h</spec_file> + <description> + This object is a version of the <a href="#hog_image">hog_image</a> that + allows you to extract HOG features at a finer resolution. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>poly_image</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/poly_image_abstract.h</spec_file> + <description> + This object is a tool for extracting local feature descriptors from an image. + In particular, it fits polynomials to local pixel patches and + allows you to query the coefficients of these polynomials. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hashed_feature_image</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/hashed_feature_image_abstract.h</spec_file> + <description> + This object is a tool for performing image feature extraction. In + particular, it wraps another image feature extractor and converts + the wrapped image feature vectors into sparse indicator vectors. It does + this by hashing each feature vector and then returns a new vector + which is zero everywhere except for the position determined by the + hash. + + <br/><br/> + The following feature extractors can be wrapped by the hashed_feature_image: + <ul style="margin-top:0em"> + <li><a href="#hog_image">hog_image</a></li> + <li><a href="#fine_hog_image">fine_hog_image</a></li> + <li><a href="#poly_image">poly_image</a></li> + </ul> + </description> + <examples> + <example>object_detector_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binned_vector_feature_image</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/binned_vector_feature_image_abstract.h</spec_file> + <description> + This object is a tool for performing image feature extraction. In + particular, it wraps another image feature extractor and converts the + wrapped image feature vectors into a high dimensional sparse vector. For + example, if the lower level feature extractor outputs the vector [3,4,5] + and this vector is hashed into the second bin of four bins then the output + sparse vector is: + <blockquote> + [0,0,0,0, 3,4,5,1, 0,0,0,0, 0,0,0,0]. + </blockquote> + That is, the output vector has a dimensionality that is equal to the number + of hash bins times the dimensionality of the lower level vector plus one. + The value in the extra dimension concatenated onto the end of the vector is + always a constant value of of 1 and serves as a bias value. This means + that, if there are N hash bins, these vectors are capable of representing N + different linear functions, each operating on the vectors that fall into + their corresponding hash bin. + + <br/><br/> + The following feature extractors can be wrapped by the binned_vector_feature_image: + <ul style="margin-top:0em"> + <li><a href="#hog_image">hog_image</a></li> + <li><a href="#fine_hog_image">fine_hog_image</a></li> + <li><a href="#poly_image">poly_image</a></li> + </ul> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>nearest_neighbor_feature_image</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/nearest_neighbor_feature_image_abstract.h</spec_file> + <description> + This object is a tool for performing image feature extraction. In + particular, it wraps another image feature extractor and converts + the wrapped image feature vectors into sparse indicator vectors. It does + this by finding the nearest neighbor for each feature vector and returning an + indicator vector that is zero everywhere except for the position indicated by + the nearest neighbor. + + <br/><br/> + The following feature extractors can be wrapped by the nearest_neighbor_feature_image: + <ul style="margin-top:0em"> + <li><a href="#hog_image">hog_image</a></li> + <li><a href="#fine_hog_image">fine_hog_image</a></li> + <li><a href="#poly_image">poly_image</a></li> + </ul> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hessian_pyramid</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/hessian_pyramid_abstract.h</spec_file> + <description> + This object represents an image pyramid where each level in the + pyramid holds determinants of Hessian matrices for the original + input image. This object can be used to find stable interest + points in an image. + + <br/><br/> + This object is an implementation of the fast Hessian pyramid + as described in the paper: + <blockquote> + SURF: Speeded Up Robust Features + By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool + </blockquote> + + This implementation was also influenced by the very well documented + OpenSURF library and its corresponding description of how the fast + Hessian algorithm functions: + <blockquote>Notes on the OpenSURF Library by Christopher Evans</blockquote> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_interest_points</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/hessian_pyramid_abstract.h</spec_file> + <description> + This function extracts interest points from a <a href="#hessian_pyramid">hessian_pyramid</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>interest_point</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/hessian_pyramid_abstract.h</spec_file> + <description> + This is a simple struct used to represent the interest points returned + by the <a href="#get_interest_points">get_interest_points</a> function. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>surf_point</name> + <file>dlib/image_keypoint.h</file> + <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file> + <description> + This is a simple struct used to represent the SURF points returned + by the <a href="#get_surf_points">get_surf_points</a> function. + </description> + <examples> + <example>surf_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pixel_traits</name> + <file>dlib/pixel.h</file> + <spec_file>dlib/pixel.h</spec_file> + <description> + As the name implies, this is a traits class for pixel types. It allows you + to determine what sort of pixel type you are dealing with. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hsi_pixel</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + This is a simple struct that represents a HSI colored graphical pixel. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>lab_pixel</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + This is a simple struct that represents a CIELab colored graphical pixel. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rgb_alpha_pixel</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + This is a simple struct that represents an RGB colored graphical pixel with an + alpha channel. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rgb_pixel</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + This is a simple struct that represents an RGB colored graphical pixel. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bgr_pixel</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + This is a simple struct that represents a BGR colored graphical pixel. + <p> + The difference between this object and the <a href="#rgb_pixel">rgb_pixel</a> + is just that this struct lays its pixels down in memory in BGR order rather + than RGB order. You only care about this if you are doing something like + using the <a href="#cv_image">cv_image</a> object to map an OpenCV image + into a more object oriented form. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cv_image</name> + <file>dlib/opencv.h</file> + <spec_file link="true">dlib/opencv/cv_image_abstract.h</spec_file> + <description> + This object is meant to be used as a simple wrapper around the OpenCV + IplImage struct or Mat object. Using this class template you can turn + an OpenCV image into something that looks like a normal dlib style + image object. + + <p> + So you should be able to use cv_image objects with many of the image + processing functions in dlib as well as the GUI tools for displaying + images on the screen. + </p> + + <p> + Note that you can do the reverse conversion, from dlib to OpenCV, + using the <a href="#toMat">toMat</a> routine. + </p> + </description> + <examples> + <example>webcam_face_pose_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>toMat</name> + <file>dlib/opencv.h</file> + <spec_file link="true">dlib/opencv/to_open_cv_abstract.h</spec_file> + <description> + This routine converts a dlib style image into an instance of OpenCV's cv::Mat object. + This is done by setting up the Mat object to point to the same memory as the dlib image. + <p> + Note that you can do the reverse conversion, from OpenCV to dlib, + using the <a href="#cv_image">cv_image</a> object. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>heatmap</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/colormaps_abstract.h</spec_file> + <description> + Converts a grayscale image into a heatmap. This is useful if you want + to display a grayscale image with more than 256 values. In particular, + this function uses the following color mapping: + <br/><img src="heatmap.png"/> + </description> + <examples> + <example>image_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>jet</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/colormaps_abstract.h</spec_file> + <description> + Converts a grayscale image into an image using the jet color + scheme. This is useful if you want to display a grayscale image + with more than 256 values. In particular, this function uses the + following color mapping: + <br/><img src="jet.png"/> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>randomly_color_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/colormaps_abstract.h</spec_file> + <description> + Randomly generates a mapping from gray level pixel values + to the RGB pixel space and then uses this mapping to create + a colored version an image. + <p> + This function is useful for displaying the results of some image + segmentation. For example, the output of <a href="#label_connected_blobs">label_connected_blobs</a> + or <a href="#segment_image">segment_image</a>. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assign_pixel</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + assign_pixel() is a templated function that can assign any pixel type to another pixel type. + It will perform whatever conversion is necessary to make the assignment work. (E.g. color to + grayscale conversion) + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assign_pixel_intensity</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + assign_pixel_intensity() is a templated function that can change the + intensity of a pixel. So if the pixel in question is a grayscale pixel + then it simply assigns that pixel the given value. However, if the + pixel is not a grayscale pixel then it converts the pixel to the + HSI color space and sets the I channel to the given intensity + and then converts this HSI value back to the original pixel's + color space. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_pixel_intensity</name> + <file>dlib/pixel.h</file> + <spec_file link="true">dlib/pixel.h</spec_file> + <description> + get_pixel_intensity() is a templated function that + returns the grayscale intensity of a pixel. If the pixel isn't a grayscale + pixel then it converts the pixel to grayscale and returns that value. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>png_loader</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/png_loader_abstract.h</spec_file> + <description> + This object loads a Portable Network Graphics (PNG) image file into + an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>. + <p> + Note that you must define DLIB_PNG_SUPPORT if you want to use this object. You + must also set your build environment to link to the libpng library. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>jpeg_loader</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/jpeg_loader_abstract.h</spec_file> + <description> + This object loads a JPEG image file into + an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>. + <p> + Note that you must define DLIB_JPEG_SUPPORT if you want to use this object. You + must also set your build environment to link to the libjpeg library. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_jpeg</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/jpeg_loader_abstract.h</spec_file> + <description> + This function loads a JPEG image file into + an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>. + <p> + Note that you must define DLIB_JPEG_SUPPORT if you want to use this object. You + must also set your build environment to link to the libjpeg library. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_dng</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/image_loader_abstract.h</spec_file> + <description> + This global function loads a dlib DNG file (a lossless compressed image format) into + an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>save_dng</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_saver/image_saver_abstract.h</spec_file> + <description> + This global function saves an image as a dlib DNG file (a lossless + compressed image format). + <p> + This routine can save images containing any type of pixel. However, the DNG format + can natively store only the following pixel types: <b>rgb_pixel</b>, <b>hsi_pixel</b>, + <b>rgb_alpha_pixel</b>, <b>uint8</b>, <b>uint16</b>, <b>float</b>, and <b>double</b>. + All other pixel types will be converted + into one of these types as appropriate before being saved to disk. + </p> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>save_png</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_saver/save_png_abstract.h</spec_file> + <description> + This global function writes an image to disk as a PNG (Portable Network Graphics) file. + <p> + Note that you must define DLIB_PNG_SUPPORT if you want to use this function. You + must also set your build environment to link to the libpng library. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. + </p> + <p> + This routine can save images containing any type of pixel. However, save_png() can + only natively store the following pixel types: <b>rgb_pixel</b>, + <b>rgb_alpha_pixel</b>, <b>uint8</b>, and <b>uint16</b>. All other pixel + types will be converted into one of these types as appropriate before being + saved to disk. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>save_jpeg</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_saver/save_jpeg_abstract.h</spec_file> + <description> + This global function writes an image to disk as a JPEG file. + <p> + Note that you must define DLIB_JPEG_SUPPORT if you want to use this function. You + must also set your build environment to link to the libjpeg library. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. + </p> + <p> + This routine can save images containing any type of pixel. However, save_jpeg() can + only natively store the following pixel types: <b>rgb_pixel</b> + and <b>uint8</b>. All other pixel types will be converted into + one of these types as appropriate before being saved to disk. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_image</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/load_image_abstract.h</spec_file> + <description> + This global function takes a file name, looks at its extension, and + then loads it into an <a href="containers.html#array2d">array2d</a> of + <a href="dlib/pixel.h.html">pixels</a> using the appropriate image + loading routine. The supported types are BMP, PNG, JPEG, GIF, and the dlib DNG file format. + + <p> + Note that you can only load PNG, JPEG, and GIF files if you link against + libpng, libjpeg, and libgif respectively. You will also need to #define + DLIB_PNG_SUPPORT, DLIB_JPEG_SUPPORT, and DLIB_GIF_SUPPORT. Or use CMake and + it will do all this for you. + </p> + </description> + + <examples> + <example>image_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_bmp</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/image_loader_abstract.h</spec_file> + <description> + This global function loads a MS Windows BMP file into an <a href="containers.html#array2d">array2d</a> of + <a href="dlib/pixel.h.html">pixels</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_png</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_loader/png_loader_abstract.h</spec_file> + <description> + This function loads a Portable Network Graphics (PNG) image file into + an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>. + <p> + Note that you must define DLIB_PNG_SUPPORT if you want to use this object. You + must also set your build environment to link to the libpng library. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>save_bmp</name> + <file>dlib/image_io.h</file> + <spec_file link="true">dlib/image_saver/image_saver_abstract.h</spec_file> + <description> + This global function saves an image as a MS Windows BMP file. + + <p> + This routine can save images containing any type of pixel. However, it will + convert all color pixels into <b>rgb_pixel</b> and grayscale pixels into + <b>uint8</b> type before saving to disk. + </p> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>draw_line</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file> + <description> + This global function draws a line on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>draw_solid_circle</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file> + <description> + This global function draws a solid circle on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>render_face_detections</name> + <file>dlib/image_processing/render_face_detections.h</file> + <spec_file link="true">dlib/image_processing/render_face_detections_abstract.h</spec_file> + <description> + This function takes a set of <a href="#full_object_detection">full_object_detections</a> + which represent human faces annotated with 68 facial landmarks (according to the iBUG 300-W + scheme) and converts them into a form suitable for display on an + <a href="dlib/gui_widgets/widgets_abstract.h.html#image_window">image_window</a>. + + <p> + For example, it will take the output of a <a href="#shape_predictor">shape_predictor</a> + that uses this facial landmarking scheme and will produce visualizations like this: + </p> + <img src='face_landmarking_example.png'/> + + </description> + <examples> + <example>face_landmark_detection_ex.cpp.html</example> + <example>webcam_face_pose_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>draw_rectangle</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file> + <description> + This global function draws a rectangle on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>tile_images</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file> + <description> + This function takes an array of images and tiles them into a single large + square image and returns this new big tiled image. Therefore, it is a useful + method to visualize many small images at once. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>draw_fhog</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/fhog_abstract.h</spec_file> + <description> + This function takes a FHOG feature map which was created by + <a href="#extract_fhog_features">extract_fhog_features</a> and + converts it into an image suitable for display on the screen. In + particular, we draw all the hog cells into a grayscale image in a + way that shows the magnitude and orientation of the gradient + energy in each cell. + </description> + <examples> + <example>fhog_ex.cpp.html</example> + <example>fhog_object_detector_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>fill_rect</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file> + <description> + This global function draws a solid rectangle on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assign_border_pixels</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file> + <description> + This global function assigns all the pixels in the border of an image to + a specific value. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>assign_all_pixels</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file> + <description> + This global function assigns all the pixels in an image a specific value. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assign_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file> + <description> + This global function copies one image into another and performs any + necessary color space conversions to make it work right. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assign_image_scaled</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file> + <description> + This global function copies one image into another and performs any + necessary color space conversions to make it work right. Additionally, + if the dynamic range of the source image is too big to fit into the destination image + then it will attempt to perform the appropriate scaling. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_histogram</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/equalize_histogram_abstract.h</spec_file> + <description> + This global function computes an image's histogram and returns it in the + form of a column or row <a href="linear_algebra.html#matrix">matrix</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>edge_orientation</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/edge_detector_abstract.h</spec_file> + <description> + This global function takes horizontal and vertical gradient magnitude + values and returns the orientation of the gradient. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>equalize_histogram</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/equalize_histogram_abstract.h</spec_file> + <description> + This global function performs histogram equalization on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>hysteresis_threshold</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/thresholding_abstract.h</spec_file> + <description> + This global function performs hysteresis thresholding on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sobel_edge_detector</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/edge_detector_abstract.h</spec_file> + <description> + This global function performs spatial filtering on an image using the + sobel edge detection filters. + </description> + + <examples> + <example>image_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>suppress_non_maximum_edges</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/edge_detector_abstract.h</spec_file> + <description> + This global function performs non-maximum suppression on a gradient + image. + </description> + + <examples> + <example>image_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>zero_border_pixels</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file> + <description> + This global function zeros the pixels on the border of an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>spatially_filter_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This global function performs spatial filtering on an image with a user + supplied filter. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>gaussian_blur</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This global function blurs an image by convolving it with a Gaussian filter. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>spatially_filter_image_separable</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This global function performs spatial filtering on an image with a user + supplied separable filter. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>float_spatially_filter_image_separable</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This global function performs spatial filtering on an image with a user + supplied separable filter. It is optimized to work only on float valued + images with float valued filters. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>spatially_filter_image_separable_down</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This global function performs spatial filtering on an image with a user + supplied separable filter. Additionally, it produces a downsampled + output. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>max_filter</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This function slides a rectangle over an input image and outputs a new + image which contains the maximum valued pixel found inside the rectangle at each + position in the input image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sum_filter</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This function slides a rectangle over an input image and adds the sum + of pixel values in each rectangle location to another image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sum_filter_assign</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This function slides a rectangle over an input image and outputs a new + image which contains the sum of pixels inside the rectangle at each + position in the input image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>separable_3x3_filter_block_grayscale</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This routine filters part of an image with a user supplied 3x3 separable filter. + The output is a grayscale sub-image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>separable_3x3_filter_block_rgb</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file> + <description> + This routine filters part of an image with a user supplied 3x3 separable filter. + The output is a RGB sub-image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_tiled_pyramid</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/image_pyramid_abstract.h</spec_file> + <description> + This function creates an image pyramid and packs the entire pyramid into + one big image. It does this by tiling the different pyramid layers together + and outputting the result. Here is an example: + <br/> + <img src='tiled_pyramid_example.jpg'/> + <br/> + + Also, you can use the + <a href="dlib/image_transforms/image_pyramid_abstract.h.html#image_to_tiled_pyramid">image_to_tiled_pyramid()</a> + and + <a href="dlib/image_transforms/image_pyramid_abstract.h.html#image_to_tiled_pyramid">tiled_pyramid_to_image()</a> routines + to convert between the input image coordinate space and the tiled pyramid + coordinate space. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pyramid_down</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/image_pyramid_abstract.h</spec_file> + <description> + This is a simple function object to help create image pyramids. It + downsamples an image by a ratio of N to N-1 where N is supplied by the + user as a template argument. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pyramid_disable</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/image_pyramid_abstract.h</spec_file> + <description> + This object downsamples an image at a ratio of infinity to 1. That + means it always outputs an image of size zero. This is useful because + it can be supplied to routines which take a pyramid_down function object + and it will essentially disable pyramid processing. This way, a pyramid + oriented function can be turned into a regular routine which processes + just the original undownsampled image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>interpolate_nearest_neighbor</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This object is a tool for performing nearest neighbor interpolation + on an image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>interpolate_bilinear</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This object is a tool for performing bilinear interpolation + on an image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>interpolate_quadratic</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This object is a tool for performing quadratic interpolation + on an image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>transform_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine is a tool for transforming images using some kind of point mapping + function (e.g. <a href="linear_algebra.html#point_transform_affine">point_transform_affine</a>) + and pixel interpolation tool (e.g. <a href="#interpolate_quadratic">interpolate_quadratic</a>). + An example application of this routine is for image rotation. Indeed, it is how + <a href="#rotate_image">rotate_image</a> is implemented. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotate_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This is a routine for rotating an image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pyramid_up</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine upsamples an image. In particular, it takes a + <a href="#pyramid_down">pyramid_down</a> object (or an object with a + compatible interface) as an argument and performs an upsampling + which is the inverse of the supplied pyramid_down object. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>resize_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This is a routine capable of resizing or stretching an image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>extract_image_chips</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This function extracts "chips" from an image. That is, it takes a list of + rectangular sub-windows (i.e. chips) within an image and extracts those + sub-windows, storing each into its own image. It also allows the user to + specify the scale and rotation for the chip. + </description> + <examples> + <example>face_landmark_detection_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>random_cropper</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/random_cropper_abstract.h</spec_file> + <description> + This object is a tool for extracting random crops of objects from a set of + images. The crops are randomly jittered in scale, translation, and + rotation but more or less centered on objects specified by <a href="#mmod_rect">mmod_rect</a> + objects. + </description> + <examples> + <example>random_cropper_ex.cpp.html</example> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_find_cars_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>jitter_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + Randomly jitters an image by slightly rotating, scaling, and translating it. + There is also a 50% chance it will be mirrored left to right. + </description> + <examples> + <example>dnn_metric_learning_on_images_ex.cpp.html</example> + <example>dnn_face_recognition_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sub_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This function returns a lightweight sub-image of another image. In particular, + the returned sub-image simply holds a pointer to the original image, meaning there + is no overhead for using or creating the sub-image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>add_image_left_right_flips</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine takes a set of images and bounding boxes within those + images and doubles the size of the dataset by adding left/right + flipped copies of each image as well as the corresponding bounding + boxes. Therefore, this function is useful if you are training and + object detector and your objects have a left/right symmetry. + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>add_image_rotations</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine takes a set of images and bounding boxes within those images and + grows the dataset by computing many different rotations of each image. It will + also adjust the positions of the bounding boxes so that they still fall on the + same objects in each rotated image. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotate_image_dataset</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine takes a set of images and bounding boxes within those + images and rotates the entire dataset by a user specified angle. + This means that all images are rotated and the bounding boxes are adjusted + so that they still sit on top of the same visual objects in the new rotated images. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>flip_image_dataset_left_right</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine takes a set of images and bounding boxes within those images and + mirrors the entire dataset left to right. This means that all images are + flipped left to right and the bounding boxes are adjusted so that they still + sit on top of the same visual objects in the new flipped images. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>upsample_image_dataset</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine takes a set of images and bounding boxes within those images and + upsamples the entire dataset. This means that all images are upsampled and the + bounding boxes are adjusted so that they still sit on top of the same visual + objects in the new images. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>flip_image_left_right</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This is a routine which can flip an image from left to right. (e.g. as + if viewed through a mirror). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>flip_image_up_down</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file> + <description> + This routine flips an image upside down. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>auto_threshold_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/thresholding_abstract.h</spec_file> + <description> + This global function performs a simple binary thresholding on an image. + Instead of taking a user supplied threshold + it computes one from the image using k-means clustering. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>threshold_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/thresholding_abstract.h</spec_file> + <description> + This global function performs a simple binary thresholding on an image with a user + supplied threshold. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>label_connected_blobs</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/label_connected_blobs_abstract.h</spec_file> + <description> + This function labels each of the connected blobs in an image with a unique integer label. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>segment_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/segment_image_abstract.h</spec_file> + <description> + Attempts to segment an image into regions which have some visual consistency to them. + In particular, this function implements the algorithm described in the paper: + <blockquote> + Efficient Graph-Based Image Segmentation by Felzenszwalb and Huttenlocher. + </blockquote> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_candidate_object_locations</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/segment_image_abstract.h</spec_file> + <description> + This function takes an input image and generates a set of candidate + rectangles which are expected to bound any objects in the image. It does + this by running a version of the <a href="#segment_image">segment_image</a> routine on the image and + then reports rectangles containing each of the segments as well as rectangles + containing unions of adjacent segments. The basic idea is described in the + paper: + <blockquote> + Segmentation as Selective Search for Object Recognition by Koen E. A. van de Sande, et al. + </blockquote> + Note that this function deviates from what is described in the paper slightly. + See the code for details. + </description> + <examples> + <example>find_candidate_object_locations.py.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_dilation</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function performs the morphological operation of dilation on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_erosion</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function performs the morphological operation of erosion on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_open</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function performs a morphological opening on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_close</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function performs a morphological closing on an image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_intersection</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function computes the intersection of two binary images. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_union</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function computes the union of two binary images. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_difference</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function computes the difference of two binary images. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>binary_complement</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file> + <description> + This global function computes the complement of a binary image. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>scan_image</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_abstract.h</spec_file> + <description> + This global function is a tool for sliding a set of rectangles + over an image space and finding the locations where the sum of pixels in + the rectangles exceeds a threshold. It is useful for implementing + certain kinds of sliding window classifiers. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>scan_image_movable_parts</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_abstract.h</spec_file> + <description> + This global function is a tool for sliding a set of rectangles + over an image space and finding the locations where the sum of pixels in + the rectangles exceeds a threshold. It is useful for implementing + certain kinds of sliding window classifiers. The behavior of this + routine is similar to <a href="#scan_image">scan_image</a> except that + it can also handle movable parts in addition to rigidly placed parts + within the sliding window. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_points_above_thresh</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_abstract.h</spec_file> + <description> + This routine finds all points in an image with a pixel value above a + threshold. It also has the ability to produce an efficient random + subsample of such points if the number of them is very large. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>scan_image_pyramid</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_pyramid_abstract.h</spec_file> + <description> + This object is a tool for running a sliding window classifier over + an image pyramid. This object can also be understood as a general + tool for implementing the spatial pyramid models described in the paper: + <blockquote> + Beyond Bags of Features: Spatial Pyramid Matching for Recognizing + Natural Scene Categories by Svetlana Lazebnik, Cordelia Schmid, + and Jean Ponce + </blockquote> + It also includes the ability to represent movable part models. + + <br/><br/> + The following feature extractors can be used with the scan_image_pyramid object: + <ul style="margin-top:0em"> + <li><a href="#hashed_feature_image">hashed_feature_image</a></li> + <li><a href="#binned_vector_feature_image">binned_vector_feature_image</a></li> + <li><a href="#nearest_neighbor_feature_image">nearest_neighbor_feature_image</a></li> + </ul> + </description> + <examples> + <example>object_detector_ex.cpp.html</example> + <example>object_detector_advanced_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>scan_fhog_pyramid</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_fhog_pyramid_abstract.h</spec_file> + <description> + + This object is a tool for running a fixed sized sliding window classifier + over an image pyramid. In particular, it slides a linear classifier over + a HOG pyramid as discussed in the paper: + <blockquote> + Histograms of Oriented Gradients for Human Detection by Navneet Dalal + and Bill Triggs, CVPR 2005 + </blockquote> + However, we augment the method slightly to use the version of HOG features + from: + <blockquote> + Object Detection with Discriminatively Trained Part Based Models by + P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan + IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, Sep. 2010 + </blockquote> + Since these HOG features have been shown to give superior performance. + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + <example>train_object_detector.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>scan_image_boxes</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_boxes_abstract.h</spec_file> + <description> + This object is a tool for running a classifier over an image with the goal + of localizing each object present. The localization is in the form of the + bounding box around each object of interest. + + <p> + Unlike the <a href="#scan_image_pyramid">scan_image_pyramid</a> object which scans a + fixed sized window over an image pyramid, the scan_image_boxes tool allows you to + define your own list of "candidate object locations" which should be evaluated. + This is simply a list of rectangle objects which might contain objects of + interest. The scan_image_boxes object will then evaluate the classifier at each + of these locations and return the subset of rectangles which appear to have + objects in them. + </p> + + This object can also be understood as a general tool for implementing the spatial + pyramid models described in the paper: + <blockquote> + Beyond Bags of Features: Spatial Pyramid Matching for Recognizing + Natural Scene Categories by Svetlana Lazebnik, Cordelia Schmid, + and Jean Ponce + </blockquote> + + <br/><br/> + The following feature extractors can be used with the scan_image_boxes object: + <ul style="margin-top:0em"> + <li><a href="#hashed_feature_image">hashed_feature_image</a></li> + <li><a href="#binned_vector_feature_image">binned_vector_feature_image</a></li> + <li><a href="#nearest_neighbor_feature_image">nearest_neighbor_feature_image</a></li> + </ul> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>scan_image_custom</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_custom_abstract.h</spec_file> + <description> + This object is a tool for running a classifier over an image with the goal + of localizing each object present. The localization is in the form of the + bounding box around each object of interest. + + <p> + Unlike the <a href="#scan_image_pyramid">scan_image_pyramid</a> + and <a href="#scan_image_boxes">scan_image_boxes</a> objects, this image + scanner delegates all the work of constructing the object feature vector to + a user supplied feature extraction object. That is, scan_image_custom + simply asks the supplied feature extractor what boxes in the image we + should investigate and then asks the feature extractor for the complete + feature vector for each box. That is, scan_image_custom does not apply any + kind of pyramiding or other higher level processing to the features coming + out of the feature extractor. That means that when you use + scan_image_custom it is completely up to you to define the feature vector + used with each image box. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>full_object_detection</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/full_object_detection_abstract.h</spec_file> + <description> + This object represents the location of an object in an image along with the + positions of each of its constituent parts. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>mmod_rect</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/full_object_detection_abstract.h</spec_file> + <description> + This is a simple struct that is used to give training data and receive detections + from the <a href="ml.html#loss_mmod_">Max-Margin Object Detection loss layer</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_frontal_face_detector</name> + <file>dlib/image_processing/frontal_face_detector.h</file> + <spec_file link="true">dlib/image_processing/frontal_face_detector_abstract.h</spec_file> + <description> + This function returns an <a href="#object_detector">object_detector</a> that is + configured to find human faces that are looking more or less towards the camera. + It is created using the <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a> + object. + </description> + <examples> + <example>face_detection_ex.cpp.html</example> + <example>face_detector.py.html</example> + <example>webcam_face_pose_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>object_detector</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/object_detector_abstract.h</spec_file> + <description> + This object is a tool for detecting the positions of objects in an image. In + particular, it is a simple container to aggregate an instance of an image + scanner object (either <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a>, + <a href="#scan_image_pyramid">scan_image_pyramid</a>, <a + href="#scan_image_boxes">scan_image_boxes</a>, or + <a href="#scan_image_custom">scan_image_custom</a>), the weight vector + needed by one of these image scanners, and finally an instance of + <a href="#test_box_overlap">test_box_overlap</a>. The test_box_overlap object + is used to perform non-max suppression on the output of the image scanner + object. + + <p> + Note that you can use the + <a href="ml.html#structural_object_detection_trainer">structural_object_detection_trainer</a> + to learn the parameters of an object_detector. See the example programs for an introduction. + </p> + + <p> + Also note that dlib contains more powerful <a + href="ml.html#loss_mmod_">CNN based object detection + tooling</a>, which will usually run slower but produce much + more general and accurate detectors. + </p> + + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + <example>face_detection_ex.cpp.html</example> + <example>object_detector_ex.cpp.html</example> + <example>object_detector_advanced_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + + <example>face_detector.py.html</example> + <example>train_object_detector.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>correlation_tracker</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/correlation_tracker_abstract.h</spec_file> + <description> + This is a tool for tracking moving objects in a video stream. You give it + the bounding box of an object in the first frame and it attempts to track the + object in the box from frame to frame. + + <p> + This tool is an implementation of the method described in the following paper: + <blockquote> + Danelljan, Martin, et al. "Accurate scale estimation for robust visual + tracking." Proceedings of the British Machine Vision Conference BMVC. 2014. + </blockquote> + </p> + </description> + <examples> + <example>video_tracking_ex.cpp.html</example> + <example>correlation_tracker.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>evaluate_detectors</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_fhog_pyramid_abstract.h</spec_file> + <description> + This function allows you to efficiently run a bunch of + <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a> based + <a href="#object_detector">object_detectors</a> + over an image. Importantly, this function is faster than running + each detector individually because it computes the HOG features + only once and then reuses them for each detector. + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_box_overlap</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/box_overlap_testing_abstract.h</spec_file> + <description> + This object is a simple function object for determining if two + <a href="linear_algebra.html#rectangle">rectangles</a> overlap. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>remove_unobtainable_rectangles</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/remove_unobtainable_rectangles_abstract.h</spec_file> + <description> + Recall that the <a href="#scan_image_pyramid">scan_image_pyramid</a> and + <a href="#scan_image_boxes">scan_image_boxes</a> objects can't produce + all possible rectangles as object detections since they only + consider a limited subset of all possible object positions. + Therefore, when training an object detector that uses these tools + you must make sure the training data does not contain any object + locations that are unobtainable by the image scanning model. + The remove_unobtainable_rectangles() routine is a tool to filter out + these unobtainable rectangles from the training. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compute_box_dimensions</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file> + <description> + This function is a tool for computing a rectangle with a particular + width/height ratio and area. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_single_box_detection_template</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file> + <description> + This function is a tool for creating a detection template usable by + the <a href="#scan_image_pyramid">scan_image_pyramid</a> object. This + particular function creates a detection template with exactly one feature + extraction region. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_overlapped_2x2_detection_template</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file> + <description> + This function is a tool for creating a detection template usable by + the <a href="#scan_image_pyramid">scan_image_pyramid</a> object. This + particular function creates a detection template with four overlapping feature + extraction regions. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>create_grid_detection_template</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file> + <description> + This function is a tool for creating a detection template usable by + the <a href="#scan_image_pyramid">scan_image_pyramid</a> object. This + particular function creates a detection template with a grid of feature + extraction regions. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>determine_object_boxes</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_pyramid_tools_abstract.h</spec_file> + <description> + The <a href="#scan_image_pyramid">scan_image_pyramid</a> object represents a sliding + window classifier system. For it to work correctly it needs to be given a set of + object boxes which define the size and shape of each sliding window and these windows + need to be able to match the sizes and shapes of targets the user wishes to detect. + Therefore, the determine_object_boxes() routine is a tool for computing a set of object boxes + which can meet this requirement. + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>setup_grid_detection_templates</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_pyramid_tools_abstract.h</spec_file> + <description> + This routine uses <a href="#determine_object_boxes">determine_object_boxes</a> to obtain a set of + object boxes and then adds them to a <a href="#scan_image_pyramid">scan_image_pyramid</a> object + as detection templates. It also uses <a href="#create_grid_detection_template">create_grid_detection_template</a> + to create each feature extraction region. Therefore, the detection templates will extract + features from a regular grid inside each object box. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>setup_grid_detection_templates_verbose</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/scan_image_pyramid_tools_abstract.h</spec_file> + <description> + This function is identical to <a href="#setup_grid_detection_templates">setup_grid_detection_templates</a> + except that it also outputs information regarding the selected detection templates + to standard out. + </description> + <examples> + <example>object_detector_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>setup_hashed_features</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/setup_hashed_features_abstract.h</spec_file> + <description> + This is a tool for configuring the <a href="#hashed_feature_image">hashed_feature_image</a> + or <a href="#binned_vector_feature_image">binned_vector_feature_image</a> object + with a random <a href="algorithms.html#projection_hash">projection hash</a>. + </description> + <examples> + <example>object_detector_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>randomly_sample_image_features</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/image_feature_sampling_abstract.h</spec_file> + <description> + Given a feature extractor such as the <a href="#hog_image">hog_image</a>, + this routine selects a random subsample of local image feature vectors + from a set of images. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>make_uniform_lbp_image</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file> + <description> + This function extracts the uniform local-binary-pattern feature at every pixel + of an image and stores the output in a new image object. + We use the idea of uniform LBPs from the paper: + <blockquote> + Face Description with Local Binary Patterns: Application to Face Recognition + by Ahonen, Hadid, and Pietikainen. + </blockquote> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>extract_histogram_descriptors</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file> + <description> + This function extracts histograms of pixel values from a set of windows in an + image and returns the histograms. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>extract_uniform_lbp_descriptors</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file> + <description> + Extracts histograms of uniform local-binary-patterns from an image. The + histograms are from densely tiled windows that do not overlap and cover all + of the image. + We use the idea of uniform LBPs from the paper: + <blockquote> + Face Description with Local Binary Patterns: Application to Face Recognition + by Ahonen, Hadid, and Pietikainen. + </blockquote> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>extract_highdim_face_lbp_descriptors</name> + <file>dlib/image_transforms.h</file> + <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file> + <description> + This function extracts the high-dimensional LBP feature described in the + paper: + <blockquote> + Blessing of Dimensionality: High-dimensional Feature and Its Efficient + Compression for Face Verification by Dong Chen, Xudong Cao, Fang Wen, and + Jian Sun + </blockquote> + </description> + </component> + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> + diff --git a/ml/dlib/docs/docs/index.xml b/ml/dlib/docs/docs/index.xml new file mode 100644 index 00000000..0a4b7fa5 --- /dev/null +++ b/ml/dlib/docs/docs/index.xml @@ -0,0 +1,226 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + + <!-- ************************************************************************* --> + + <body> + + <p> + Dlib is a modern C++ toolkit containing machine learning algorithms and + tools for creating complex software in C++ to solve real world problems. + It is used in both industry and academia in a wide range of domains + including robotics, embedded devices, mobile phones, and large high + performance computing environments. Dlib's <a href="license.html">open source licensing</a> + allows you to use it in any application, free of charge. + </p> + + <p> + To follow or participate in the development of dlib subscribe to <a href="https://github.com/davisking/dlib">dlib on github</a>. + Also be sure to read the <a href="howto_contribute.html">how to contribute</a> page if you intend to + submit code to the project. + </p> + + <br/> + + <p> + <h2>Major Features</h2> + <ul> + <li><b>Documentation</b> + <ul> + <li>Unlike a lot of open source projects, this one provides complete and precise + documentation for every class and function. There are also debugging modes that check the + documented preconditions for functions. When this is enabled it will catch the vast majority of + bugs caused by calling functions incorrectly or using objects in an incorrect manner. + </li> + <li>Lots of example programs are provided</li> + <li><i>I consider the documentation to be the most important part of the library</i>. So if you find anything + that isn't documented, isn't clear, or has out of date documentation, tell me and I will fix it. + </li> + </ul> + </li> + + <li><b>High Quality Portable Code</b> + <ul> + <li>Good unit test coverage. The ratio of unit test lines of code to library lines of + code is about 1 to 4.</li> + <li>The library is tested regularly on MS Windows, Linux, and Mac OS X systems. However, it should + work on any POSIX system and has been used on Solaris, HPUX, and the BSDs.</li> + <li>No other packages are required to use the library. Only APIs that are + provided by an out of the box OS are needed. </li> + <li>There is no installation or configure step needed before you can use the library. See the + <a href="compile.html">How to compile</a> page for details.</li> + <li>All operating system specific code is isolated inside the OS abstraction layers which are + kept as small as possible. The rest of the library is either layered on top of the OS + abstraction layers or is pure ISO standard C++. </li> + </ul> + </li> + <li><b>Machine Learning Algorithms</b> + <ul> + <li><a href="ml.html#add_layer">Deep Learning</a></li> + <li>Conventional SMO based Support Vector Machines for <a href="ml.html#svm_nu_trainer">classification</a> + and <a href="ml.html#svr_trainer">regression</a> </li> + <li>Reduced-rank methods for large-scale <a href="ml.html#svm_c_ekm_trainer">classification</a> + and <a href="ml.html#krr_trainer">regression</a></li> + <li>Relevance vector machines for <a href="ml.html#rvm_trainer">classification</a> + and <a href="ml.html#rvm_regression_trainer">regression</a> </li> + <li>General purpose <a href="ml.html#one_vs_one_trainer">multiclass classification</a> tools</li> + <li>A <a href="ml.html#svm_multiclass_linear_trainer">Multiclass SVM</a></li> + <li>A tool for solving the optimization problem associated with + <a href="ml.html#structural_svm_problem">structural support vector machines</a>. </li> + <li>Structural SVM tools for <a href="ml.html#structural_sequence_labeling_trainer">sequence labeling</a> </li> + <li>Structural SVM tools for solving <a href="ml.html#structural_assignment_trainer">assignment problems</a> </li> + <li>Structural SVM tools for <a href="ml.html#structural_object_detection_trainer">object detection</a> in images as well as more powerful (but slower) <a href="ml.html#loss_mmod_">deep learning tools for object detection</a>. </li> + <li>Structural SVM tools for <a href="ml.html#structural_graph_labeling_trainer">labeling nodes</a> in graphs </li> + <li>A large-scale <a href="ml.html#svm_rank_trainer">SVM-Rank</a> implementation</li> + <li>An online <a href="ml.html#krls">kernel RLS regression</a> algorithm</li> + <li>An online <a href="ml.html#svm_pegasos">SVM classification</a> algorithm</li> + <li><a href="ml.html#vector_normalizer_frobmetric">Semidefinite Metric Learning</a></li> + <li>An online kernelized <a href="ml.html#kcentroid">centroid estimator</a>/novelty detector and + offline support vector <a href="ml.html#svm_one_class_trainer">one-class classification</a></li> + <li>Clustering algorithms: <a href="ml.html#find_clusters_using_kmeans">linear</a> + or <a href="ml.html#kkmeans">kernel k-means</a>, + <a href="ml.html#chinese_whispers">Chinese Whispers</a>, and + <a href="ml.html#newman_cluster">Newman clustering</a>. </li> + <li><a href="ml.html#rbf_network_trainer">Radial Basis Function Networks</a></li> + <li><a href="ml.html#mlp">Multi layer perceptrons</a> </li> + </ul> + </li> + + <li><b>Numerical Algorithms</b> + <ul> + <li>A fast <a href="linear_algebra.html#matrix">matrix</a> object implemented using the expression + templates technique and capable of using BLAS and LAPACK libraries when available.</li> + <li>Numerous linear algebra and mathematical operations are defined for the matrix object such as the + <a href="dlib/matrix/matrix_la_abstract.h.html#svd">singular value decomposition</a>, + <a href="dlib/matrix/matrix_utilities_abstract.h.html#trans">transpose</a>, + <a href="dlib/matrix/matrix_math_functions_abstract.h.html#sin">trig functions</a>, etc.</li> + <li>General purpose unconstrained non-linear optimization algorithms using the + <a href="optimization.html#cg_search_strategy">conjugate gradient</a>, + <a href="optimization.html#bfgs_search_strategy">BFGS</a>, and + <a href="optimization.html#lbfgs_search_strategy">L-BFGS</a> + techniques</li> + <li> <a href="optimization.html#solve_least_squares_lm">Levenberg-Marquardt</a> for solving non-linear + least squares problems </li> + <li>Box-constrained derivative-free optimization via the + <a href="optimization.html#find_min_bobyqa">BOBYQA</a> algorithm</li> + <li>An implementation of the <a href="optimization.html#oca">Optimized Cutting Plane Algorithm</a></li> + <li><preserve_space><a href="optimization.html#solve_qp_using_smo">Several</a> + <a href="optimization.html#solve_qp2_using_smo">quadratic</a> + <a href="optimization.html#solve_qp3_using_smo">program</a> + <a href="optimization.html#solve_qp4_using_smo">solvers</a></preserve_space> </li> + <li>Combinatorial optimization tools for solving + <a href="optimization.html#max_cost_assignment">optimal assignment</a> and + <a href="optimization.html#min_cut">min cut/max flow</a> problems as well as + the <a href="optimization.html#find_max_parse_cky">CKY algorithm</a> for finding the most probable parse tree</li> + <li>A <a href="algorithms.html#bigint">big integer</a> object</li> + <li>A <a href="algorithms.html#rand">random number</a> object</li> + </ul> + </li> + + <li><b>Graphical Model Inference Algorithms</b> + <ul> + <li><a href="bayes.html#bayesian_network_join_tree">Join tree</a> algorithm for exact inference in + a Bayesian network.</li> + <li><a href="bayes.html#bayesian_network_gibbs_sampler">Gibbs sampler</a> markov chain monte + carlo algorithm for approximate inference in a Bayesian network.</li> + <li>Routines for performing MAP inference in + <a href="optimization.html#find_max_factor_graph_viterbi">chain-structured</a>, + <a href="optimization.html#find_max_factor_graph_potts">Potts</a>, or + <a href="optimization.html#find_max_factor_graph_nmplp">general</a> factor graphs.</li> + </ul> + </li> + + <li><b>Image Processing</b> + <ul> + <li>Routines for <a href="imaging.html#load_image">reading</a> and + <a href="imaging.html#save_bmp">writing</a> common image formats. </li> + <li>Automatic color space conversion between various pixel types</li> + <li>Common image operations such as edge finding and morphological operations</li> + <li>Implementations of the <a href="imaging.html#get_surf_points">SURF</a>, + <a href="imaging.html#hog_image">HOG</a>, and <a href="imaging.html#extract_fhog_features">FHOG</a> + feature extraction algorithms.</li> + <li>Tools for <a href="imaging.html#object_detector">detecting objects</a> in images including + <a href="imaging.html#get_frontal_face_detector">frontal face detection</a> and + <a href="imaging.html#shape_predictor">object pose estimation</a>.</li> + <li>High quality <a href="dnn_face_recognition_ex.cpp.html">face recognition</a></li> + </ul> + </li> + + <li><b>Threading</b> + <ul> + <li>The library provides a portable and simple <a href="api.html#threads">threading API</a></li> + <li>A message passing <a href="other.html#pipe">pipe</a> for inter-thread and <a href="network.html#bridge">inter-process</a> communication</li> + <li>A <a href="other.html#timer">timer</a> object capable of generating events that are regularly spaced in time</li> + <li><a href="api.html#threaded_object">Threaded objects</a></li> + <li><a href="api.html#thread_function">Threaded functions</a></li> + <li><a href="api.html#parallel_for">Parallel for loops</a></li> + <li>A <a href="api.html#thread_pool">thread_pool</a> with support for futures</li> + </ul> + </li> + + <li><b>Networking</b> + <ul> + <li>The library provides a portable and simple <a href="api.html#sockets">TCP sockets API</a></li> + <li>An object to help you make TCP based <a href="network.html#server">servers</a></li> + <li><a href="network.html#iosockstream">iostream</a> and <a href="network.html#sockstreambuf">streambuf</a> + objects that enables TCP sockets to interoperate with the C++ iostreams library </li> + <li>A simple <a href="network.html#server_http">HTTP server</a> object you can use to embed a + web server into your applications</li> + <li>A message passing <a href="other.html#pipe">pipe</a> for inter-thread and <a href="network.html#bridge">inter-process</a> communication</li> + <li>A tool used to implement algorithms using the + <a href="network.html#bsp_context">Bulk Synchronous Parallel (BSP)</a> computing model</li> + </ul> + </li> + + <li><b>Graphical User Interfaces</b> + <ul> + <li>The library provides a portable and simple core <a href="api.html#gui_core">GUI API</a></li> + <li>Implemented on top of the core GUI API are numerous <a href="api.html#gui_widgets">widgets</a></li> + <li>Unlike many other GUI toolkits, the entire dlib GUI toolkit is threadsafe</li> + </ul> + </li> + + + <li><b>Data Compression and Integrity Algorithms</b> + <ul> + <li>A <a href="algorithms.html#crc32">CRC 32</a> object</li> + <li><a href="algorithms.html#md5">MD5</a> functions</li> + <li>Various abstracted objects representing parts of <a href="compression.html">data compression</a> + algorithms. Many forms of the PPM algorithm are included. </li> + </ul> + </li> + + <li><b>Testing</b> + <ul> + <li>A thread safe <a href="other.html#logger">logger</a> object styled after the popular Java logger log4j</li> + <li>A modular <a href="other.html#dlib_testing_suite">unit testing framework</a></li> + <li>Various <a href="metaprogramming.html">assert</a> macros useful for testing preconditions</li> + </ul> + </li> + + <li><b>General Utilities</b> + <ul> + <li>A type-safe <a href="other.html#byte_orderer">object</a> to convert between big and little endian byte orderings</li> + <li>A <a href="parsing.html#cmd_line_parser">command line parser</a> with the ability to + parse and validate command lines with various types of arguments and options</li> + <li>An <a href="parsing.html#xml_parser">XML parser</a></li> + <li>An object that can perform <a href="parsing.html#base64">base64</a> conversions</li> + <li>Many <a href="containers.html">container classes</a></li> + <li><a href="other.html#serialize">Serialization support</a></li> + <li>Many <a href="other.html#memory_manager">memory manager</a> objects that implement + different memory pooling strategies</li> + <li>A tool that lets you easily <a href="other.html#MATLAB">call C++ from MATLAB</a></li> + </ul> + </li> + </ul> + + </p> + + + </body> + + <!-- ************************************************************************* --> + +</doc> diff --git a/ml/dlib/docs/docs/intro.xml b/ml/dlib/docs/docs/intro.xml new file mode 100644 index 00000000..bd21c7e5 --- /dev/null +++ b/ml/dlib/docs/docs/intro.xml @@ -0,0 +1,431 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Introduction</title> + + + + <!-- ************************************************************************* --> + + <body> + + + + + + + <!-- **************************** OVERVIEW SECTION **************************** --> + + + + <h1>Overview</h1> + + + + + <p> + Dlib is a general purpose cross-platform open source software library written in the C++ programming + language. Its design is heavily influenced by ideas from design by contract and component-based + software engineering. This means it is, first and foremost, a collection of independent + software components, each accompanied by extensive documentation and thorough debugging modes. + </p> + + + <p> + <a href='mailto:davis@dlib.net'>Davis King</a> has been the primary + author of dlib since development began in 2002. In that time + dlib has grown to include a wide variety of tools. In particular, + it now contains software components for dealing with networking, + threads, graphical interfaces, complex data structures, linear + algebra, statistical machine learning, image processing, data + mining, XML and text parsing, numerical optimization, Bayesian + networks, and numerous other tasks. In + recent years, much of the development has been focused on creating + a broad set of statistical machine learning tools. However, dlib + remains a general purpose library and <a href="howto_contribute.html">welcomes contributions</a> of high + quality software components useful in any domain. + </p> + + <p> + Core to the development philosophy of dlib is a dedication to + portability and ease of use. Therefore, all code in dlib is designed + to be as portable as possible and similarly to not require a user to + configure or install anything. To help achieve this, all platform + specific code is confined inside the API wrappers. Everything else is + either layered on top of those wrappers or is written in pure ISO + standard C++. Currently the library is known to work on OS X, MS + Windows, Linux, Solaris, the BSDs, and HP-UX. It should work on any + POSIX platform but I haven't had the opportunity to test it on any + others (if you have access to other platforms and would like to help + increase this list then let me know). + </p> + <p> + The rest of this page explains everything you need to know to get started using the library. It + explains where to find the documentation for each object/function and how to interpret + what you find there. For help compiling with dlib check out the <a href="compile.html">how to compile</a> + page. Or if you are having trouble finding where a particular object's documentation is located you may + be able to find it by consulting the <a href="term_index.html">index</a>.</p> + <p> + The library is also covered by the very liberal Boost Software License + so feel free to use it any way you like. However, if you use dlib in + your research then please cite <a href="faq.html#HowcanIcitedlib">its Journal of Machine Learning Research paper</a> when + publishing. + </p> + <p> + Finally, I must give some credit to the <a + href="http://www.cse.ohio-state.edu/~weide/rsrg/index.html">Reusable + Software Research Group</a> at Ohio State since they taught me much + of the software engineering techniques used in the creation of this library. + </p> + + + <!-- **************************** NOTATION SECTION **************************** --> + + + <h1>Notation</h1> + <p> + For the most part I try to document my code in a way that any C++ programmer would understand, + but for the sake of brevity I use some of the following uncommon notation. + </p> + + <ul> + <li/><b> kernel, extension, and abstract </b> + <ul> + Each component of the library has a specification which defines its core behavior and interface. This + specification defines what is called the component's kernel. Additionally, each component may have any number of + extensions. An extension is essentially a specification for something that layers functionality on top of the + kernel of a component. + <br/> + <br/> In the naming of files I use the word abstract to indicate that a file + contains a specification of a kernel component or extension rather than an actual implementation. + </ul> + + + + + <br/><li/><b>/*! comments like this !*/</b> + <ul> + This is just for "formal comments." Generally these appear after a function prototype and contain + the requires/ensures stuff or at the top of a class and tell you general things about the class. + </ul> + + + + + <br/><li/> <b> requires/ensures/throws </b> + <ul> + These words appear in the formal comment following function prototypes and have the following meanings. + <br/><br/><u>requires</u>: This defines a list of requirements for calling the function. These requirements + MUST be met or a call to the function has undefined results. (note that when the checking/debugging modes + are enabled on an object then it will throw the dlib::fatal_error exception with fatal_error::type == EBROKEN_ASSERT when the requires clause is + broken rather than causing "undefined results") + + <br/><br/><u>ensures</u>: This defines what the function does. It is a list of conditions that will be + true after the function finishes executing. Note that if an exception is thrown then nothing in the + ensures clause is guaranteed to be true. + + <br/><br/><u>throws</u>: This defines what exceptions may be thrown by this function. It generally + tells you why the exception might be thrown. It also tells you what the function does in this event: + Does it have no effect at all? Does it corrupt any objects? etc. + + <br/> + <br/> + Sometimes these blocks do not appear in the formal comment. The meanings in these cases are as follows: + <br/><u>missing requires</u>: There are no requirements, you may put anything in the function arguments. + <br/><u>missing ensures</u>: This means that the effects of the function are unspecified. This is often used + for call backs where the client programmer implements the actual function. + <br/><u>missing throws</u>: This doesn't mean anything. A function without a throws block + might throw exceptions or it might not. + + <br/> + <br/> + So in summary, the requires clause must always be satisfied, the ensures clause tells you what the + function does when it does <i>not</i> throw or return an error, and the throws clause tells you what happens when the function + <i>does</i> throw. + + </ul> + + + + <br/><li/> <anchor>meaning_of_hash</anchor> <b> meaning of # symbol </b> + <ul> + I use this as a prefix on identifiers to make reference to the value of the identifier "after" + some event has occurred. + <br/><br/> + The most common place I use this notation is inside the formal comment following a function prototype. + If the # symbol appears in a requires/ensures/throws block then it means the value of + the identifier after the function has finished, otherwise all references to an identifier + refer to its value before the function was called. + <br/><br/> + An example will make it clear. + + + <code_box><font color='#3333FF'>int</font> <b>funct</b><font face="Lucida Console">(</font> +<font color='#3333FF'> int</font>& something +<font face="Lucida Console">);</font> +<font color='#009900'>/*! + requires + - something > 4 + ensures + - #some_other_function() == 9 + - #something == something + 1 + - returns something +!*/</font> +</code_box> + + This says that funct() requires that "something" be greater than 4, that funct() will increment "something" + by 1, and funct() returns the original value of something. It also says that + <i>after</i> the call to funct() ends a call to some_other_function() will return the value 9. + + </ul> + + <br/><li/> <anchor>CONVENTION</anchor> <b> CONVENTION </b> + <ul> + This is a section of the formal comment which appears at the top of classes which are + actual implementations (as opposed to specifications). This section of the comment contains + a list of invariants that tell you what the member variables are used for. It also relates + the state of the member variables to the class interface. + <br/> + <br/> + For example, you might see a line in this section that says "my_size == size()". This just means + that the member variable my_size always contains the value returned by the size() function. + </ul> + + + + + <br/><li/> <b> "initial value for its type" </b> + <ul> + I frequently say that after a function executes some variable or argument will have an + initial value for its type. This makes sense for objects with a user defined constructor, + but for anything else not so much. Therefore the initial value of a type with no user defined + constructor is undefined. + </ul> + + </ul> + + + + + <!-- **************************** ORGANIZATION SECTION **************************** --> + + <h1>Organization</h1> + + <p> + The library can be thought of as a collection of components. Each component always consists of + at least two separate files, a specification file and an implementation file. The specification + files are the ones that end with _abstract.h. Each of these specification files don't actually + contain any code and they even have preprocessor directives that prevent any of their contents from + being included. Their purpose is purely to document a component's interface in a file that isn't + cluttered with implementation details the user shouldn't need to know about. + </p> + + <p> + The next important concept in dlib organization is multi-implementation components. That is, + some components provide more than one implementation of what is defined in their specification. + When you use these components you have to identify them with names like <tt>dlib::component::kernel_1a</tt>. + Often these components will have just a debugging and non-debugging implementation. However, many components + provide a large number of alternate implementations. For example, the <a href="compression.html#entropy_encoder_model">entropy_encoder_model</a> + has 32 different implementations you can choose from. + </p> + + <ul> + + <li/> <b>File organization for multi-implementation components</b> + <ul> + Each component gets its own folder and one file in the root of the directory tree. + <br/><br/> + I will use the <a href="containers.html#queue">queue</a> object as a typical example and + explain what each of its files contain. + Below is the directory structure and all the files related to the queue component. + + <br/><br/> + <ul><li/> <b> file tree </b> + <ul> + <li/> dlib/ + <ul> + <li/> queue.h + <li/> queue/ + <ul> + <li/> queue_kernel_abstract.h + <li/> queue_kernel_1.h + <li/> queue_kernel_2.h + <li/> queue_kernel_c.h + <li/> queue_sort_abstract.h + <li/> queue_sort_1.h + </ul> + </ul> + </ul> + + + <br/> + + <li/> <a href="dlib/queue.h.html">queue.h</a> + <ul> This file does not contain any executable code. All it does is define the typedefs such as + kernel_1a, kernel_1a_c, etc. for the queue object. See the <a href="#creating_objects">Creating Objects</a> + section to learn what these typedefs are for. + </ul> + + <li/> <a href="dlib/queue/queue_kernel_abstract.h.html"> queue_kernel_abstract.h </a> + <ul> + This file does not contain any code. It even has preprocessor directives that prevent + any of its contents from being included. + <br/> + <br/> + The purpose of this file is to define exactly what a queue object does and what its + interface is. + </ul> + + <li/> <a href="dlib/queue/queue_sort_abstract.h.html"> queue_sort_abstract.h </a> + <ul> + This file also doesn't contain any code. Its only purpose is to define the sort + extension to queue objects. + </ul> + + <li/> <a href="dlib/queue/queue_kernel_1.h.html"> queue_kernel_1.h </a> + <ul> + This file contains an implementation of the queue kernel specification found + in queue_kernel_abstract.h + </ul> + + <li/> <a href="dlib/queue/queue_kernel_2.h.html"> queue_kernel_2.h </a> + <ul> + This file contains another implementation of the queue kernel specification found + in queue_kernel_abstract.h + </ul> + + <li/> <a href="dlib/queue/queue_sort_1.h.html"> queue_sort_1.h </a> + <ul> + This file contains an implementation of the queue sort extension specification found + in queue_sort_abstract.h + </ul> + + <li/> <a href="dlib/queue/queue_kernel_c.h.html"> queue_kernel_c.h </a> + <ul> + This file contains a templated class which wraps any implementation of the queue kernel + specification. It is used during debugging to check that the requires clauses are never + violated. + </ul> + </ul> + </ul> + </ul> + + + + + + <!-- **************************** CREATING OBJECTS SECTION **************************** --> + + + + + <anchor>creating_objects</anchor> + <h1>Creating Objects</h1> + + <p> + To create many of the objects in this library you need to choose which kernel implementation you would like and if you + want the checking version or any extensions. + </p> + <p> + To make this easy there are header files which define typedefs of all this stuff. For + example, to create a queue of ints using queue kernel implementation 1 you would type + <tt>dlib::queue<int>::kernel_1a my_queue;</tt>. Or to get the debugging/checking version you + would type <tt>dlib::queue<int>::kernel_1a_c my_queue;</tt>. + </p> + <p> + There can be a lot of different typedefs for each component. You can find a list of them + in the section for the component in question. For the queue component they can be found + <a href="containers.html#queue">here</a>. + </p> + <p> + None of the above applies to the single-implementation components, that is, anything that doesn't have an "implementations" + section in its documentation. These tools are designed to have only one implementation and thus do not follow the + above naming convention. For example, to create a + <a href="other.html#logger">logger</a> object you would simply type <tt>dlib::logger mylog("name");</tt>. + For the purposes of object creation the API components also appear to be single-implementation. That is, there is no + need to specify which implementation you want since it is automatically determined by which platform you compile under. + Note also that there are no explicit checking versions of these components. However, there are + <a href="metaprogramming.html#DLIB_ASSERT">DLIB_ASSERT</a> statements that perform checking and you can + enable them by #defining DEBUG or ENABLE_ASSERTS. + </p> + + + <!-- **************************** ASSUMPTIONS SECTION **************************** --> + + + <h1>Assumptions</h1> + There are some restrictions on the behavior of certain objects or functions. + Rather than replicating these restrictions all over the place in my documentation they + are listed here. + + <ul> + + <li/> <b> global swap() </b> + <ul> + It is assumed that this operator does not throw. Undefined behavior results if it does. + Note that std::swap() for all intrinsics and std::string does not throw. + </ul> + + + + <br/><li/> <b> operator<() </b> + <ul> + It is assumed that this operator (or std::less or any similar functor supplied by you to the library) + does not throw. Undefined behavior results if it does. + </ul> + + + + <br/><li/> <b> dlib::general_hash </b> + <ul> + It is assumed that general_hash does not throw. Undefined behavior results if it does. + This is actually noted in the general hash spec file but I'm listing it here also for good measure. + + </ul> + + + + </ul> + + + + + + <!-- **************************** THREAD SAFETY SECTION **************************** --> + + + <anchor>thread_safety</anchor> + <h1>Thread Safety</h1> + + <p> + In the library there are three kinds of objects with regards to threading: + <ul> + <li>Objects which are completely thread safe. This means that any pattern of access from + multiple threads is safe.</li> + <li>Objects which are safe to use if no threads touch the same instance, but require access + to a particular instance to be serialized via a mutex if it is shared among threads. </li> + <li>Objects which share some kind of global resource or are reference counted. This kind of object is + extremely thread unfriendly and can only be used in a threaded program with great care. </li> + </ul> + </p> + + <p> + How do you know which components/objects are thread safe and which aren't? The rule is that if + the specification for the component doesn't mention threading or thread safety then + it is ok to use as long as you serialize access to shared instances. If the component might have + some global resources or be reference counted then the specifications will tell you this. + Lastly if the component is completely thread safe then the specification will tell you this. + </p> + <p> + Also note that global functions in dlib are always thread safe. + </p> + + + </body> + + + + <!-- ************************************************************************* --> + +</doc> diff --git a/ml/dlib/docs/docs/jet.png b/ml/dlib/docs/docs/jet.png Binary files differnew file mode 100644 index 00000000..83bd2a71 --- /dev/null +++ b/ml/dlib/docs/docs/jet.png diff --git a/ml/dlib/docs/docs/kernel_1a.txt b/ml/dlib/docs/docs/kernel_1a.txt new file mode 100644 index 00000000..ff9ad371 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1a.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 86995 4.576 no +play: 125179 75430 4.82062 no +html: 24603 16209 5.27058 no +Csrc: 11150 7084 5.08269 no +list: 3721 2224 4.78151 no +Excl: 1029744 440758 3.42421 no +tech: 426754 248345 4.65552 no +poem: 481861 273394 4.53897 no +fax: 513216 75036 1.16966 no +SPRC: 38240 25660 5.3682 no +man: 4227 2663 5.03998 no + +average: 4.42981 + +time: 875ms + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 72533 5.21534 no +book1: 768771 435527 4.53219 no +book2: 610856 364597 4.7749 no +geo: 102400 72600 5.67188 no +news: 377109 244377 5.18422 no +obj1: 21504 16183 6.02046 no +obj2: 246814 189902 6.15531 no +paper1: 53161 33144 4.98772 no +paper2: 82199 47398 4.613 no +pic: 513216 75036 1.16966 no +progc: 39611 25885 5.22784 no +progl: 71646 42688 4.76655 no +progp: 49379 30180 4.88953 no +trans: 93695 64603 5.51603 no + +average: 4.9089 + +time: 1.11sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 7 56 no +aaa: 100000 20 0.0016 no +alphabet: 100000 58912 4.71296 no +random: 100000 75202 6.01616 no + +average: 16.6827 + +time: 93ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1162352 2.00462 no +bible: 4047392 2194059 4.33674 no +word: 2473400 1542086 4.98774 no + +average: 3.77637 + +time: 3.766sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1a.xml b/ml/dlib/docs/docs/kernel_1a.xml new file mode 100644 index 00000000..25aba2e1 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1a.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1a</title> + <body from_file="kernel_1a.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1b.txt b/ml/dlib/docs/docs/kernel_1b.txt new file mode 100644 index 00000000..2d6ff74f --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1b.txt @@ -0,0 +1,77 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 66165 3.48033 no +play: 125179 54572 3.48761 no +html: 24603 11661 3.79173 no +Csrc: 11150 4733 3.39587 no +list: 3721 1629 3.50228 no +Excl: 1029744 343447 2.66821 no +tech: 426754 188332 3.5305 no +poem: 481861 204240 3.39085 no +fax: 513216 54127 0.843731 no +SPRC: 38240 18307 3.82992 no +man: 4227 2100 3.97445 no + +average: 3.26323 + +time: 844ms + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 48130 3.46069 no +book1: 768771 346572 3.6065 no +book2: 610856 288605 3.77968 no +geo: 102400 61124 4.77531 no +news: 377109 196085 4.15975 no +obj1: 21504 12445 4.62984 no +obj2: 246814 127142 4.12106 no +paper1: 53161 25438 3.82807 no +paper2: 82199 37295 3.62973 no +pic: 513216 54127 0.843731 no +progc: 39611 19090 3.85549 no +progl: 71646 29773 3.32446 no +progp: 49379 20795 3.36904 no +trans: 93695 40922 3.49406 no + +average: 3.6341 + +time: 1.109sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 7 56 no +aaa: 100000 20 0.0016 no +alphabet: 100000 83 0.00664 no +random: 100000 77775 6.222 no + +average: 15.5576 + +time: 94ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1151913 1.98662 no +bible: 4047392 1651476 3.26428 no +word: 2473400 1133090 3.66488 no + +average: 2.97193 + +time: 3.672sec +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1b.xml b/ml/dlib/docs/docs/kernel_1b.xml new file mode 100644 index 00000000..7642f0c1 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1b.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1b</title> + <body from_file="kernel_1b.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1c.txt b/ml/dlib/docs/docs/kernel_1c.txt new file mode 100644 index 00000000..0e0a78d0 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1c.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 51810 2.72525 no +play: 125179 44002 2.8121 no +html: 24603 8602 2.79706 no +Csrc: 11150 3399 2.43874 no +list: 3721 1272 2.73475 no +Excl: 1029744 237165 1.84252 no +tech: 426754 147090 2.75737 no +poem: 481861 169981 2.82208 no +fax: 513216 54230 0.845336 no +SPRC: 38240 15190 3.17782 no +man: 4227 1763 3.33665 no + +average: 2.57179 + +time: 1.031sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 37264 2.67939 no +book1: 768771 280052 2.91428 no +book2: 610856 221616 2.90237 no +geo: 102400 62115 4.85273 no +news: 377109 155282 3.29416 no +obj1: 21504 11235 4.17969 no +obj2: 246814 97319 3.15441 no +paper1: 53161 19664 2.95916 no +paper2: 82199 29837 2.90388 no +pic: 513216 54230 0.845336 no +progc: 39611 14610 2.9507 no +progl: 71646 21637 2.41599 no +progp: 49379 14204 2.30122 no +trans: 93695 27848 2.37776 no + +average: 2.90936 + +time: 1.297sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 7 56 no +aaa: 100000 18 0.00144 no +alphabet: 100000 65 0.0052 no +random: 100000 90704 7.25632 no + +average: 15.8157 + +time: 203ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1141437 1.96855 no +bible: 4047392 1263237 2.49689 no +word: 2473400 876621 2.83536 no + +average: 2.4336 + +time: 3.391sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1c.xml b/ml/dlib/docs/docs/kernel_1c.xml new file mode 100644 index 00000000..1bab1d09 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1c.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1c</title> + <body from_file="kernel_1c.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1da.txt b/ml/dlib/docs/docs/kernel_1da.txt new file mode 100644 index 00000000..fde5871e --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1da.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 45580 2.39754 no +play: 125179 42432 2.71176 no +html: 24603 7745 2.51839 no +Csrc: 11150 3165 2.27085 no +list: 3721 1238 2.66165 no +Excl: 1029744 194875 1.51397 no +tech: 426754 111838 2.09653 no +poem: 481861 148110 2.45897 no +fax: 513216 56075 0.874096 no +SPRC: 38240 14248 2.98075 no +man: 4227 1736 3.28555 no + +average: 2.34273 + +time: 1.812sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 29161 2.09676 no +book1: 768771 235667 2.4524 no +book2: 610856 165032 2.16132 no +geo: 102400 67663 5.28617 no +news: 377109 128148 2.71853 no +obj1: 21504 10750 3.99926 no +obj2: 246814 82894 2.68685 no +paper1: 53161 17398 2.61816 no +paper2: 82199 26449 2.57414 no +pic: 513216 56075 0.874096 no +progc: 39611 13188 2.6635 no +progl: 71646 17135 1.9133 no +progp: 49379 11764 1.90591 no +trans: 93695 19602 1.67369 no + +average: 2.54458 + +time: 2.36sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 6 48 no +aaa: 100000 19 0.00152 no +alphabet: 100000 66 0.00528 no +random: 100000 89652 7.17216 no + +average: 13.7947 + +time: 375ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1130363 1.94945 no +bible: 4047392 871537 1.72266 no +word: 2473400 589688 1.9073 no + +average: 1.8598 + +time: 4.484sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1da.xml b/ml/dlib/docs/docs/kernel_1da.xml new file mode 100644 index 00000000..428e2e4d --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1da.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1da</title> + <body from_file="kernel_1da.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1db.txt b/ml/dlib/docs/docs/kernel_1db.txt new file mode 100644 index 00000000..64831272 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1db.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 47843 2.51658 no +play: 125179 45069 2.88029 no +html: 24603 7914 2.57334 no +Csrc: 11150 3279 2.35265 no +list: 3721 1281 2.7541 no +Excl: 1029744 210286 1.6337 no +tech: 426754 115826 2.17129 no +poem: 481861 157348 2.61234 no +fax: 513216 56477 0.880362 no +SPRC: 38240 14466 3.02636 no +man: 4227 1780 3.36882 no + +average: 2.43362 + +time: 2.296sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 29758 2.13969 no +book1: 768771 247700 2.57762 no +book2: 610856 168694 2.20928 no +geo: 102400 67817 5.2982 no +news: 377109 126675 2.68729 no +obj1: 21504 10871 4.04427 no +obj2: 246814 82948 2.6886 no +paper1: 53161 18113 2.72576 no +paper2: 82199 27700 2.6959 no +pic: 513216 56477 0.880362 no +progc: 39611 13622 2.75115 no +progl: 71646 17263 1.92759 no +progp: 49379 12032 1.94933 no +trans: 93695 19505 1.6654 no + +average: 2.5886 + +time: 2.86sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 6 48 no +aaa: 100000 20 0.0016 no +alphabet: 100000 66 0.00528 no +random: 100000 88475 7.078 no + +average: 13.7712 + +time: 531ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1130433 1.94957 no +bible: 4047392 844807 1.66983 no +word: 2473400 504129 1.63056 no + +average: 1.74999 + +time: 5.266sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1db.xml b/ml/dlib/docs/docs/kernel_1db.xml new file mode 100644 index 00000000..9d8a10ef --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1db.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1db</title> + <body from_file="kernel_1db.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1ea.txt b/ml/dlib/docs/docs/kernel_1ea.txt new file mode 100644 index 00000000..1697827d --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1ea.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 40695 2.14059 no +play: 125179 37421 2.39152 no +html: 24603 6859 2.2303 no +Csrc: 11150 2792 2.00323 no +list: 3721 1084 2.33056 no +Excl: 1029744 156897 1.21892 no +tech: 426754 102805 1.9272 no +poem: 481861 136664 2.26894 no +fax: 513216 51109 0.796686 no +SPRC: 38240 12590 2.63389 no +man: 4227 1530 2.89567 no + +average: 2.07614 + +time: 3.062sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 26039 1.87228 no +book1: 768771 218772 2.27659 no +book2: 610856 151985 1.99045 no +geo: 102400 59371 4.63836 no +news: 377109 115334 2.4467 no +obj1: 21504 9832 3.65774 no +obj2: 246814 75065 2.43309 no +paper1: 53161 15263 2.29687 no +paper2: 82199 23368 2.27429 no +pic: 513216 51109 0.796686 no +progc: 39611 11549 2.33248 no +progl: 71646 15297 1.70806 no +progp: 49379 10447 1.69254 no +trans: 93695 17677 1.50932 no + +average: 2.28039 + +time: 4.172sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 7 56 no +aaa: 100000 17 0.00136 no +alphabet: 100000 65 0.0052 no +random: 100000 82599 6.60792 no + +average: 15.6536 + +time: 672ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1130095 1.94899 no +bible: 4047392 848956 1.67803 no +word: 2473400 542983 1.75623 no + +average: 1.79442 + +time: 6.516sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1ea.xml b/ml/dlib/docs/docs/kernel_1ea.xml new file mode 100644 index 00000000..3117a509 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1ea.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1ea</title> + <body from_file="kernel_1ea.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1eb.txt b/ml/dlib/docs/docs/kernel_1eb.txt new file mode 100644 index 00000000..0b46d59c --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1eb.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 40220 2.1156 no +play: 125179 37451 2.39344 no +html: 24603 6819 2.21729 no +Csrc: 11150 2770 1.98744 no +list: 3721 1085 2.33271 no +Excl: 1029744 158436 1.23088 no +tech: 426754 100243 1.87917 no +poem: 481861 136151 2.26042 no +fax: 513216 50374 0.785229 no +SPRC: 38240 12387 2.59142 no +man: 4227 1528 2.89189 no + +average: 2.06232 + +time: 4.875sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 25279 1.81764 no +book1: 768771 216389 2.25179 no +book2: 610856 146986 1.92498 no +geo: 102400 58768 4.59125 no +news: 377109 109292 2.31852 no +obj1: 21504 9819 3.6529 no +obj2: 246814 72662 2.3552 no +paper1: 53161 15128 2.27656 no +paper2: 82199 23186 2.25657 no +pic: 513216 50374 0.785229 no +progc: 39611 11434 2.30926 no +progl: 71646 14712 1.64274 no +progp: 49379 10210 1.65414 no +trans: 93695 16885 1.4417 no + +average: 2.23418 + +time: 5.421sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 7 56 no +aaa: 100000 17 0.00136 no +alphabet: 100000 64 0.00512 no +random: 100000 81881 6.55048 no + +average: 15.6392 + +time: 907ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1129161 1.94738 no +bible: 4047392 794809 1.571 no +word: 2473400 454450 1.46988 no + +average: 1.66275 + +time: 7.39sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1eb.xml b/ml/dlib/docs/docs/kernel_1eb.xml new file mode 100644 index 00000000..e157438d --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1eb.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1eb</title> + <body from_file="kernel_1eb.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_1ec.txt b/ml/dlib/docs/docs/kernel_1ec.txt new file mode 100644 index 00000000..488004d4 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1ec.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 40367 2.12334 no +play: 125179 37785 2.41478 no +html: 24603 6828 2.22022 no +Csrc: 11150 2710 1.94439 no +list: 3721 1084 2.33056 no +Excl: 1029744 162760 1.26447 no +tech: 426754 100488 1.88376 no +poem: 481861 139110 2.30955 no +fax: 513216 50276 0.783701 no +SPRC: 38240 12219 2.55628 no +man: 4227 1533 2.90135 no + +average: 2.06658 + +time: 5.484sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 25153 1.80858 no +book1: 768771 220128 2.2907 no +book2: 610856 146040 1.91259 no +geo: 102400 58737 4.58883 no +news: 377109 108774 2.30753 no +obj1: 21504 9823 3.65439 no +obj2: 246814 71148 2.30613 no +paper1: 53161 15116 2.27475 no +paper2: 82199 23346 2.27214 no +pic: 513216 50276 0.783701 no +progc: 39611 11351 2.29249 no +progl: 71646 14125 1.5772 no +progp: 49379 9966 1.61461 no +trans: 93695 16068 1.37194 no + +average: 2.21826 + +time: 6.188sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 7 56 no +aaa: 100000 17 0.00136 no +alphabet: 100000 65 0.0052 no +random: 100000 81869 6.54952 no + +average: 15.639 + +time: 1.109sec + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1160064 2.00068 no +bible: 4047392 760498 1.50319 no +word: 2473400 422419 1.36628 no + +average: 1.62338 + +time: 11.203sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1ec.xml b/ml/dlib/docs/docs/kernel_1ec.xml new file mode 100644 index 00000000..91827386 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_1ec.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_1ec</title> + <body from_file="kernel_1ec.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_2a.txt b/ml/dlib/docs/docs/kernel_2a.txt new file mode 100644 index 00000000..3caff686 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_2a.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 55655 2.9275 no +play: 125179 49648 3.17293 no +html: 24603 8345 2.71349 no +Csrc: 11150 3514 2.52126 no +list: 3721 1379 2.96479 no +Excl: 1029744 72617 0.564156 no +tech: 426754 145403 2.72575 no +poem: 481861 196109 3.25586 no +fax: 513216 49740 0.775346 no +SPRC: 38240 13253 2.77259 no +man: 4227 1857 3.51455 no + +average: 2.53711 + +time: 4.641sec + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 35687 2.566 no +book1: 768771 313140 3.2586 no +book2: 610856 210661 2.7589 no +geo: 102400 61070 4.77109 no +news: 377109 143307 3.04012 no +obj1: 21504 11004 4.09375 no +obj2: 246814 83289 2.69965 no +paper1: 53161 19433 2.9244 no +paper2: 82199 30671 2.98505 no +pic: 513216 49740 0.775346 no +progc: 39611 14142 2.85618 no +progl: 71646 17196 1.92011 no +progp: 49379 12045 1.95144 no +trans: 93695 19849 1.69478 no + +average: 2.73539 + +time: 4.89sec + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 6 48 no +aaa: 100000 58 0.00464 no +alphabet: 100000 87 0.00696 no +random: 100000 77815 6.2252 no + +average: 13.5592 + +time: 235ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 1349400 2.32721 no +bible: 4047392 1206327 2.3844 no +word: 2473400 703195 2.27442 no + +average: 2.32868 + +time: 8.75sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_2a.xml b/ml/dlib/docs/docs/kernel_2a.xml new file mode 100644 index 00000000..4b8c1182 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_2a.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_2a</title> + <body from_file="kernel_2a.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_3a.txt b/ml/dlib/docs/docs/kernel_3a.txt new file mode 100644 index 00000000..927c4af7 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_3a.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 118620 6.2395 no +play: 125179 103761 6.63121 no +html: 24603 14067 4.57408 no +Csrc: 11150 5805 4.16502 no +list: 3721 2142 4.60521 no +Excl: 1029744 390978 3.03748 no +tech: 426754 310347 5.81782 no +poem: 481861 435150 7.22449 no +fax: 513216 116298 1.81285 no +SPRC: 38240 23076 4.82762 no +man: 4227 3177 6.01278 no + +average: 4.99528 + +time: 547ms + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 68949 4.95764 no +book1: 768771 683415 7.11177 no +book2: 610856 435186 5.69936 no +geo: 102400 105111 8.2118 no +news: 377109 266382 5.65103 no +obj1: 21504 15714 5.84598 no +obj2: 246814 139671 4.52717 no +paper1: 53161 37476 5.63962 no +paper2: 82199 63198 6.15073 no +pic: 513216 116298 1.81285 no +progc: 39611 25398 5.12948 no +progl: 71646 31905 3.56252 no +progp: 49379 20943 3.39302 no +trans: 93695 34056 2.90782 no + +average: 5.04291 + +time: 610ms + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 9 72 no +aaa: 100000 3771 0.30168 no +alphabet: 100000 486 0.03888 no +random: 100000 112491 8.99928 no + +average: 20.335 + +time: 47ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 4752396 8.1961 no +bible: 4047392 2649303 5.23656 no +word: 2473400 1452177 4.69694 no + +average: 6.0432 + +time: 2.5sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_3a.xml b/ml/dlib/docs/docs/kernel_3a.xml new file mode 100644 index 00000000..2a95695e --- /dev/null +++ b/ml/dlib/docs/docs/kernel_3a.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_3a</title> + <body from_file="kernel_3a.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/kernel_3b.txt b/ml/dlib/docs/docs/kernel_3b.txt new file mode 100644 index 00000000..69f25e13 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_3b.txt @@ -0,0 +1,78 @@ +<text> + + + The Canterbury Corpus + +file size packed size bpb corruption + +text: 152089 111537 5.86693 no +play: 125179 101457 6.48396 no +html: 24603 13914 4.52433 no +Csrc: 11150 5760 4.13274 no +list: 3721 2160 4.64391 no +Excl: 1029744 407466 3.16557 no +tech: 426754 291483 5.46419 no +poem: 481861 417897 6.93805 no +fax: 513216 114138 1.77918 no +SPRC: 38240 23184 4.85021 no +man: 4227 3159 5.97871 no + +average: 4.89343 + +time: 734ms + + + + The Calgary Corpus + +file size packed size bpb corruption + +bib: 111261 63729 4.58231 no +book1: 768771 655227 6.81844 no +book2: 610856 409392 5.36155 no +geo: 102400 108099 8.44523 no +news: 377109 259065 5.49581 no +obj1: 21504 15768 5.86607 no +obj2: 246814 138564 4.49128 no +paper1: 53161 35901 5.40261 no +paper2: 82199 60291 5.86781 no +pic: 513216 114138 1.77918 no +progc: 39611 24984 5.04587 no +progl: 71646 31113 3.47408 no +progp: 49379 20772 3.36532 no +trans: 93695 33093 2.82559 no + +average: 4.9158 + +time: 907ms + + + + The Artificial Corpus + +file size packed size bpb corruption + +a: 1 9 72 no +aaa: 100000 3771 0.30168 no +alphabet: 100000 486 0.03888 no +random: 100000 112509 9.00072 no + +average: 20.3353 + +time: 78ms + + + + The Large Corpus + +file size packed size bpb corruption + +E.coli: 4638690 4747257 8.18724 no +bible: 4047392 2466675 4.87558 no +word: 2473400 1301805 4.21058 no + +average: 5.7578 + +time: 3.25sec + +</text>
\ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_3b.xml b/ml/dlib/docs/docs/kernel_3b.xml new file mode 100644 index 00000000..9571ab41 --- /dev/null +++ b/ml/dlib/docs/docs/kernel_3b.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>kernel_3b</title> + <body from_file="kernel_3b.txt"/> + <menu from_file="compression.xml"/> +</doc> diff --git a/ml/dlib/docs/docs/license.xml b/ml/dlib/docs/docs/license.xml new file mode 100644 index 00000000..c47ee788 --- /dev/null +++ b/ml/dlib/docs/docs/license.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>License</title> + <body><pre> + + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + + + </pre></body> +</doc> diff --git a/ml/dlib/docs/docs/linear_algebra.xml b/ml/dlib/docs/docs/linear_algebra.xml new file mode 100644 index 00000000..4d228376 --- /dev/null +++ b/ml/dlib/docs/docs/linear_algebra.xml @@ -0,0 +1,1382 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Linear Algebra</title> + + <!-- ************************************************************************* --> + + <body> + <p> + This page documents the core linear algebra tools included in dlib. + In particular, the three most important objects in this part of the library are the + <a href="#matrix">matrix</a>, <a href="#vector">vector</a>, and + <a href="#rectangle">rectangle</a>. All the other tools on this page + are functions for manipulating these three objects. A good example and introduction + can be found in + the <a href="matrix_ex.cpp.html">matrix example program</a>. + </p> + + <p> + Most of the linear algebra tools deal with dense matrices. However, there is also + a limited amount of support for working with sparse matrices and vectors. + In particular, the dlib tools represent sparse vectors using the containers + in the C++ STL. For details, see the notes at the top of + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">dlib/svm/sparse_vector_abstract.h</a>. + </p> + <p> + Finally, note that all the dense matrix tools can be obtained by #including <tt><dlib/matrix.h></tt> + while the sparse vector tools can be obtained by #including <tt><dlib/sparse_vector.h></tt>. The + geometry tools can be used by #including <tt><dlib/geometry.h></tt>. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + + <section> + <name>Dense Matrix Tools</name> + <item>matrix</item> + <item nolink="true"> + <name>Basic Math Operators</name> + <sub> + <item> + <name>exp</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#exp</link> + </item> + <item> + <name>log10</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#log10</link> + </item> + <item> + <name>log</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#log</link> + </item> + <item> + <name>sqrt</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#sqrt</link> + </item> + <item> + <name>pow</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#pow</link> + </item> + <item> + <name>squared</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#squared</link> + </item> + <item> + <name>cubed</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#cubed</link> + </item> + <item> + <name>sigmoid</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#sigmoid</link> + </item> + <item> + <name>abs</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#abs</link> + </item> + <item> + <name>reciprocal</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#reciprocal</link> + </item> + <item> + <name>reciprocal_max</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#reciprocal_max</link> + </item> + <item> + <name>normalize</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#normalize</link> + </item> + <item> + <name>round</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#round</link> + </item> + <item> + <name>ceil</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#ceil</link> + </item> + <item> + <name>floor</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#floor</link> + </item> + <item> + <name>round_zeros</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#round_zeros</link> + </item> + <item> + <name>conj</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#conj</link> + </item> + <item> + <name>norm</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#norm</link> + </item> + <item> + <name>imag</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#imag</link> + </item> + <item> + <name>real</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#real</link> + </item> + <item> + <name>complex_matrix</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#complex_matrix</link> + </item> + <item> + <name>sin</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#sin</link> + </item> + <item> + <name>cos</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#cos</link> + </item> + <item> + <name>tan</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#tan</link> + </item> + <item> + <name>asin</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#asin</link> + </item> + <item> + <name>acos</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#acos</link> + </item> + <item> + <name>atan</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#atan</link> + </item> + <item> + <name>sinh</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#sinh</link> + </item> + <item> + <name>cosh</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#cosh</link> + </item> + <item> + <name>tanh</name> + <link>dlib/matrix/matrix_math_functions_abstract.h.html#tanh</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Linear Algebra</name> + <sub> + <item> + <name>inv</name> + <link>dlib/matrix/matrix_la_abstract.h.html#inv</link> + </item> + <item> + <name>pinv</name> + <link>dlib/matrix/matrix_la_abstract.h.html#pinv</link> + </item> + <item> + <name>svd</name> + <link>dlib/matrix/matrix_la_abstract.h.html#svd</link> + </item> + <item> + <name>svd2</name> + <link>dlib/matrix/matrix_la_abstract.h.html#svd2</link> + </item> + <item> + <name>svd3</name> + <link>dlib/matrix/matrix_la_abstract.h.html#svd3</link> + </item> + <item> + <name>svd_fast</name> + <link>dlib/matrix/matrix_la_abstract.h.html#svd_fast</link> + </item> + <item> + <name>orthogonalize</name> + <link>dlib/matrix/matrix_la_abstract.h.html#orthogonalize</link> + </item> + <item> + <name>det</name> + <link>dlib/matrix/matrix_la_abstract.h.html#det</link> + </item> + <item> + <name>trace</name> + <link>dlib/matrix/matrix_la_abstract.h.html#trace</link> + </item> + <item> + <name>dot</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#dot</link> + </item> + <item> + <name>length</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#length</link> + </item> + <item> + <name>length_squared</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#length_squared</link> + </item> + <item> + <name>trans</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#trans</link> + </item> + <item> + <name>diag</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#diag</link> + </item> + <item> + <name>diagm</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#diagm</link> + </item> + <item> + <name>lowerm</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#lowerm</link> + </item> + <item> + <name>upperm</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#upperm</link> + </item> + <item> + <name>chol</name> + <link>dlib/matrix/matrix_la_abstract.h.html#chol</link> + </item> + <item> + <name>inv_lower_triangular</name> + <link>dlib/matrix/matrix_la_abstract.h.html#inv_lower_triangular</link> + </item> + <item> + <name>inv_upper_triangular</name> + <link>dlib/matrix/matrix_la_abstract.h.html#inv_upper_triangular</link> + </item> + <item> + <name>lu_decomposition</name> + <link>dlib/matrix/matrix_la_abstract.h.html#lu_decomposition</link> + </item> + <item> + <name>qr_decomposition</name> + <link>dlib/matrix/matrix_la_abstract.h.html#qr_decomposition</link> + </item> + <item> + <name>cholesky_decomposition</name> + <link>dlib/matrix/matrix_la_abstract.h.html#cholesky_decomposition</link> + </item> + <item> + <name>eigenvalue_decomposition</name> + <link>dlib/matrix/matrix_la_abstract.h.html#eigenvalue_decomposition</link> + </item> + <item> + <name>real_eigenvalues</name> + <link>dlib/matrix/matrix_la_abstract.h.html#real_eigenvalues</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Conversions</name> + <sub> + <item>mat</item> + <item> + <name>matrix_cast</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#matrix_cast</link> + </item> + <item> + <name>pixel_to_vector</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#pixel_to_vector</link> + </item> + <item> + <name>vector_to_pixel</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#vector_to_pixel</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Sub Matrix Expressions</name> + <sub> + <item> + <name>range</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#range</link> + </item> + <item> + <name>subm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#subm</link> + </item> + <item> + <name>subm_clipped</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#subm_clipped</link> + </item> + <item> + <name>rowm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#rowm</link> + </item> + <item> + <name>colm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#colm</link> + </item> + <item> + <name>set_ptrm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#set_ptrm</link> + </item> + <item> + <name>set_subm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#set_subm</link> + </item> + <item> + <name>set_colm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#set_colm</link> + </item> + <item> + <name>set_rowm</name> + <link>dlib/matrix/matrix_subexp_abstract.h.html#set_rowm</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Statistics</name> + <sub> + <item> + <name>sum</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#sum</link> + </item> + <item> + <name>sum_rows</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#sum_rows</link> + </item> + <item> + <name>sum_cols</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#sum_cols</link> + </item> + <item> + <name>prod</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#prod</link> + </item> + <item> + <name>mean</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#mean</link> + </item> + <item> + <name>max</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#max</link> + </item> + <item> + <name>min</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#min</link> + </item> + <item> + <name>find_min_and_max</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#find_min_and_max</link> + </item> + <item> + <name>max_point</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#max_point</link> + </item> + <item> + <name>max_point_interpolated</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#max_point_interpolated</link> + </item> + <item> + <name>min_point</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#min_point</link> + </item> + <item> + <name>index_of_min</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#index_of_min</link> + </item> + <item> + <name>index_of_max</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#index_of_max</link> + </item> + <item> + <name>variance</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#variance</link> + </item> + <item> + <name>stddev</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#stddev</link> + </item> + <item> + <name>covariance</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#covariance</link> + </item> + <item> + <name>randm</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#randm</link> + </item> + <item> + <name>gaussian_randm</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#gaussian_randm</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Other Utilities</name> + <sub> + <item> + <name>csv</name> + <link>dlib/matrix/matrix_abstract.h.html#csv</link> + </item> + <item> + <name>fft</name> + <link>dlib/matrix/matrix_fft_abstract.h.html#fft</link> + </item> + <item> + <name>ifft</name> + <link>dlib/matrix/matrix_fft_abstract.h.html#ifft</link> + </item> + <item> + <name>is_col_vector</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#is_col_vector</link> + </item> + <item> + <name>is_row_vector</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#is_row_vector</link> + </item> + <item> + <name>is_vector</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#is_vector</link> + </item> + <item> + <name>is_finite</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#is_finite</link> + </item> + <item> + <name>const_temp_matrix</name> + <link>dlib/matrix/matrix_abstract.h.html#const_temp_matrix</link> + </item> + <item> + <name>symmetric_matrix_cache</name> + <link>dlib/matrix/symmetric_matrix_cache_abstract.h.html</link> + </item> + <item> + <name>conv</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#conv</link> + </item> + <item> + <name>conv_same</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#conv_same</link> + </item> + <item> + <name>conv_valid</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#conv_valid</link> + </item> + <item> + <name>xcorr_fft</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#xcorr_fft</link> + </item> + <item> + <name>xcorr</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#xcorr</link> + </item> + <item> + <name>xcorr_same</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#xcorr_same</link> + </item> + <item> + <name>xcorr_valid</name> + <link>dlib/matrix/matrix_conv_abstract.h.html#xcorr_valid</link> + </item> + <item> + <name>flip</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#flip</link> + </item> + <item> + <name>flipud</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#flipud</link> + </item> + <item> + <name>fliplr</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#fliplr</link> + </item> + <item> + <name>make_symmetric</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#make_symmetric</link> + </item> + <item> + <name>ones_matrix</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#ones_matrix</link> + </item> + <item> + <name>zeros_matrix</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#zeros_matrix</link> + </item> + <item> + <name>uniform_matrix</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#uniform_matrix</link> + </item> + <item> + <name>identity_matrix</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#identity_matrix</link> + </item> + <item> + <name>rotate</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#rotate</link> + </item> + <item> + <name>reshape_to_column_vector</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#reshape_to_column_vector</link> + </item> + <item> + <name>reshape</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#reshape</link> + </item> + <item> + <name>removerc</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#removerc</link> + </item> + <item> + <name>remove_row</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#remove_row</link> + </item> + <item> + <name>remove_col</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#remove_col</link> + </item> + <item> + <name>set_all_elements</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#set_all_elements</link> + </item> + <item> + <name>hash</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#hash</link> + </item> + <item> + <name>tmp</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#tmp</link> + </item> + <item> + <name>equal</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#equal</link> + </item> + <item> + <name>pointwise_multiply</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#pointwise_multiply</link> + </item> + <item> + <name>join_rows</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#join_rows</link> + </item> + <item> + <name>join_cols</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#join_cols</link> + </item> + <item> + <name>tensor_product</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#tensor_product</link> + </item> + <item> + <name>scale_columns</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#scale_columns</link> + </item> + <item> + <name>scale_rows</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#scale_rows</link> + </item> + <item> + <name>sort_columns</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#sort_columns</link> + </item> + <item> + <name>rsort_columns</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#rsort_columns</link> + </item> + + <item> + <name>clamp</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#clamp</link> + </item> + <item> + <name>lowerbound</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#lowerbound</link> + </item> + <item> + <name>upperbound</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#upperbound</link> + </item> + <item> + <name>linspace</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#linspace</link> + </item> + <item> + <name>linpiece</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#linpiece</link> + </item> + <item> + <name>logspace</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#logspace</link> + </item> + <item> + <name>cartesian_product</name> + <link>dlib/matrix/matrix_utilities_abstract.h.html#cartesian_product</link> + </item> + </sub> + </item> + </section> + + <section> + <name>2D/3D Geometry</name> + <item>border_enumerator</item> + <item>rectangle</item> + <item>drectangle</item> + <item>vector</item> + <item>point</item> + <item>rotate_point</item> + <item>rotate_around_x</item> + <item>rotate_around_y</item> + <item>rotate_around_z</item> + <item>point_rotator</item> + <item>point_transform</item> + <item>camera_transform</item> + <item>point_transform_affine</item> + <item>rectangle_transform</item> + <item>point_transform_affine3d</item> + <item>find_affine_transform</item> + <item>find_similarity_transform</item> + <item>point_transform_projective</item> + <item>find_projective_transform</item> + <item>rotation_matrix</item> + <item>get_rect</item> + <item>centered_rect</item> + <item>set_aspect_ratio</item> + <item>set_rect_area</item> + <item>center</item> + <item>dcenter</item> + <item>shrink_rect</item> + <item>grow_rect</item> + <item>translate_rect</item> + <item>translate_point</item> + <item>resize_rect</item> + <item>resize_rect_width</item> + <item>resize_rect_height</item> + <item>move_rect</item> + <item>nearest_point</item> + <item>nearest_rect</item> + <item>distance_to_rect_edge</item> + <item>clip_line_to_rectangle</item> + <item>distance_to_line</item> + </section> + + + <section> + <name>Sparse Vector Tools</name> + <item>sparse_to_dense</item> + + <item> + <name>dot</name> + <link>dlib/svm/sparse_vector_abstract.h.html#dot</link> + </item> + <item> + <name>distance_squared</name> + <link>dlib/svm/sparse_vector_abstract.h.html#distance_squared</link> + </item> + <item> + <name>distance</name> + <link>dlib/svm/sparse_vector_abstract.h.html#distance</link> + </item> + <item> + <name>assign</name> + <link>dlib/svm/sparse_vector_abstract.h.html#assign</link> + </item> + <item> + <name>length_squared</name> + <link>dlib/svm/sparse_vector_abstract.h.html#length_squared</link> + </item> + <item> + <name>length</name> + <link>dlib/svm/sparse_vector_abstract.h.html#length</link> + </item> + <item> + <name>scale_by</name> + <link>dlib/svm/sparse_vector_abstract.h.html#scale_by</link> + </item> + <item> + <name>add</name> + <link>dlib/svm/sparse_vector_abstract.h.html#add</link> + </item> + <item> + <name>subtract</name> + <link>dlib/svm/sparse_vector_abstract.h.html#subtract</link> + </item> + <item> + <name>max_index_plus_one</name> + <link>dlib/svm/sparse_vector_abstract.h.html#max_index_plus_one</link> + </item> + <item> + <name>add_to</name> + <link>dlib/svm/sparse_vector_abstract.h.html#add_to</link> + </item> + <item> + <name>subtract_from</name> + <link>dlib/svm/sparse_vector_abstract.h.html#subtract_from</link> + </item> + <item> + <name>min</name> + <link>dlib/svm/sparse_vector_abstract.h.html#min</link> + </item> + <item> + <name>max</name> + <link>dlib/svm/sparse_vector_abstract.h.html#max</link> + </item> + <item> + <name>make_sparse_vector</name> + <link>dlib/svm/sparse_vector_abstract.h.html#make_sparse_vector</link> + </item> + <item> + <name>make_sparse_vector_inplace</name> + <link>dlib/svm/sparse_vector_abstract.h.html#make_sparse_vector_inplace</link> + </item> + <item> + <name>sparse_matrix_vector_multiply</name> + <link>dlib/svm/sparse_vector_abstract.h.html#sparse_matrix_vector_multiply</link> + </item> + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>sparse_to_dense</name> + <file>dlib/sparse_vector.h</file> + <spec_file link="true">dlib/svm/sparse_vector_abstract.h</spec_file> + <description> + This is a set of simple functions that take + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a> + and converts them into equivalent dense vectors. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>mat</name> + <file>dlib/matrix.h</file> + <spec_file link="true">dlib/matrix/matrix_mat_abstract.h</spec_file> + <description> + This is a set of simple functions that take objects like std::vector or + <a href="containers.html#array2d">array2d</a> and convert them into + <a href="#matrix">matrix</a> objects. Note that the conversion is + done using template expressions so there is no runtime cost associated + with calling mat(). + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>matrix</name> + <file>dlib/matrix.h</file> + <spec_file link="true">dlib/matrix/matrix_abstract.h</spec_file> + <description> + This is a 2D matrix object that enables you to write code that deals with + matrices using a simple syntax similar to what can be written in MATLAB. It is implemented using + the <a href="matrix_expressions_ex.cpp.html">expression templates</a> technique which allows it to eliminate the + temporary matrix objects that would normally be returned from expressions + such as M = A+B+C+D; Normally each invocation of the + operator would + construct and return a temporary matrix object but using this technique + we can avoid creating all these temporary objects and receive a large speed boost. + <p> + This object is also capable of using BLAS and LAPACK libraries such as ATLAS or the Intel + MKL when available. To enable BLAS support all you have to do is #define + DLIB_USE_BLAS and then make sure you link your application with your + BLAS library. Similarly, to enable LAPACK support just #define DLIB_USE_LAPACK and + link to your LAPACK library. Finally, the use of BLAS and LAPACK is transparent to + the user, that is, the dlib matrix object uses BLAS and LAPACK internally to optimize + various operations while still allowing the user to use a simple MATLAB like syntax. + </p> + <p> + Note that the cmake files that come with dlib will automatically link with ATLAS or the Intel + MKL if they are installed. So using cmake makes this easy, but by no means are you required + to use cmake or the dlib cmake files. + </p> + <p> + It is also worth noting that all the preconditions of every function + related to the matrix object are checked by <a href="metaprogramming.html#DLIB_ASSERT">DLIB_ASSERT</a> + statements and thus can be enabled by #defining ENABLE_ASSERTS or DEBUG. Doing + this will cause your program to run slower but should catch any usage errors. + </p> + </description> + + <examples> + <example>matrix_ex.cpp.html</example> + <example>matrix_expressions_ex.cpp.html</example> + </examples> + + <extensions> + <extension> + <name>matrix_utilities</name> + <spec_file>dlib/matrix/matrix_utilities_abstract.h</spec_file> + <description> + This extension contains miscellaneous utility functions + for manipulating matrix objects. + </description> + </extension> + + <extension> + <name>matrix_la</name> + <spec_file>dlib/matrix/matrix_la_abstract.h</spec_file> + <description> + This extension contains linear algebra functions to calculate + QR, LU, Cholesky, eigenvalue, and singular value decompositions. It also + contains a few other miscellaneous functions that solve systems of + equations or calculate values derived from the above decompositions. + </description> + </extension> + + <extension> + <name>matrix_math_functions</name> + <spec_file>dlib/matrix/matrix_math_functions_abstract.h</spec_file> + <description>This extension contains mathematical functions that operate on each + element of a matrix independently. + </description> + </extension> + + <extension> + <name>matrix_sub_expressions</name> + <spec_file>dlib/matrix/matrix_subexp_abstract.h</spec_file> + <description> + This extension contains a number of functions for dealing with sub-matrices. + </description> + </extension> + </extensions> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>border_enumerator</name> + <file>dlib/geometry.h</file> + <spec_file>dlib/geometry/border_enumerator_abstract.h</spec_file> + <description> + This object is an <a href="containers.html#enumerable">enumerator</a> + over the border <a href="#point">points</a> of a + <a href="#rectangle">rectangle</a>. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>nearest_point</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and a + <a href="#point">point</a> and returns the point in the given + rectangle that is nearest to the given point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>nearest_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a std::vector<<a href="#rectangle">rectangle</a>> and a + <a href="#point">point</a> and identifies the rectangle that is nearest to the point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>distance_to_rect_edge</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and a + <a href="#point">point</a> and returns the Manhattan distance between + the rectangle's edge and the point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>distance_to_line</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a line and a <a href="#point">point</a> + and returns the distance from the line to the point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>clip_line_to_rectangle</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and a line segment and + returns the part of the line segment that is entirely contained within the + rectangle. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>move_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and moves + it so that it's upper left corner occupies the given location. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>resize_rect_height</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and + returns a new rectangle with the given height but otherwise with the + same edge points as the original rectangle. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>resize_rect_width</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and + returns a new rectangle with the given width but otherwise with the + same edge points as the original rectangle. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>resize_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and + returns a new rectangle with the given size but with the same upper + left corner as the original rectangle. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>translate_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> and moves + it by a given number of units along the x and y axis relative to + where it was before the move. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>center</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + Returns the center point of a <a href="#rectangle">rectangle</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>dcenter</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + Returns the center point of a <a href="#rectangle">rectangle</a>. This + is a version of <a href="#center">center()</a> which returns a double version + of the point rather than one which uses integers to represent the + result. Therefore, it is slightly more accurate. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>centered_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + There are various overloads of this function but the basic idea is + that it returns a <a href="#rectangle">rectangle</a> with a given + width and height and centered about a given point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_aspect_ratio</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function reshapes a <a href="#rectangle">rectangle</a> so that + it has a user specified aspect ratio. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>set_rect_area</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function reshapes a <a href="#rectangle">rectangle</a> so that + it has a user specified area. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>shrink_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> object, + shrinks its borders by a given amount, and returns the result. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>grow_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This function takes a <a href="#rectangle">rectangle</a> object, + grows its borders by a given amount, and returns the result. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotate_point</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a function that rotates a 2D <a href="#vector">vector</a> or + <a href="#point">point</a> object about a given point. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>point_rotator</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is an object that rotates a 2D <a href="#vector">vector</a> or + <a href="#point">point</a> object about the origin. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>point_transform</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is an object that rotates a 2D <a href="#vector">vector</a> or + <a href="#point">point</a> object about the origin and then adds a + displacement vector. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>point_transform_affine</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is an object that applies a 2D affine transformation to a <a href="#vector">vector</a> or + <a href="#point">point</a>. Note that you can use <a href="#find_affine_transform">find_affine_transform</a> + to easily create affine transforms from sets of point correspondences. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rectangle_transform</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is an object that applies a <a href="#point_transform_affine">2D affine transformation</a> + to a <a href="#rectangle">rectangle</a> or <a href="#drectangle">drectangle</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>camera_transform</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This object maps 3D <a href="#vector">points</a> into the image plane of a camera. Therefore, + you can use it to compute 2D representations of 3D data from the point of + view of some camera in 3D space. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>point_transform_affine3d</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is an object that applies a 3D affine transformation to a <a href="#vector">vector</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_affine_transform</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a routine that takes in two sets of points and finds the + best <a href="#point_transform_affine">affine transformation</a> + that maps between them. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_similarity_transform</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a routine that takes in two sets of points and finds the + best <a href="#point_transform_affine">affine transformation</a> + that maps between them. However, it considers only rotations, translations, + and uniform scale changes in finding the mapping. Therefore, it finds + a similarity transformation rather than a general affine transform. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>point_transform_projective</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is an object that applies a projective transformation to a <a href="#vector">vector</a> or + <a href="#point">point</a>. Note that you can use <a href="#find_projective_transform">find_projective_transform</a> + to easily create projective transforms from sets of point correspondences. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_projective_transform</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a routine that takes in two sets of points and finds the + best <a href="#point_transform_projective">projective transformation</a> + that maps between them. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotation_matrix</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a method for creating 2D rotation matrices. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotate_around_x</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a method for creating a <a href="#point_transform_affine3d">point_transform_affine3d</a> + that rotates points around the x-axis. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotate_around_y</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a method for creating a <a href="#point_transform_affine3d">point_transform_affine3d</a> + that rotates points around the y-axis. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rotate_around_z</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a method for creating a <a href="#point_transform_affine3d">point_transform_affine3d</a> + that rotates points around the z-axis. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>translate_point</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/point_transforms_abstract.h</spec_file> + <description> + This is a method for creating a <a href="#point_transform_affine3d">point_transform_affine3d</a> + that just translates points. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_rect</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This is a simple template function that returns a rectangle + representing the size of a 2D container (e.g. <a href="containers.html#matrix">matrix</a> or + <a href="containers.html#array2d">array2d</a>). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>drectangle</name> + <file>dlib/geometry.h</file> + <spec_file>dlib/geometry/drectangle_abstract.h</spec_file> + <description> + This object represents a rectangular region inside a Cartesian + coordinate system. It is very similar to the <a href="#rectangle">rectangle</a> + except that it uses double variables instead of longs to represent the location of the rectangle. + Therefore, it can position rectangles with sub-pixel accuracy. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rectangle</name> + <file>dlib/geometry.h</file> + <spec_file>dlib/geometry/rectangle_abstract.h</spec_file> + <description> + This object represents a rectangular region inside a Cartesian + coordinate system. It allows you to easily represent and manipulate + rectangles. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>vector</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/vector_abstract.h</spec_file> + <description> + This object represents a two or three dimensional vector. + + <p>If you + want to work with general N-dimensional column vectors then you + should the <a href="#matrix">matrix</a> object. In particular, you + should usually use a matrix with this type: + <tt>dlib::matrix<double,0,1></tt>.</p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>point</name> + <file>dlib/geometry.h</file> + <spec_file link="true">dlib/geometry/vector_abstract.h</spec_file> + <description> + This object represents a point inside a Cartesian coordinate system. + Note that a point is simply a typedef for a <a href="#vector">vector</a> + that is 2D and uses longs to represent coordinate values. + </description> + </component> + + <!-- ************************************************************************* --> + + + </components> + + <!-- ************************************************************************* --> + + +</doc> + diff --git a/ml/dlib/docs/docs/main_menu.xml b/ml/dlib/docs/docs/main_menu.xml new file mode 100644 index 00000000..bbd91f97 --- /dev/null +++ b/ml/dlib/docs/docs/main_menu.xml @@ -0,0 +1,665 @@ +<?html version="1.0" encoding="ISO-8859-1"?> + +<doc> + <menu width="145"> + <top> + <section> + <name>The Library</name> + <item> + <name>Algorithms</name> + <link>algorithms.html</link> + <chm_sub>algorithms.xml</chm_sub> + </item> + <item> + <name>Graph Tools</name> + <link>graph_tools.html</link> + <chm_sub>graph_tools.xml</chm_sub> + </item> + <item> + <name>Optimization</name> + <link>optimization.html</link> + <chm_sub>optimization.xml</chm_sub> + </item> + <item> + <name>Machine Learning</name> + <link>ml.html</link> + <chm_sub>ml.xml</chm_sub> + </item> + <item> + <name>Linear Algebra</name> + <link>linear_algebra.html</link> + <chm_sub>linear_algebra.xml</chm_sub> + </item> + <item> + <name>Bayesian Nets</name> + <link>bayes.html</link> + <chm_sub>bayes.xml</chm_sub> + </item> + <item> + <name>Containers</name> + <link>containers.html</link> + <chm_sub>containers.xml</chm_sub> + </item> + <item> + <name>API Wrappers</name> + <link>api.html</link> + <chm_sub>api.xml</chm_sub> + </item> + <item> + <name>Networking</name> + <link>network.html</link> + <chm_sub>network.xml</chm_sub> + </item> + <item> + <name>Compression</name> + <link>compression.html</link> + <chm_sub>compression.xml</chm_sub> + </item> + <item> + <name>Parsing</name> + <link>parsing.html</link> + <chm_sub>parsing.xml</chm_sub> + </item> + <item> + <name>Image Processing</name> + <link>imaging.html</link> + <chm_sub>imaging.xml</chm_sub> + </item> + <item> + <name>Metaprogramming</name> + <link>metaprogramming.html</link> + <chm_sub>metaprogramming.xml</chm_sub> + </item> + <item> + <name>Miscellaneous</name> + <link>other.html</link> + <chm_sub>other.xml</chm_sub> + </item> + </section> + + + <section> + <name>Help/Info</name> + <chm> + <item> + <name>Home</name> + <link>index.html</link> + </item> + </chm> + <web> + <item> + <name>Home</name> + <link>http://dlib.net</link> + </item> + </web> + <item> + <name>Dlib Blog</name> + <link>http://blog.dlib.net</link> + </item> + <!-- + <item> + <name>Forums</name> + <link>https://sourceforge.net/p/dclib/discussion</link> + </item> + --> + <item> + <name>Who uses dlib?</name> + <link>http://sourceforge.net/p/dclib/wiki/Known_users/</link> + </item> + + <item> + <name>Introduction</name> + <link>intro.html</link> + <chm_sub>intro.xml</chm_sub> + </item> + <item> + <name>Python API</name> + <link>python/index.html</link> + </item> + <item> + <name>How to compile</name> + <link>compile.html</link> + </item> + <item> + <name>Suggested Books</name> + <link>books.html</link> + </item> + <item> + <name>License</name> + <link>license.html</link> + </item> + <item> + <name>How to contribute</name> + <link>howto_contribute.html</link> + </item> + <item> + <name>FAQ</name> + <link>faq.html</link> + </item> + <item> + <name>Index</name> + <link>term_index.html</link> + </item> + <item nolink="true"> + <name>Examples: Python</name> + <sub> + <item> + <name>Global Optimization</name> + <link>global_optimization.py.html</link> + </item> + <item> + <name>Face Clustering</name> + <link>face_clustering.py.html</link> + </item> + <item> + <name>Face Jittering/Augmentation</name> + <link>face_jitter.py.html</link> + </item> + <item> + <name>Face Alignment</name> + <link>face_alignment.py.html</link> + </item> + <item> + <name>Video Object Tracking</name> + <link>correlation_tracker.py.html</link> + </item> + <item> + <name>Binary Classification</name> + <link>svm_binary_classifier.py.html</link> + </item> + <item> + <name>Face Landmark Detection</name> + <link>face_landmark_detection.py.html</link> + </item> + <item> + <name>Face Recognition</name> + <link>face_recognition.py.html</link> + </item> + <item> + <name>Find Candidate Object Locations</name> + <link>find_candidate_object_locations.py.html</link> + </item> + <item> + <name>Train Shape Predictor</name> + <link>train_shape_predictor.py.html</link> + </item> + <item> + <name>Face Detector</name> + <link>face_detector.py.html</link> + </item> + <item> + <name>CNN Face Detector</name> + <link>cnn_face_detector.py.html</link> + </item> + <item> + <name>Train Object Detector</name> + <link>train_object_detector.py.html</link> + </item> + <item> + <name>Sequence Segmenter</name> + <link>sequence_segmenter.py.html</link> + </item> + <item> + <name>Structural Support Vector Machines</name> + <link>svm_struct.py.html</link> + </item> + <item> + <name>SVM-Rank</name> + <link>svm_rank.py.html</link> + </item> + <item> + <name>Linear Assignment Problems</name> + <link>max_cost_assignment.py.html</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Examples: C++</name> + <sub> + <item> + <name>Deep Learning Introduction Part 1</name> + <link>dnn_introduction_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Introduction Part 2</name> + <link>dnn_introduction2_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Imagenet Classifier</name> + <link>dnn_imagenet_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Imagenet Trainer </name> + <link>dnn_imagenet_train_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Inception</name> + <link>dnn_inception_ex.cpp.html</link> + </item> + <item> + <name>Deep Metric Learning Introduction</name> + <link>dnn_metric_learning_ex.cpp.html</link> + </item> + <item> + <name>Deep Metric Learning on Images</name> + <link>dnn_metric_learning_on_images_ex.cpp.html</link> + </item> + <item> + <name>Deep Face Recognition</name> + <link>dnn_face_recognition_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Semantic Segmentation Trainer</name> + <link>dnn_semantic_segmentation_train_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Semantic Segmentation</name> + <link>dnn_semantic_segmentation_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Vehicle Detection</name> + <link>dnn_mmod_find_cars_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Multi-Class Vehicle Detection</name> + <link>dnn_mmod_find_cars2_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Vehicle Detection Trainer</name> + <link>dnn_mmod_train_find_cars_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Face Detection</name> + <link>dnn_mmod_face_detection_ex.cpp.html</link> + </item> + <item> + <name>Deep Learning Dog Hipsterizer</name> + <link>dnn_mmod_dog_hipsterizer.cpp.html</link> + </item> + <item> + <name>Deep Learning Max-Margin Object Detection</name> + <link>dnn_mmod_ex.cpp.html</link> + </item> + + <item> + <name>Random Cropper</name> + <link>random_cropper_ex.cpp.html</link> + </item> + + <item> + <name>Linear Model Predictive Control</name> + <link>mpc_ex.cpp.html</link> + </item> + <item> + <name>Video Object Tracking</name> + <link>video_tracking_ex.cpp.html</link> + </item> + <item> + <name>SQLite</name> + <link>sqlite_ex.cpp.html</link> + </item> + <item> + <name>Hough Transform</name> + <link>hough_transform_ex.cpp.html</link> + </item> + <item> + <name>Webcam Face Pose Estimation</name> + <link>webcam_face_pose_ex.cpp.html</link> + </item> + <item> + <name>Linear Assignment Problems</name> + <link>max_cost_assignment_ex.cpp.html</link> + </item> + <item> + <name>Learning to Track</name> + <link>learning_to_track_ex.cpp.html</link> + </item> + <item> + <name>Structural Support Vector Machines</name> + <link>svm_struct_ex.cpp.html</link> + </item> + <item> + <name>Sequence Segmentation</name> + <link>sequence_segmenter_ex.cpp.html</link> + </item> + <item> + <name>Train Object Detector</name> + <link>train_object_detector.cpp.html</link> + </item> + <item> + <name>One Class Classifiers</name> + <link>one_class_classifiers_ex.cpp.html</link> + </item> + <item> + <name>Parallel For Loops</name> + <link>parallel_for_ex.cpp.html</link> + </item> + <item> + <name>Numerical Integration</name> + <link>integrate_function_adapt_simp_ex.cpp.html</link> + </item> + <item> + <name>SVM-Rank</name> + <link>svm_rank_ex.cpp.html</link> + </item> + <item> + <name>BSP</name> + <link>bsp_ex.cpp.html</link> + </item> + <item> + <name>Assignment Learning</name> + <link>assignment_learning_ex.cpp.html</link> + </item> + <item> + <name>Graph Labeling</name> + <link>graph_labeling_ex.cpp.html</link> + </item> + <item> + <name>Sequence Labeling</name> + <link>sequence_labeler_ex.cpp.html</link> + </item> + <item> + <name>Object Detector</name> + <link>object_detector_ex.cpp.html</link> + </item> + <item> + <name>Object Detector Advanced</name> + <link>object_detector_advanced_ex.cpp.html</link> + </item> + <item> + <name>Running Stats</name> + <link>running_stats_ex.cpp.html</link> + </item> + <item> + <name>Config File Reader</name> + <link>config_reader_ex.cpp.html</link> + </item> + <item> + <name>Member Function Pointer</name> + <link>member_function_pointer_ex.cpp.html</link> + </item> + <item> + <name>Empirical Kernel Map</name> + <link>empirical_kernel_map_ex.cpp.html</link> + </item> + <item> + <name>Linear Manifold Regularizer</name> + <link>linear_manifold_regularizer_ex.cpp.html</link> + </item> + <item> + <name>Kernel RLS Regression</name> + <link>krls_ex.cpp.html</link> + </item> + <item> + <name>Optimization</name> + <link>optimization_ex.cpp.html</link> + </item> + <item> + <name>Non-Linear Least Squares</name> + <link>least_squares_ex.cpp.html</link> + </item> + <item> + <name>Kernel RLS Filtering</name> + <link>krls_filter_ex.cpp.html</link> + </item> + <item> + <name>Kernel Centroid</name> + <link>kcentroid_ex.cpp.html</link> + </item> + <item> + <name>Kernel K-Means Clustering</name> + <link>kkmeans_ex.cpp.html</link> + </item> + <item> + <name>Matrix</name> + <link>matrix_ex.cpp.html</link> + </item> + <item> + <name>Matrix Expressions</name> + <link>matrix_expressions_ex.cpp.html</link> + </item> + <item> + <name>3D Point Cloud</name> + <link>3d_point_cloud_ex.cpp.html</link> + </item> + <item> + <name>Image</name> + <link>image_ex.cpp.html</link> + </item> + <item> + <name>FHOG Feature Extraction</name> + <link>fhog_ex.cpp.html</link> + </item> + <item> + <name>FHOG Object Detection</name> + <link>fhog_object_detector_ex.cpp.html</link> + </item> + <item> + <name>Face Detection</name> + <link>face_detection_ex.cpp.html</link> + </item> + <item> + <name>Face Landmark Detection</name> + <link>face_landmark_detection_ex.cpp.html</link> + </item> + <item> + <name>Train Shape Predictor</name> + <link>train_shape_predictor_ex.cpp.html</link> + </item> + <item> + <name>SURF</name> + <link>surf_ex.cpp.html</link> + </item> + <item> + <name>Rank Features</name> + <link>rank_features_ex.cpp.html</link> + </item> + <item> + <name>Relevance Vector Regression</name> + <link>rvm_regression_ex.cpp.html</link> + </item> + <item> + <name>Relevance Vector Classification</name> + <link>rvm_ex.cpp.html</link> + </item> + <item> + <name>Kernel Ridge Regression</name> + <link>krr_regression_ex.cpp.html</link> + </item> + <item> + <name>KRR Classification</name> + <link>krr_classification_ex.cpp.html</link> + </item> + <item> + <name>Nu-Support Vector Machine</name> + <link>svm_ex.cpp.html</link> + </item> + <item> + <name>C-Support Vector Machine</name> + <link>svm_c_ex.cpp.html</link> + </item> + <item> + <name>Using Custom Kernels</name> + <link>using_custom_kernels_ex.cpp.html</link> + </item> + <item> + <name>Support Vector Regression</name> + <link>svr_ex.cpp.html</link> + </item> + <item> + <name>Multiclass Classification</name> + <link>multiclass_classification_ex.cpp.html</link> + </item> + <item> + <name>Custom Trainers</name> + <link>custom_trainer_ex.cpp.html</link> + </item> + <item> + <name>Model Selection</name> + <link>model_selection_ex.cpp.html</link> + </item> + <item> + <name>Online SVM</name> + <link>svm_pegasos_ex.cpp.html</link> + </item> + <item> + <name>Sparse Vectors</name> + <link>svm_sparse_ex.cpp.html</link> + </item> + <item> + <name>Neural Network</name> + <link>mlp_ex.cpp.html</link> + </item> + <item> + <name>Bayesian Network From Disk</name> + <link>bayes_net_from_disk_ex.cpp.html</link> + </item> + <item> + <name>Bayesian Network GUI</name> + <link>bayes_net_gui_ex.cpp.html</link> + </item> + <item> + <name>Bayesian Network</name> + <link>bayes_net_ex.cpp.html</link> + </item> + <item> + <name>Std C++ Allocator</name> + <link>std_allocator_ex.cpp.html</link> + </item> + <item> + <name>HTTP Server</name> + <link>server_http_ex.cpp.html</link> + </item> + <item> + <name>Base64 Encoder</name> + <link>file_to_code_ex.cpp.html</link> + </item> + <item> + <name>Sockstreambuf</name> + <link>sockstreambuf_ex.cpp.html</link> + </item> + <item> + <name>IO Streams Server</name> + <link>server_iostream_ex.cpp.html</link> + </item> + <item> + <name>IO Socket Streams</name> + <link>iosockstream_ex.cpp.html</link> + </item> + <item> + <name>Logger</name> + <link>logger_ex.cpp.html</link> + </item> + <item> + <name>Logger Advanced</name> + <link>logger_ex_2.cpp.html</link> + </item> + <item> + <name>Logger Custom Output</name> + <link>logger_custom_output_ex.cpp.html</link> + </item> + <item> + <name>XML Parser</name> + <link>xml_parser_ex.cpp.html</link> + </item> + <item> + <name>Threads</name> + <link>threads_ex.cpp.html</link> + </item> + <item> + <name>Directory Navigation</name> + <link>dir_nav_ex.cpp.html</link> + </item> + <item> + <name>GUI</name> + <link>gui_api_ex.cpp.html</link> + </item> + <item> + <name>Sockets</name> + <link>sockets_ex.cpp.html</link> + </item> + <item> + <name>Queue</name> + <link>queue_ex.cpp.html</link> + </item> + <item> + <name>Quantum Computing</name> + <link>quantum_computing_ex.cpp.html</link> + </item> + <item> + <name>Bridge</name> + <link>bridge_ex.cpp.html</link> + </item> + <item> + <name>Pipe</name> + <link>pipe_ex.cpp.html</link> + </item> + <item> + <name>Pipe 2</name> + <link>pipe_ex_2.cpp.html</link> + </item> + <item> + <name>Timer</name> + <link>timer_ex.cpp.html</link> + </item> + <item> + <name>Compress Stream</name> + <link>compress_stream_ex.cpp.html</link> + </item> + <item> + <name>Cmd Line Parser</name> + <link>compress_stream_ex.cpp.html#_top</link> + </item> + <item> + <name>Threaded Object</name> + <link>threaded_object_ex.cpp.html</link> + </item> + <item> + <name>Thread Pool</name> + <link>thread_pool_ex.cpp.html</link> + </item> + <item> + <name>Thread Function</name> + <link>thread_function_ex.cpp.html</link> + </item> + <item> + <name>Multithreaded Object</name> + <link>multithreaded_object_ex.cpp.html</link> + </item> + </sub> + </item> + </section> + + <section> + <name>Current Release</name> + <chm><item nolink="true">Version: <current_release/></item></chm> + <item> + <name>Release Notes</name> + <link>release_notes.html</link> + </item> + <item> + <name>Change Log</name> + <link>change_log.html</link> + </item> + + </section> + + <web> + <download_button> + <name><div id="dlname">Download dlib</div> + <div id="dlib_version">ver.<current_release/></div> + </name> + <link>http://dlib.net/files/dlib-<current_release/>.tar.bz2</link> + </download_button> + </web> + </top> + + <bottom> + Last Modified:<br/> + <last_modified_date/> + </bottom> + + </menu> + +</doc> + diff --git a/ml/dlib/docs/docs/metaprogramming.xml b/ml/dlib/docs/docs/metaprogramming.xml new file mode 100644 index 00000000..93d09527 --- /dev/null +++ b/ml/dlib/docs/docs/metaprogramming.xml @@ -0,0 +1,813 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Metaprogramming</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + This page documents library components that provide metaprogramming sorts of functionality. For + the most part they are useful for putting design by contract checks into code or doing various kinds of + clever things with templates. + </p> + <p> + For example, you might have a templated function that is templated on a type T and you want to + make sure that T is either a char or wchar_t type. You could place the following into your code + and it would cause the compile to error out when T was set to something other than char or wchar_t. + <br/> + <tt>COMPILE_TIME_ASSERT((is_same_type<T,char>::value || is_same_type<T,wchar_t>::value));</tt> + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="200"> + <top> + <section> + <name>Objects</name> + <item>is_pointer_type</item> + <item>is_const_type</item> + <item>is_reference_type</item> + <item>is_same_type</item> + <item>is_float_type</item> + <item>is_convertible</item> + <item>is_complex</item> + <item>is_function</item> + <item>is_signed_type</item> + <item>is_unsigned_type</item> + <item>static_switch</item> + <item>noncopyable</item> + <item>enable_if</item> + <item>is_array2d</item> + <item>is_array</item> + <item>is_graph</item> + <item>is_rand</item> + <item>is_matrix</item> + <item>is_config_reader</item> + <item>is_std_vector</item> + <item>is_pair</item> + <item>is_directed_graph</item> + <item>is_built_in_scalar_type</item> + <item>promote</item> + <item>basic_type</item> + <item>unsigned_type</item> + <item>tabs</item> + <item>tmin</item> + <item>tmax</item> + <item>compile_time_integer_list</item> + <item>make_compile_time_integer_range</item> + </section> + + <section> + <name>Global Functions</name> + <item>DLIB_ASSERT</item> + <item>DLIB_STACK_TRACE</item> + <item>DLIB_STACK_TRACE_NAMED</item> + <item>get_stack_trace</item> + <item>DLIB_CASSERT</item> + <item>COMPILE_TIME_ASSERT</item> + <item>ASSERT_ARE_SAME_TYPE</item> + <item>DLIB_ASSERT_HAS_STANDARD_LAYOUT</item> + <item>ASSERT_ARE_NOT_SAME_TYPE</item> + <item>_dT</item> + <item>is_same_object</item> + <item>assign_zero_if_built_in_scalar_type</item> + <item>wrap_function</item> + <item>DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST</item> + </section> + + <section> + <name>Other</name> + <item>portability_macros</item> + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>tmin</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template to compute the min of two values at compile time. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>tmax</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template to compute the max of two values at compile time. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compile_time_integer_list</name> + <file>dlib/metaprogramming.h</file> + <spec_file link="true">dlib/metaprogramming.h</spec_file> + <description> + This is a variadic template that can represent a list of integers. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>make_compile_time_integer_range</name> + <file>dlib/metaprogramming.h</file> + <spec_file link="true">dlib/metaprogramming.h</spec_file> + <description> + This is a variadic template that takes one number, MAX, as input + and creates a <a href="#compile_time_integer_list">compile_time_integer_list</a> + representing the range of integers [1,MAX] inclusive. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>tabs</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template to compute the absolute value a number at compile time. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>unsigned_type</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is a template that allows you to obtain the unsigned version + of any integral type. For example, unsigned_type<signed short>::type == + unsigned short. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>static_switch</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + To use this template you give it some number of boolean expressions and it + tells you which one of them is true. If more than one of them is true then + it causes a compile time error. It is useful for cases where you want to + specialize a template and you want to specialize it not by + the type of object it gets per say but instead according to the values of some + type traits associated with the various template arguments. A simple example of + this can be seen in the <a href="imaging.html#assign_pixel">assign_pixel</a>'s + implementation which can be found at the bottom of the <a href="dlib/pixel.h.html"> + dlib/pixel.h</a> file. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>enable_if</name> + <file>dlib/enable_if.h</file> + <description> + This is a family of templates from the Boost C++ libraries that makes it somewhat easier to control + template specialization. For the details see <a href="enable_if.html"> + this page</a>. Note that the header <tt>dlib/enable_if.h</tt> brings + these templates into the dlib namespace.<br/> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>noncopyable</name> + <file>dlib/noncopyable.h</file> + <spec_file link="true">dlib/noncopyable.h</spec_file> + <description> + This is a simple class that makes it easy to declare a non-copyable object. + To use it to make your own class non-copyable just inherit from it. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_convertible</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template that can be used to determine if one type is convertible + into another type. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_complex</name> + <file>dlib/matrix.h</file> + <spec_file link="true">dlib/matrix/matrix_utilities.h</spec_file> + <description> + This is a template that can be used to determine if a type is a + specialization of std::complex. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_same_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_same_type<T,U>::value == true when T and U are + the same type and false otherwise. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_float_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_float_type<T>::value == true when T is + a floating point type (i.e. float, double, or long double) and false otherwise. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_same_object</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a templated function which checks if both of its arguments are actually + references to the same object. It returns true if they are and false otherwise. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_function</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_function<T>::value == true when T is + a function type. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_signed_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_signed_type<T>::value == true when T is + a signed scalar type and false when it is an unsigned scalar + type. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_unsigned_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_unsigned_type<T>::value == true when T is + an unsigned scalar type and false when it is a signed scalar + type. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_directed_graph</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_directed_graph<T>::value == true when T + is a <a href="containers.html#directed_graph">directed_graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_built_in_scalar_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_built_in_scalar_type<T>::value == true when T + is a built in scalar type such as int, char, float, etc. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>promote</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template that takes one of the built in scalar types and gives you another + scalar type that should be big enough to hold sums of values from the original scalar + type. The new scalar type will also always be signed. + + <p> + For example, promote<uint16>::type == int32 + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>basic_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template that takes a type and strips off any const, volatile, or reference + qualifiers and gives you back the basic underlying type. + + <p> + For example, promote<const int&>::type == int + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>is_std_vector</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_std_vector<T>::value == true when T + is a <a href="containers.html#std_vector_c">std_vector_c</a> or std::vector object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_pair</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_pair<T>::value == true when T + is a std::pair object. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>is_matrix</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_matrix<T>::value == true when T + is a <a href="linear_algebra.html#matrix">matrix</a> object or some kind + of matrix expression. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_config_reader</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_config_reader<T>::value == true when T + is a <a href="parsing.html#config_reader">config_reader</a> or + config_reader_thread_safe object. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>is_graph</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_graph<T>::value == true when T + is a <a href="containers.html#graph">graph</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_array2d</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_array2d<T>::value == true when T + is an <a href="containers.html#array2d">array2d</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_array</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_array<T>::value == true when T + is an <a href="containers.html#array">array</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_rand</name> + <file>dlib/is_kind.h</file> + <spec_file link="true">dlib/is_kind.h</spec_file> + <description> + This is a template where is_rand<T>::value == true when T + is a <a href="algorithms.html#rand">rand</a> object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_reference_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_reference_type<T>::value == true when T is a reference + type and false otherwise. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_const_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_const_type<T>::value == true when T is a const + type and false otherwise. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>is_pointer_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template where is_pointer_type<T>::value == true when T is a pointer + type and false otherwise. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>ASSERT_ARE_NOT_SAME_TYPE</name> + <file>dlib/assert.h</file> + <spec_file>dlib/assert.h</spec_file> + <description> + <p> + This is a macro function for debugging. Its form is <tt>ASSERT_ARE_NOT_SAME_TYPE(type1, type2)</tt>. + If type1 and type2 are the same type then the compile will fail. This is sometimes useful + in validating template arguments. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>ASSERT_ARE_SAME_TYPE</name> + <file>dlib/assert.h</file> + <spec_file>dlib/assert.h</spec_file> + <description> + <p> + This is a macro function for debugging. Its form is <tt>ASSERT_ARE_SAME_TYPE(type1, type2)</tt>. + If type1 and type2 are not the same type then the compile will fail. This is sometimes useful + in validating template arguments. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>DLIB_ASSERT_HAS_STANDARD_LAYOUT</name> + <file>dlib/assert.h</file> + <spec_file link="true">dlib/assert.h</spec_file> + <description> + <p> + This macro is meant to cause a compiler error if a type doesn't have a simple + memory layout (like a C struct). In particular, types with simple layouts are + ones which can be copied via memcpy(). + </p> + + This was called a POD type in C++03 and in C++0x we are looking to check if + it is a "standard layout type". Once we can use C++0x we can change this macro + to something that uses the std::is_standard_layout type_traits class. + See: http://www2.research.att.com/~bs/C++0xFAQ.html#PODs + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>COMPILE_TIME_ASSERT</name> + <file>dlib/assert.h</file> + <spec_file>dlib/assert.h</spec_file> + <description> + <p> + This is a macro function for debugging. Its form is <tt>COMPILE_TIME_ASSERT(condition that should + be true)</tt>. The condition must be a compile time constant and if it is false then the compile + will fail. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + <p> + The DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST() macro is used to define traits templates + that tell you if a class has a certain member function. For example, to make a + test to see if a class has a public method with the signature void print(int) you + would say: + </p> + <blockquote> + <tt>DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST(has_print, void, print, (int))</tt> + </blockquote> + Then you can check if a class, T, has this method by looking at the boolean value: + <blockquote> + <tt>has_print<T>::value</tt> + </blockquote> + which will be true if the member function is in the T class. + + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>DLIB_CASSERT</name> + <file>dlib/assert.h</file> + <spec_file>dlib/assert.h</spec_file> + <description> + <p> + This is a macro function that is identical to the <a href="#DLIB_ASSERT">DLIB_ASSERT</a> macro + except that it is always enabled. Even if _DEBUG, DEBUG and ENABLE_ASSERTS are not defined. + </p> + <p> + Note that when this macro fails and throws an exception it also calls the global + C function dlib_assert_breakpoint(). This behavior makes it easy to set a debugging + tool to break when DLIB_CASSERT fails by setting a breakpoint on dlib_assert_breakpoint(). + </p> + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>DLIB_ASSERT</name> + <file>dlib/assert.h</file> + <spec_file>dlib/assert.h</spec_file> + <description> + <p> + This is a macro function for debugging. Its form is +<code_box>DLIB_ASSERT(condition that should be true, error message)</code_box> +or you can omit the error message and call it like: +<code_box>DLIB_ASSERT(condition that should be true)</code_box> + If the condition is false DLIB_ASSERT throws an exception of type + dlib::fatal_error with fatal_error::type == EBROKEN_ASSERT. An error message detailing + the nature of the problem is stored in the member variable info which is of type std::string. + Look in the following file for more details. The exception classes are defined + <a href="dlib/error.h.html#error">here</a>. + </p> + <p> + This macro is only enabled if _DEBUG, DEBUG or ENABLE_ASSERTS is defined. Also, if this macro <i>is</i> + enabled then ENABLE_ASSERTS will be defined even if you didn't define it. + </p> + <p> + Note that when this macro fails and throws an exception it also calls the global + C function dlib_assert_breakpoint(). This behavior makes it easy to set a debugging + tool to break when DLIB_ASSERT fails by setting a breakpoint on dlib_assert_breakpoint(). + </p> + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>DLIB_STACK_TRACE</name> + <file>dlib/assert.h</file> + <spec_file>dlib/stack_trace.h</spec_file> + <description> + <p> + This is a preprocessor macro that allows you to tag a function so + that dlib will keep track of it in a function call stack. That is, + you will be able to see a stack trace by calling <a href="#get_stack_trace">get_stack_trace</a> + if you put this macro at the top of your functions. + </p> + <p> + This macro is only enabled if DLIB_ENABLE_STACK_TRACE is defined. If it isn't defined then + this macro doesn't do anything. Also note that when this macro is defined it will + cause <a href="#DLIB_ASSERT">DLIB_ASSERT</a> and <a href="#DLIB_CASSERT">DLIB_CASSERT</a> + to include a stack trace in their error messages. + </p> + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>DLIB_STACK_TRACE_NAMED</name> + <file>dlib/assert.h</file> + <spec_file>dlib/stack_trace.h</spec_file> + <description> + This is a preprocessor macro just like <a href="#DLIB_STACK_TRACE">DLIB_STACK_TRACE</a> + except that it allows you to supply your own string to use as the function name + in the stack trace instead of the one deduced by DLIB_STACK_TRACE. + <p> + This macro is only enabled if DLIB_ENABLE_STACK_TRACE is defined. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>get_stack_trace</name> + <file>dlib/assert.h</file> + <spec_file>dlib/stack_trace.h</spec_file> + <description> + This function allows you to query the current stack trace. + <p> + This macro is only enabled if DLIB_ENABLE_STACK_TRACE is defined. + </p> + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>_dT</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a macro function for converting a string/character literal to either a char or wchar_t literal. + Its form is <tt>_dT(target character type,string or character literal)</tt> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assign_zero_if_built_in_scalar_type</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + <p> + This function assigns its argument the value of 0 if it is a built in scalar + type according to the <a href="#is_built_in_scalar_type">is_built_in_scalar_type</a> + template. If it isn't a built in scalar type then it does nothing. + </p> + <p> + This function is useful for suppressing compiler warnings about uninitialized + types inside of templates that are designed to accept the built in types + as well as user defined classes. + </p> + + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>wrap_function</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a template that allows you to turn a global function into a + function object. See the specs for more details. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>portability_macros</name> + <file>dlib/platform.h</file> + <spec_file>dlib/platform.h</spec_file> + <description> + This file #defines various macros depending on the platform being compiled under. + See the file itself for the specifics. + </description> + + </component> + + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> + diff --git a/ml/dlib/docs/docs/minus.gif b/ml/dlib/docs/docs/minus.gif Binary files differnew file mode 100644 index 00000000..1deac2fe --- /dev/null +++ b/ml/dlib/docs/docs/minus.gif diff --git a/ml/dlib/docs/docs/ml.xml b/ml/dlib/docs/docs/ml.xml new file mode 100644 index 00000000..f97e7da5 --- /dev/null +++ b/ml/dlib/docs/docs/ml.xml @@ -0,0 +1,3957 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Machine Learning</title> + + <!-- ************************************************************************* --> + + <body> + + <a href="ml_guide.svg"><img src="ml_guide.svg" width="100%"/></a> + <br/> + <br/> + <p><font style='font-size:1.4em;line-height:1.1em'> + Dlib contains a wide range of machine learning algorithms. All + designed to be highly modular, quick to execute, and simple to use + via a clean and modern C++ API. It is used in a wide range of + applications including robotics, embedded devices, mobile phones, and large + high performance computing environments. If you use dlib in your + research please cite: + </font></p> + <pre> +Davis E. King. <a href="http://jmlr.csail.mit.edu/papers/volume10/king09a/king09a.pdf">Dlib-ml: A Machine Learning Toolkit</a>. + <i>Journal of Machine Learning Research</i>, 2009 + +@Article{dlib09, + author = {Davis E. King}, + title = {Dlib-ml: A Machine Learning Toolkit}, + journal = {Journal of Machine Learning Research}, + year = {2009}, + volume = {10}, + pages = {1755-1758}, +} + </pre> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + + <center><h2><u>Primary Algorithms</u></h2></center> + <section> + <name>Binary Classification</name> + <item>svm_nu_trainer</item> + <item>svm_c_trainer</item> + <item>svm_c_linear_trainer</item> + <item>svm_c_linear_dcd_trainer</item> + <item>svm_c_ekm_trainer</item> + <item>rvm_trainer</item> + <item>svm_pegasos</item> + <item>train_probabilistic_decision_function</item> + </section> + <section> + <name>Multiclass Classification</name> + <item>one_vs_one_trainer</item> + <item>one_vs_all_trainer</item> + <item>svm_multiclass_linear_trainer</item> + </section> + <section> + <name>Regression</name> + <item>mlp</item> + <item>krls</item> + <item>rls</item> + <item>krr_trainer</item> + <item>rr_trainer</item> + <item>svr_trainer</item> + <item>svr_linear_trainer</item> + <item>rvm_regression_trainer</item> + <item>rbf_network_trainer</item> + <item>random_forest_regression_trainer</item> + </section> + <section> + <name>Structured Prediction</name> + <item nolink="true"> + <name>Problem Instances</name> + <sub> + <item>structural_svm_sequence_labeling_problem</item> + <item>structural_svm_object_detection_problem</item> + <item>structural_svm_assignment_problem</item> + <item>structural_svm_graph_labeling_problem</item> + </sub> + </item> + <item nolink="true"> + <name>Core Tools</name> + <sub> + <item>structural_svm_problem</item> + <item>structural_svm_problem_threaded</item> + <item>svm_struct_controller_node</item> + <item>svm_struct_processing_node</item> + </sub> + </item> + <item>structural_object_detection_trainer</item> + <item>structural_sequence_labeling_trainer</item> + <item>structural_sequence_segmentation_trainer</item> + <item>structural_assignment_trainer</item> + <item>structural_track_association_trainer</item> + <item>structural_graph_labeling_trainer</item> + <item>svm_rank_trainer</item> + <item>shape_predictor_trainer</item> + </section> + <section> + <name>Deep Learning</name> + + <item nolink="true"> + <name>Core Tools</name> + <sub> + <item>dnn_trainer</item> + <item>add_layer</item> + <item>add_loss_layer</item> + <item>repeat</item> + <item>add_tag_layer</item> + <item>add_skip_layer</item> + <item>layer</item> + <item>test_layer</item> + <item>resizable_tensor</item> + <item>alias_tensor</item> + </sub> + </item> + <item nolink="true"> + <name>Input Layers</name> + <sub> + <item>input</item> + <item>input_rgb_image</item> + <item>input_rgb_image_sized</item> + <item>input_rgb_image_pyramid</item> + <item> + <name>EXAMPLE_INPUT_LAYER</name> + <link>dlib/dnn/input_abstract.h.html#EXAMPLE_INPUT_LAYER</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Computational Layers</name> + <sub> + <item> + <name>EXAMPLE_COMPUTATIONAL_LAYER</name> + <link>dlib/dnn/layers_abstract.h.html#EXAMPLE_COMPUTATIONAL_LAYER_</link> + </item> + <item> + <name>fc</name> + <link>dlib/dnn/layers_abstract.h.html#fc_</link> + </item> + <item> + <name>con</name> + <link>dlib/dnn/layers_abstract.h.html#con_</link> + </item> + <item> + <name>cont</name> + <link>dlib/dnn/layers_abstract.h.html#cont_</link> + </item> + <item> + <name>scale</name> + <link>dlib/dnn/layers_abstract.h.html#scale_</link> + </item> + <item> + <name>extract</name> + <link>dlib/dnn/layers_abstract.h.html#extract_</link> + </item> + <item> + <name>mult_prev</name> + <link>dlib/dnn/layers_abstract.h.html#mult_prev_</link> + </item> + <item> + <name>upsample</name> + <link>dlib/dnn/layers_abstract.h.html#upsample_</link> + </item> + <item> + <name>l2normalize</name> + <link>dlib/dnn/layers_abstract.h.html#l2normalize_</link> + </item> + <item> + <name>dropout</name> + <link>dlib/dnn/layers_abstract.h.html#dropout_</link> + </item> + <item> + <name>multiply</name> + <link>dlib/dnn/layers_abstract.h.html#multiply_</link> + </item> + <item> + <name>bn</name> + <link>dlib/dnn/layers_abstract.h.html#bn_</link> + </item> + <item> + <name>affine</name> + <link>dlib/dnn/layers_abstract.h.html#affine_</link> + </item> + <item> + <name>max_pool</name> + <link>dlib/dnn/layers_abstract.h.html#max_pool_</link> + </item> + <item> + <name>avg_pool</name> + <link>dlib/dnn/layers_abstract.h.html#avg_pool_</link> + </item> + <item> + <name>relu</name> + <link>dlib/dnn/layers_abstract.h.html#relu_</link> + </item> + <item> + <name>concat</name> + <link>dlib/dnn/layers_abstract.h.html#concat_</link> + </item> + <item> + <name>prelu</name> + <link>dlib/dnn/layers_abstract.h.html#prelu_</link> + </item> + <item> + <name>sig</name> + <link>dlib/dnn/layers_abstract.h.html#sig_</link> + </item> + <item> + <name>htan</name> + <link>dlib/dnn/layers_abstract.h.html#htan_</link> + </item> + <item> + <name>softmax_all</name> + <link>dlib/dnn/layers_abstract.h.html#softmax_all_</link> + </item> + <item> + <name>softmax</name> + <link>dlib/dnn/layers_abstract.h.html#softmax_</link> + </item> + <item> + <name>add_prev</name> + <link>dlib/dnn/layers_abstract.h.html#add_prev_</link> + </item> + <item> + <name>inception</name> + <link>dlib/dnn/layers_abstract.h.html#inception</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Loss Layers</name> + <sub> + <item> + <name>EXAMPLE_LOSS_LAYER</name> + <link>dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_</link> + </item> + <item> + <name>loss_dot</name> + <link>dlib/dnn/loss_abstract.h.html#loss_dot_</link> + </item> + <item> + <name>loss_epsilon_insensitive</name> + <link>dlib/dnn/loss_abstract.h.html#loss_epsilon_insensitive_</link> + </item> + <item> + <name>loss_ranking</name> + <link>dlib/dnn/loss_abstract.h.html#loss_ranking_</link> + </item> + <item> + <name>loss_binary_hinge</name> + <link>dlib/dnn/loss_abstract.h.html#loss_binary_hinge_</link> + </item> + <item> + <name>loss_binary_log</name> + <link>dlib/dnn/loss_abstract.h.html#loss_binary_log_</link> + </item> + <item> + <name>loss_multimulticlass_log</name> + <link>dlib/dnn/loss_abstract.h.html#loss_multimulticlass_log_</link> + </item> + <item> + <name>loss_multiclass_log</name> + <link>dlib/dnn/loss_abstract.h.html#loss_multiclass_log_</link> + </item> + <item> + <name>loss_multiclass_log_per_pixel</name> + <link>dlib/dnn/loss_abstract.h.html#loss_multiclass_log_per_pixel_</link> + </item> + <item> + <name>loss_multiclass_log_per_pixel_weighted</name> + <link>dlib/dnn/loss_abstract.h.html#loss_multiclass_log_per_pixel_weighted_</link> + </item> + <item> + <name>loss_mmod</name> + <link>#loss_mmod_</link> + </item> + <item> + <name>loss_metric</name> + <link>#loss_metric_</link> + </item> + <item> + <name>loss_mean_squared</name> + <link>#loss_mean_squared_</link> + </item> + <item> + <name>loss_mean_squared_per_pixel</name> + <link>dlib/dnn/loss_abstract.h.html#loss_mean_squared_per_pixel_</link> + </item> + <item> + <name>loss_mean_squared_multioutput</name> + <link>dlib/dnn/loss_abstract.h.html#loss_mean_squared_multioutput_</link> + </item> + </sub> + </item> + <item nolink="true"> + <name>Solvers</name> + <sub> + <item> + <name>EXAMPLE_SOLVER</name> + <link>dlib/dnn/solvers_abstract.h.html#EXAMPLE_SOLVER</link> + </item> + <item> + <name>sgd</name> + <link>dlib/dnn/solvers_abstract.h.html#sgd</link> + </item> + <item> + <name>adam</name> + <link>dlib/dnn/solvers_abstract.h.html#adam</link> + </item> + </sub> + </item> + </section> + + <section> + <name>Clustering</name> + <item>pick_initial_centers</item> + <item>kkmeans</item> + <item>find_clusters_using_kmeans</item> + <item>find_clusters_using_angular_kmeans</item> + <item>nearest_center</item> + <item>newman_cluster</item> + <item>spectral_cluster</item> + <item>chinese_whispers</item> + <item>bottom_up_cluster</item> + <item>segment_number_line</item> + <item>modularity</item> + </section> + <section> + <name>Unsupervised</name> + <item>kcentroid</item> + <item>linearly_independent_subset_finder</item> + <item>empirical_kernel_map</item> + <item>svm_one_class_trainer</item> + <item>vector_normalizer</item> + <item>vector_normalizer_pca</item> + <item>sammon_projection</item> + <item>cca</item> + </section> + <section> + <name>Semi-Supervised/Metric Learning</name> + <item>linear_manifold_regularizer</item> + <item>discriminant_pca</item> + <item>vector_normalizer_frobmetric</item> + <item>compute_lda_transform</item> + </section> + <section> + <name>Reinforcement Learning</name> + <item>lspi</item> + </section> + <section> + <name>Feature Selection</name> + <item>rank_features</item> + <item>sort_basis_vectors</item> + <item>rank_unlabeled_training_samples</item> + </section> + + <center><h2><u>Other Tools</u></h2></center> + <section> + <name>Validation</name> + <item>cross_validate_trainer</item> + <item>cross_validate_object_detection_trainer</item> + <item>cross_validate_trainer_threaded</item> + <item>cross_validate_multiclass_trainer</item> + <item>cross_validate_regression_trainer</item> + <item>cross_validate_sequence_labeler</item> + <item>cross_validate_sequence_segmenter</item> + <item>cross_validate_assignment_trainer</item> + <item>cross_validate_track_association_trainer</item> + <item>cross_validate_graph_labeling_trainer</item> + <item>cross_validate_ranking_trainer</item> + <item>test_binary_decision_function</item> + <item>test_multiclass_decision_function</item> + <item>test_regression_function</item> + <item>test_object_detection_function</item> + <item>test_sequence_labeler</item> + <item>test_sequence_segmenter</item> + <item>test_assignment_function</item> + <item>test_track_association_function</item> + <item>test_graph_labeling_function</item> + <item>test_ranking_function</item> + <item>test_shape_predictor</item> + <item>average_precision</item> + <item>equal_error_rate</item> + <item>compute_roc_curve</item> + </section> + + <section> + <name>Trainer Adapters</name> + <item>reduced</item> + <item>reduced2</item> + <item>batch</item> + <item>probabilistic</item> + <item>verbose_batch</item> + <item>batch_cached</item> + <item>verbose_batch_cached</item> + <item>null_trainer</item> + <item>roc_c1_trainer</item> + <item>roc_c2_trainer</item> + </section> + + <section> + <name>Kernels</name> + <item>radial_basis_kernel</item> + <item>polynomial_kernel</item> + <item>sigmoid_kernel</item> + <item>linear_kernel</item> + <item>histogram_intersection_kernel</item> + <item>offset_kernel</item> + + <item>sparse_radial_basis_kernel</item> + <item>sparse_polynomial_kernel</item> + <item>sparse_sigmoid_kernel</item> + <item>sparse_linear_kernel</item> + <item>sparse_histogram_intersection_kernel</item> + + </section> + + <section> + <name>Function Objects</name> + <item>random_forest_regression_function</item> + <item>decision_function</item> + <item>projection_function</item> + <item>distance_function</item> + <item>probabilistic_decision_function</item> + <item>probabilistic_function</item> + <item>normalized_function</item> + <item>one_vs_one_decision_function</item> + <item>multiclass_linear_decision_function</item> + <item>one_vs_all_decision_function</item> + <item>sequence_labeler</item> + <item>sequence_segmenter</item> + <item>assignment_function</item> + <item>track_association_function</item> + <item>graph_labeler</item> + <item>policy</item> + </section> + + <section> + <name>Data IO</name> + <item>load_image_dataset_metadata</item> + <item>load_image_dataset</item> + <item>save_image_dataset_metadata</item> + <item>load_libsvm_formatted_data</item> + <item>save_libsvm_formatted_data</item> + <item>fix_nonzero_indexing</item> + <item>make_bounding_box_regression_training_data</item> + </section> + + <section> + <name>Miscellaneous</name> + <item>simplify_linear_decision_function</item> + <item>fill_lisf</item> + <item>randomize_samples</item> + <item>is_binary_classification_problem</item> + <item>is_sequence_labeling_problem</item> + <item>is_sequence_segmentation_problem</item> + <item>is_graph_labeling_problem</item> + <item>is_assignment_problem</item> + <item>is_track_association_problem</item> + <item>is_forced_assignment_problem</item> + <item>approximate_distance_function</item> + <item>is_learning_problem</item> + <item>select_all_distinct_labels</item> + <item>find_gamma_with_big_centroid_gap</item> + <item>compute_mean_squared_distance</item> + <item>kernel_matrix</item> + <item>ranking_pair</item> + <item>is_ranking_problem</item> + <item>count_ranking_inversions</item> + <item>learn_platt_scaling</item> + <item>process_sample</item> + + + + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + + <!-- ************************************************************************* --> + + <component> + <name>add_layer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + In dlib, a deep neural network is composed of 3 main parts. An + <a href="dlib/dnn/input_abstract.h.html#EXAMPLE_INPUT_LAYER">input layer</a>, a bunch of + <a href="dlib/dnn/layers_abstract.h.html#EXAMPLE_COMPUTATIONAL_LAYER_">computational layers</a>, + and optionally a + <a href="dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_">loss layer</a>. The add_layer + class is the central object which adds a computational layer onto an + input layer or an entire network. Therefore, deep neural networks are created + by stacking many layers on top of each other using the add_layer class. + <p> + For a tutorial showing how this is accomplished read + the <a href="dnn_introduction_ex.cpp.html">DNN Introduction part 1</a> and + <a href="dnn_introduction2_ex.cpp.html">DNN Introduction part 2</a>. + </p> + </description> + <examples> + <example>dnn_introduction_ex.cpp.html</example> + <example>dnn_introduction2_ex.cpp.html</example> + <example>dnn_inception_ex.cpp.html</example> + <example>dnn_imagenet_ex.cpp.html</example> + <example>dnn_imagenet_train_ex.cpp.html</example> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_find_cars_ex.cpp.html</example> + <example>dnn_mmod_find_cars2_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + <example>dnn_mmod_face_detection_ex.cpp.html</example> + <example>dnn_mmod_dog_hipsterizer.cpp.html</example> + <example>dnn_metric_learning_ex.cpp.html</example> + <example>dnn_metric_learning_on_images_ex.cpp.html</example> + <example>dnn_face_recognition_ex.cpp.html</example> + <example>dnn_semantic_segmentation_ex.cpp.html</example> + <example>dnn_semantic_segmentation_train_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>dnn_trainer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/trainer_abstract.h</spec_file> + <description> + This object is a tool training a deep neural network. + <p> + For a tutorial showing how this is accomplished read + the <a href="dnn_introduction_ex.cpp.html">DNN Introduction part 1</a> and + <a href="dnn_introduction2_ex.cpp.html">DNN Introduction part 2</a>. + </p> + </description> + <examples> + <example>dnn_introduction_ex.cpp.html</example> + <example>dnn_introduction2_ex.cpp.html</example> + <example>dnn_inception_ex.cpp.html</example> + <example>dnn_imagenet_ex.cpp.html</example> + <example>dnn_imagenet_train_ex.cpp.html</example> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + <example>dnn_metric_learning_ex.cpp.html</example> + <example>dnn_metric_learning_on_images_ex.cpp.html</example> + <example>dnn_semantic_segmentation_train_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>add_loss_layer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + This object is a tool for stacking a <a href="dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_">loss layer</a> + on the top of a deep neural network. + </description> + <examples> + <example>dnn_introduction_ex.cpp.html</example> + <example>dnn_introduction2_ex.cpp.html</example> + <example>dnn_inception_ex.cpp.html</example> + <example>dnn_imagenet_ex.cpp.html</example> + <example>dnn_imagenet_train_ex.cpp.html</example> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_find_cars_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + <example>dnn_metric_learning_ex.cpp.html</example> + <example>dnn_metric_learning_on_images_ex.cpp.html</example> + <example>dnn_face_recognition_ex.cpp.html</example> + <example>dnn_mmod_face_detection_ex.cpp.html</example> + <example>dnn_mmod_dog_hipsterizer.cpp.html</example> + <example>dnn_semantic_segmentation_train_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>repeat</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + This object adds N copies of a computational layer onto a deep neural network. + It is essentially the same as using <a href="#add_layer">add_layer</a> N times, + except that it involves less typing, and for large N, will compile much faster. + </description> + <examples> + <example>dnn_introduction2_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>add_tag_layer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + This object is a tool for tagging layers in a deep neural network. These tags make it + easy to refer to the tagged layer in other parts of your code. + Specifically, this object adds a new layer onto a deep neural network. + However, this layer simply performs the identity transform. + This means it is a no-op and its presence does not change the + behavior of the network. It exists solely to be used by <a + href="#add_skip_layer">add_skip_layer</a> or <a href="#layer">layer()</a> to reference a + particular part of a network. + + <p> + For a tutorial showing how to use tagging see the + <a href="dnn_introduction2_ex.cpp.html">dnn_introduction2_ex.cpp</a> + example program. + </p> + </description> + <examples> + <example>dnn_introduction2_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>add_skip_layer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + This object adds a new layer to a deep neural network which draws its input + from a <a href="#add_tag_layer">tagged layer</a> rather than from + the immediate predecessor layer as is normally done. + + <p> + For a tutorial showing how to use tagging see the + <a href="dnn_introduction2_ex.cpp.html">dnn_introduction2_ex.cpp</a> + example program. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>layer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + This global function references a <a href="#add_tag_layer">tagged layer</a> + inside a deep neural network object. + + <p> + For a tutorial showing how to use tagging see the + <a href="dnn_introduction2_ex.cpp.html">dnn_introduction2_ex.cpp</a> + example program. + </p> + </description> + <examples> + <example>dnn_introduction2_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>input</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/input_abstract.h</spec_file> + <description> + This is a simple input layer type for use in a deep neural network which + takes some kind of image as input and loads it into a network. + </description> + <examples> + <example>dnn_introduction_ex.cpp.html</example> + <example>dnn_introduction2_ex.cpp.html</example> + <example>dnn_inception_ex.cpp.html</example> + <example>dnn_imagenet_ex.cpp.html</example> + <example>dnn_imagenet_train_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>input_rgb_image</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/input_abstract.h</spec_file> + <description> + This is a simple input layer type for use in a deep neural network + which takes an RGB image as input and loads it into a network. It + is very similar to the <a href="#input">input layer</a> except that + it allows you to subtract the average color value from each color + channel when converting an image to a tensor. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>input_rgb_image_sized</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/input_abstract.h</spec_file> + <description> + This layer has an interface and behavior identical to <a href="#input_rgb_image">input_rgb_image</a> + except that it requires input images to have a particular size. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>input_rgb_image_pyramid</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/input_abstract.h</spec_file> + <description> + This input layer works with RGB images of type <tt>matrix<rgb_pixel></tt>. It is + identical to <a href="#input_rgb_image">input_rgb_image</a> except that it + outputs a tensor containing a <a href="imaging.html#create_tiled_pyramid">tiled image pyramid</a> + of each input image rather than a simple copy of each image. + This input layer is meant to be used with a loss layer such as the <a href="#loss_mmod_">MMOD loss layer</a>. + </description> + <examples> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_find_cars_ex.cpp.html</example> + <example>dnn_mmod_find_cars2_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + <example>dnn_mmod_face_detection_ex.cpp.html</example> + <example>dnn_mmod_dog_hipsterizer.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>loss_mmod_</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/loss_abstract.h</spec_file> + <description> + This object is a <a href="dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_">loss layer</a> + for a deep neural network. In particular, it implements the Max Margin Object Detection + loss defined in the paper: + <blockquote><a href="http://arxiv.org/abs/1502.00046">Max-Margin Object Detection</a> by Davis E. King.</blockquote> + + This means you use this loss if you want to detect the locations of objects + in images. For example, here are some videos that uses loss_mmod to find cars: + + <center><youtube src="https://www.youtube.com/embed/4B3bzmxMAZU"/></center> + <br/> + <center><youtube src="https://www.youtube.com/embed/OHbJ7HhbG74"/></center> + + </description> + <examples> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_find_cars_ex.cpp.html</example> + <example>dnn_mmod_find_cars2_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + <example>dnn_mmod_face_detection_ex.cpp.html</example> + <example>dnn_mmod_dog_hipsterizer.cpp.html</example> + <example>cnn_face_detector.py.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>loss_metric_</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/loss_abstract.h</spec_file> + <description> + This object is a <a href="dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_">loss layer</a> + for a deep neural network. In particular, it allows you to learn to map objects + into a vector space where objects sharing the same class label are close to + each other, while objects with different labels are far apart. + </description> + <examples> + <example>dnn_metric_learning_ex.cpp.html</example> + <example>dnn_metric_learning_on_images_ex.cpp.html</example> + <example>dnn_face_recognition_ex.cpp.html</example> + <example>face_recognition.py.html</example> + <example>face_clustering.py.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>loss_mean_squared_</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/loss_abstract.h</spec_file> + <description> + This object is a <a href="dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_">loss layer</a> + for a deep neural network. In particular, it implements the mean squared loss, which is + appropriate for regression problems. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>loss_mean_squared_multioutput_</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/loss_abstract.h</spec_file> + <description> + This object is a <a href="dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_">loss layer</a> + for a deep neural network. In particular, it implements the mean squared loss, which is + appropriate for regression problems. It is identical to the <a href="#loss_mean_squared_">loss_mean_squared_</a> + loss except this version supports multiple output values. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_layer</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/core_abstract.h</spec_file> + <description> + This is a function which tests if a layer object correctly implements + the <a href="dlib/dnn/layers_abstract.h.html#EXAMPLE_COMPUTATIONAL_LAYER_">documented contract</a> + for a computational layer in a deep neural network. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>resizable_tensor</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/tensor_abstract.h</spec_file> + <description> + This object represents a 4D array of float values, all stored contiguously + in memory. Importantly, it keeps two copies of the floats, one on the host + CPU side and another on the GPU device side. It automatically performs the + necessary host/device transfers to keep these two copies of the data in + sync. + + <p> + All transfers to the device happen asynchronously with respect to the + default CUDA stream so that CUDA kernel computations can overlap with data + transfers. However, any transfers from the device to the host happen + synchronously in the default CUDA stream. Therefore, you should perform + all your CUDA kernel launches on the default stream so that transfers back + to the host do not happen before the relevant computations have completed. + </p> + + <p> + If DLIB_USE_CUDA is not #defined then this object will not use CUDA at all. + Instead, it will simply store one host side memory block of floats. + </p> + + <p> + Finally, the convention in dlib code is to interpret the tensor as a set of + num_samples() 3D arrays, each of dimension k() by nr() by nc(). Also, + while this class does not specify a memory layout, the convention is to + assume that indexing into an element at coordinates (sample,k,nr,nc) can be + accomplished via: + <tt>host()[((sample*t.k() + k)*t.nr() + nr)*t.nc() + nc]</tt> + </p> + + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>alias_tensor</name> + <file>dlib/dnn.h</file> + <spec_file link="true">dlib/dnn/tensor_abstract.h</spec_file> + <description> + This object is a <a href="#resizable_tensor">tensor</a> that + aliases another tensor. That is, it doesn't have its own block of + memory but instead simply holds pointers to the memory of another + tensor object. It therefore allows you to efficiently break a tensor + into pieces and pass those pieces into functions. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>modularity</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/clustering/modularity_clustering_abstract.h</spec_file> + <description> + This function computes the modularity of a particular graph clustering. This + is a number that tells you how good the clustering is. In particular, it + is the measure optimized by the <a href="#newman_cluster">newman_cluster</a> + routine. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>newman_cluster</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/clustering/modularity_clustering_abstract.h</spec_file> + <description> + This function performs the clustering algorithm described in the paper + <blockquote>Modularity and community structure in networks by M. E. J. Newman.</blockquote> + In particular, this is a method for automatically clustering the nodes in a + graph into groups. The method is able to automatically determine the number + of clusters and does not have any parameters. In general, it is a very good + clustering technique. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>spectral_cluster</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/clustering/spectral_cluster_abstract.h</spec_file> + <description> + This function performs the clustering algorithm described in the paper + <blockquote>On spectral clustering: Analysis and an algorithm by Ng, Jordan, and Weiss.</blockquote> + </description> + <examples> + <example>kkmeans_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bottom_up_cluster</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/clustering/bottom_up_cluster_abstract.h</spec_file> + <description> + This function runs a bottom up agglomerative clustering algorithm. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>segment_number_line</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/clustering/bottom_up_cluster_abstract.h</spec_file> + <description> + This routine clusters real valued scalars in essentially linear time. + It uses a combination of bottom up clustering and a simple greedy scan + to try and find the most compact set of ranges that contain all + given scalar values. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>chinese_whispers</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/clustering/chinese_whispers_abstract.h</spec_file> + <description> + This function performs the clustering algorithm described in the paper + <blockquote>Chinese Whispers - an Efficient Graph Clustering Algorithm and its + Application to Natural Language Processing Problems by Chris Biemann.</blockquote> + In particular, this is a method for automatically clustering the nodes in a + graph into groups. The method is able to automatically determine the number + of clusters. + </description> + <examples> + <example>dnn_face_recognition_ex.cpp.html</example> + <example>face_clustering.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_clusters_using_kmeans</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/svm/kkmeans_abstract.h</spec_file> + <description> + This is a simple linear kmeans clustering implementation. + It uses Euclidean distance to compare samples. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_clusters_using_angular_kmeans</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/svm/kkmeans_abstract.h</spec_file> + <description> + This is a simple linear kmeans clustering implementation. + To compare a sample to a cluster, it measures the angle between them + with respect to the origin. Therefore, it tries to find clusters + of points that all have small angles between each cluster member. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>nearest_center</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/svm/kkmeans_abstract.h</spec_file> + <description> + This function takes a list of cluster centers and a query vector + and identifies which cluster center is nearest to the query vector. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pick_initial_centers</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/svm/kkmeans_abstract.h</spec_file> + <description> + This is a function that you can use to seed data clustering algorithms + like the <a href="#kkmeans">kkmeans</a> clustering method. What it + does is pick reasonable starting points for clustering by basically + trying to find a set of points that are all far away from each other. + </description> + <examples> + <example>kkmeans_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>ranking_pair</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/ranking_tools_abstract.h</spec_file> + <description> + This object is used to contain a ranking example. Therefore, ranking_pair + objects are used to represent training examples for learning-to-rank tasks, + such as those used by the <a href="#svm_rank_trainer">svm_rank_trainer</a>. + </description> + <examples> + <example>svm_rank_ex.cpp.html</example> + <example>svm_rank.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>kernel_matrix</name> + <file>dlib/svm.h</file> + <spec_file>dlib/svm/kernel_matrix_abstract.h</spec_file> + <description> + This is a simple set of functions that makes it easy to turn a kernel + object and a set of samples into a kernel matrix. It takes these two + things and returns a <a href="dlib/matrix/matrix_exp_abstract.h.html#matrix_exp">matrix expression</a> + that represents the kernel matrix. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_ranking_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/ranking_tools_abstract.h</spec_file> + <description> + This function takes a set of training data for a learning-to-rank problem + and reports back if it could possibly be a well formed problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>count_ranking_inversions</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/ranking_tools_abstract.h</spec_file> + <description> + Given two sets of objects, X and Y, and an ordering relationship defined + between their elements, this function counts how many times we see an element + in the set Y ordered before an element in the set X. Additionally, this + routine executes efficiently in O(n*log(n)) time via the use of quick sort. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>mlp</name> + <file>dlib/mlp.h</file> + <spec_file>dlib/mlp/mlp_kernel_abstract.h</spec_file> + <description> + <p> + This object represents a multilayer layer perceptron network that is + trained using the back propagation algorithm. The training algorithm also + incorporates the momentum method. That is, each round of back propagation + training also adds a fraction of the previous update. This fraction + is controlled by the momentum term set in the constructor. + </p> + <p> + It is worth noting that a MLP is, in general, very inferior to modern + kernel algorithms such as the support vector machine. So if you haven't + tried any other techniques with your data you really should. + </p> + </description> + + <examples> + <example>mlp_ex.cpp.html</example> + </examples> + + <implementations> + <implementation> + <name>mlp_kernel_1</name> + <file>dlib/mlp/mlp_kernel_1.h</file> + <description> + This is implemented in the obvious way. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for mlp_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>krls</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/krls_abstract.h</spec_file> + <description> + This is an implementation of the kernel recursive least squares algorithm + described in the paper The Kernel Recursive Least Squares Algorithm by Yaakov Engel. + <p> + The long and short of this algorithm is that it is an online kernel based + regression algorithm. You give it samples (x,y) and it learns the function + f(x) == y. For a detailed description of the algorithm read the above paper. + </p> + <p> + Note that if you want to use the linear kernel then you would + be better off using the <a href="#rls">rls</a> object as it + is optimized for this case. + </p> + </description> + + <examples> + <example>krls_ex.cpp.html</example> + <example>krls_filter_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rls</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/rls_abstract.h</spec_file> + <description> + This is an implementation of the linear version of the recursive least + squares algorithm. It accepts training points incrementally and, at + each step, maintains the solution to the following optimization problem: + <blockquote> + find w minimizing: 0.5*dot(w,w) + C*sum_i(y_i - trans(x_i)*w)^2 + </blockquote> + Where (x_i,y_i) are training pairs. x_i is some vector and y_i is a target + scalar value. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_pegasos</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/pegasos_abstract.h</spec_file> + <description> + This object implements an online algorithm for training a support + vector machine for solving binary classification problems. + + <p> + The implementation of the Pegasos algorithm used by this object is based + on the following excellent paper: + <blockquote> + Pegasos: Primal estimated sub-gradient solver for SVM (2007) + by Shai Shalev-Shwartz, Yoram Singer, Nathan Srebro + In ICML + </blockquote> + </p> + <p> + This SVM training algorithm has two interesting properties. First, the + pegasos algorithm itself converges to the solution in an amount of time + unrelated to the size of the training set (in addition to being quite fast + to begin with). This makes it an appropriate algorithm for learning from + very large datasets. Second, this object uses the <a href="#kcentroid">kcentroid</a> object + to maintain a sparse approximation of the learned decision function. + This means that the number of support vectors in the resulting decision + function is also unrelated to the size of the dataset (in normal SVM + training algorithms, the number of support vectors grows approximately + linearly with the size of the training set). + </p> + <p> + However, if you are considering using svm_pegasos, you should also try the + <a href="#svm_c_linear_trainer">svm_c_linear_trainer</a> for linear + kernels or <a href="#svm_c_ekm_trainer">svm_c_ekm_trainer</a> for non-linear + kernels since these other trainers are, usually, faster and easier to use + than svm_pegasos. + </p> + </description> + + <examples> + <example>svm_pegasos_ex.cpp.html</example> + <example>svm_sparse_ex.cpp.html</example> + <example>svm_binary_classifier.py.html</example> + </examples> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>kkmeans</name> + <file>dlib/clustering.h</file> + <spec_file link="true">dlib/svm/kkmeans_abstract.h</spec_file> + <description> + This is an implementation of a kernelized k-means clustering algorithm. + It performs k-means clustering by using the <a href="#kcentroid">kcentroid</a> object. + <p> + If you want to use the linear kernel (i.e. do a normal k-means clustering) then you + should use the <a href="#find_clusters_using_kmeans">find_clusters_using_kmeans</a> routine. + </p> + </description> + + <examples> + <example>kkmeans_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>vector_normalizer</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object represents something that can learn to normalize a set + of column vectors. In particular, normalized column vectors should + have zero mean and a variance of one. + </description> + + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>vector_normalizer_frobmetric</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/vector_normalizer_frobmetric_abstract.h</spec_file> + <description> + This object is a tool for performing the FrobMetric distance metric + learning algorithm described in the following paper: + <blockquote> + A Scalable Dual Approach to Semidefinite Metric Learning + By Chunhua Shen, Junae Kim, Lei Wang, in CVPR 2011 + </blockquote> + Therefore, this object is a tool that takes as input training triplets + (anchor, near, far) of vectors and attempts to learn a linear + transformation T such that: + <blockquote> <tt>length(T*anchor-T*near) + 1 < length(T*anchor - T*far)</tt> </blockquote> + That is, you give a bunch of anchor vectors and for each anchor vector you + specify some vectors which should be near to it and some that should be far + form it. This object then tries to find a transformation matrix that makes + the "near" vectors close to their anchors while the "far" vectors are + farther away. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compute_lda_transform</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/lda_abstract.h</spec_file> + <description> + This function performs the dimensionality reducing version of linear + discriminant analysis. That is, you give it a set of labeled vectors and it + returns a linear transform that maps the input vectors into a new space that + is good for distinguishing between the different classes. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>discriminant_pca</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/dpca_abstract.h</spec_file> + <description> + This object implements the Discriminant PCA technique described in the paper: + <blockquote> + A New Discriminant Principal Component Analysis Method with Partial Supervision (2009) + by Dan Sun and Daoqiang Zhang + </blockquote> + This algorithm is basically a straightforward generalization of the classical PCA + technique to handle partially labeled data. It is useful if you want to learn a linear + dimensionality reduction rule using a bunch of data that is partially labeled. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sammon_projection</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/sammon_abstract.h</spec_file> + <description> + This is a function object that computes the Sammon projection of a set + of N points in a L-dimensional vector space onto a d-dimensional space + (d < L), according to the paper: + <blockquote> + A Nonlinear Mapping for Data Structure Analysis (1969) by J.W. Sammon + </blockquote> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cca</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/cca_abstract.h</spec_file> + <description> + This function performs a canonical correlation analysis between two sets + of vectors. Additionally, it is designed to be very fast, even for large + datasets of over a million high dimensional vectors. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>vector_normalizer_pca</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/statistics_abstract.h</spec_file> + <description> + This object represents something that can learn to normalize a set + of column vectors. In particular, normalized column vectors should + have zero mean and a variance of one. + + This object also uses principal component analysis for the purposes + of reducing the number of elements in a vector. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>linearly_independent_subset_finder</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/linearly_independent_subset_finder_abstract.h</spec_file> + <description> + <p> + This is an implementation of an online algorithm for recursively finding a + set (aka dictionary) of linearly independent vectors in a kernel induced + feature space. To use it you decide how large you would like the dictionary + to be and then you feed it sample points. + </p> + <p> + The implementation uses the Approximately Linearly Dependent metric described + in the paper The Kernel Recursive Least Squares Algorithm by Yaakov Engel to + decide which points are more linearly independent than others. The metric is + simply the squared distance between a test point and the subspace spanned by + the set of dictionary vectors. + </p> + <p> + Each time you present this object with a new sample point + it calculates the projection distance and if it is sufficiently large then this + new point is included into the dictionary. Note that this object can be configured + to have a maximum size. Once the max dictionary size is reached each new point + kicks out a previous point. This is done by removing the dictionary vector that + has the smallest projection distance onto the others. That is, the "least linearly + independent" vector is removed to make room for the new one. + </p> + </description> + <examples> + <example>empirical_kernel_map_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>fill_lisf</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/linearly_independent_subset_finder_abstract.h</spec_file> + <description> + This is a simple function for filling a + <a href="#linearly_independent_subset_finder">linearly_independent_subset_finder</a> + with data points by using random sampling. + </description> + <examples> + <example>empirical_kernel_map_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>sort_basis_vectors</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sort_basis_vectors_abstract.h</spec_file> + <description> + A kernel based learning method ultimately needs to select a set of basis functions + represented by a particular choice of kernel and a set of basis vectors. + sort_basis_vectors() is a function which attempts to perform supervised + basis set selection. In particular, you give it a candidate set of basis + vectors and it sorts them according to how useful they are for solving + a particular decision problem. + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>rank_unlabeled_training_samples</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/active_learning_abstract.h</spec_file> + <description> + This routine implements an active learning method for selecting the most + informative data sample to label out of a set of unlabeled samples. + In particular, it implements the MaxMin Margin and Ratio Margin methods + described in the paper: + <blockquote> + Support Vector Machine Active Learning with Applications to Text Classification + by Simon Tong and Daphne Koller. + </blockquote> + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>linear_manifold_regularizer</name> + <file>dlib/manifold_regularization.h</file> + <spec_file link="true">dlib/manifold_regularization/linear_manifold_regularizer_abstract.h</spec_file> + <description> + <p> + Many learning algorithms attempt to minimize a function that, at a high + level, looks like this: +<pre> + f(w) == complexity + training_set_error +</pre> + </p> + + <p> + The idea is to find the set of parameters, w, that gives low error on + your training data but also is not "complex" according to some particular + measure of complexity. This strategy of penalizing complexity is + usually called regularization. + </p> + + <p> + In the above setting, all the training data consists of labeled samples. + However, it would be nice to be able to benefit from unlabeled data. + The idea of manifold regularization is to extract useful information from + unlabeled data by first defining which data samples are "close" to each other + (perhaps by using their 3 <a href="graph_tools.html#find_k_nearest_neighbors">nearest neighbors</a>) + and then adding a term to + the above function that penalizes any decision rule which produces + different outputs on data samples which we have designated as being close. + </p> + + <p> + It turns out that it is possible to transform these manifold regularized learning + problems into the normal form shown above by applying a certain kind of + preprocessing to all our data samples. Once this is done we can use a + normal learning algorithm, such as the <a href="#svm_c_linear_trainer">svm_c_linear_trainer</a>, + on just the + labeled data samples and obtain the same output as the manifold regularized + learner would have produced. + </p> + + <p> + The linear_manifold_regularizer is a tool for creating this preprocessing + transformation. In particular, the transformation is linear. That is, it + is just a matrix you multiply with all your samples. For a more detailed + discussion of this topic you should consult the following paper. In + particular, see section 4.2. This object computes the inverse T matrix + described in that section. + <blockquote> + Linear Manifold Regularization for Large Scale Semi-supervised Learning + by Vikas Sindhwani, Partha Niyogi, and Mikhail Belkin + </blockquote> + </p> + + </description> + <examples> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>empirical_kernel_map</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/empirical_kernel_map_abstract.h</spec_file> + <description> + <p> + This object represents a map from objects of sample_type (the kind of object + a <a href="dlib/svm/kernel_abstract.h.html#Kernel_Function_Objects">kernel function</a> + operates on) to finite dimensional column vectors which + represent points in the kernel feature space defined by whatever kernel + is used with this object. + </p> + + <p> + To use the empirical_kernel_map you supply it with a particular kernel and a set of + basis samples. After that you can present it with new samples and it will project + them into the part of kernel feature space spanned by your basis samples. + </p> + + <p> + This means the empirical_kernel_map is a tool you can use to very easily kernelize + any algorithm that operates on column vectors. All you have to do is select a + set of basis samples and then use the empirical_kernel_map to project all your + data points into the part of kernel feature space spanned by those basis samples. + Then just run your normal algorithm on the output vectors and it will be effectively + kernelized. + </p> + + <p> + Regarding methods to select a set of basis samples, if you are working with only a + few thousand samples then you can just use all of them as basis samples. + Alternatively, the + <a href="#linearly_independent_subset_finder">linearly_independent_subset_finder</a> + often works well for selecting a basis set. I also find that picking a + <a href="algorithms.html#random_subset_selector">random subset</a> typically works well. + </p> + </description> + <examples> + <example>empirical_kernel_map_ex.cpp.html</example> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + </component> + + + <!-- ************************************************************************* --> + + + <component> + <name>kcentroid</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kcentroid_abstract.h</spec_file> + <description> + + This object represents a weighted sum of sample points in a kernel induced + feature space. It can be used to kernelize any algorithm that requires only + the ability to perform vector addition, subtraction, scalar multiplication, + and inner products. + + <p> + An example use of this object is as an online algorithm for recursively estimating + the centroid of a sequence of training points. This object then allows you to + compute the distance between the centroid and any test points. So you can use + this object to predict how similar a test point is to the data this object has + been trained on (larger distances from the centroid indicate dissimilarity/anomalous + points). + </p> + + <p> + The object internally keeps a set of "dictionary vectors" + that are used to represent the centroid. It manages these vectors using the + sparsification technique described in the paper The Kernel Recursive Least + Squares Algorithm by Yaakov Engel. This technique allows us to keep the + number of dictionary vectors down to a minimum. In fact, the object has a + user selectable tolerance parameter that controls the trade off between + accuracy and number of stored dictionary vectors. + </p> + + </description> + + <examples> + <example>kcentroid_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>train_probabilistic_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + <p> + Trains a <a href="#probabilistic_function">probabilistic_function</a> using + some sort of binary classification trainer object such as the <a href="#svm_nu_trainer">svm_nu_trainer</a> or + <a href="#krr_trainer">krr_trainer</a>. + </p> + The probability model is created by using the technique described in the following papers: + <blockquote> + Probabilistic Outputs for Support Vector Machines and + Comparisons to Regularized Likelihood Methods by + John C. Platt. March 26, 1999 + </blockquote> + <blockquote> + A Note on Platt's Probabilistic Outputs for Support Vector Machines + by Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng + </blockquote> + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>learn_platt_scaling</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + + <p> + This function is an implementation of the algorithm described in the following + papers: + <blockquote> + Probabilistic Outputs for Support Vector Machines and Comparisons to + Regularized Likelihood Methods by John C. Platt. March 26, 1999 + <br/> + <br/> + A Note on Platt's Probabilistic Outputs for Support Vector Machines + by Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng + </blockquote> + </p> + <p> + This function is the tool used to implement the + <a href="#train_probabilistic_decision_function">train_probabilistic_decision_function</a> routine. + </p> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>probabilistic</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This is a trainer adapter which simply runs the trainer it is given though the + <a href="#train_probabilistic_decision_function">train_probabilistic_decision_function</a> + function. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rbf_network_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/rbf_network_abstract.h</spec_file> + <description> + Trains a radial basis function network and outputs a <a href="#decision_function">decision_function</a>. + This object can be used for either regression or binary classification problems. + It's worth pointing out that this object is essentially an unregularized version + of <a href="#krr_trainer">kernel ridge regression</a>. This means + you should really prefer to use kernel ridge regression instead. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>random_forest_regression_trainer</name> + <file>dlib/random_forest.h</file> + <spec_file link="true">dlib/random_forest/random_forest_regression_abstract.h</spec_file> + <description> + This object implements Breiman's classic random forest regression + algorithm. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>random_forest_regression_function</name> + <file>dlib/random_forest.h</file> + <spec_file link="true">dlib/random_forest/random_forest_regression_abstract.h</spec_file> + <description> + This object represents a random forest that maps objects to real numbers. You + can learn its parameters using the <a href="#random_forest_regression_trainer">random_forest_regression_trainer</a>. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rvm_regression_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/rvm_abstract.h</spec_file> + <description> + <p> + Trains a relevance vector machine for solving regression problems. + Outputs a <a href="#decision_function">decision_function</a> that represents the learned + regression function. + </p> + The implementation of the RVM training algorithm used by this library is based + on the following paper: + <blockquote> + Tipping, M. E. and A. C. Faul (2003). Fast marginal likelihood maximisation + for sparse Bayesian models. In C. M. Bishop and B. J. Frey (Eds.), Proceedings + of the Ninth International Workshop on Artificial Intelligence and Statistics, + Key West, FL, Jan 3-6. + </blockquote> + </description> + <examples> + <example>rvm_regression_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>rvm_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/rvm_abstract.h</spec_file> + <description> + <p> + Trains a relevance vector machine for solving binary classification problems. + Outputs a <a href="#decision_function">decision_function</a> that represents the learned classifier. + </p> + The implementation of the RVM training algorithm used by this library is based + on the following paper: + <blockquote> + Tipping, M. E. and A. C. Faul (2003). Fast marginal likelihood maximisation + for sparse Bayesian models. In C. M. Bishop and B. J. Frey (Eds.), Proceedings + of the Ninth International Workshop on Artificial Intelligence and Statistics, + Key West, FL, Jan 3-6. + </blockquote> + </description> + <examples> + <example>rvm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>krr_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/krr_trainer_abstract.h</spec_file> + <description> + <p> + Performs kernel ridge regression and outputs a <a href="#decision_function">decision_function</a> that + represents the learned function. + </p> + The implementation is done using the <a href="#empirical_kernel_map">empirical_kernel_map</a> and + <a href="#linearly_independent_subset_finder">linearly_independent_subset_finder</a> to kernelize + the <a href="#rr_trainer">rr_trainer</a> object. Thus it allows you to run the algorithm on large + datasets and obtain sparse outputs. It is also capable of automatically estimating its + regularization parameter using leave-one-out cross-validation. + </description> + <examples> + <example>krr_regression_ex.cpp.html</example> + <example>krr_classification_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>rr_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/rr_trainer_abstract.h</spec_file> + <description> + <p> + Performs linear ridge regression and outputs a <a href="#decision_function">decision_function</a> that + represents the learned function. In particular, this object can only be used with + the <a href="#linear_kernel">linear_kernel</a>. It is optimized for the linear case where + the number of features in each sample vector is small (i.e. on the order of 1000 or less since the + algorithm is cubic in the number of features.). + If you want to use a nonlinear kernel then you should use the <a href="#krr_trainer">krr_trainer</a>. + </p> + This object is capable of automatically estimating its regularization parameter using + leave-one-out cross-validation. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svr_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svr_trainer_abstract.h</spec_file> + <description> + <p> + This object implements a trainer for performing epsilon-insensitive support + vector regression. It is implemented using the <a href="optimization.html#solve_qp3_using_smo">SMO</a> algorithm, + allowing the use of non-linear kernels. + If you are interested in performing support vector regression with a linear kernel and you + have a lot of training data then you should use the <a href="#svr_linear_trainer">svr_linear_trainer</a> + which is highly optimized for this case. + </p> + The implementation of the eps-SVR training algorithm used by this object is based + on the following paper: + <ul> + <li>Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector + machines, 2001. Software available at + <a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a></li> + </ul> + </description> + <examples> + <example>svr_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svr_linear_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svr_linear_trainer_abstract.h</spec_file> + <description> + This object implements a trainer for performing epsilon-insensitive support + vector regression. It uses the <a href="optimization.html#oca">oca</a> + optimizer so it is very efficient at solving this problem when + linear kernels are used, making it suitable for use with large + datasets. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_nu_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_nu_trainer_abstract.h</spec_file> + <description> + <p> + Trains a nu support vector machine for solving binary classification problems and + outputs a <a href="#decision_function">decision_function</a>. + It is implemented using the <a href="optimization.html#solve_qp2_using_smo">SMO</a> algorithm. + </p> + The implementation of the nu-svm training algorithm used by this library is based + on the following excellent papers: + <ul> + <li>Chang and Lin, Training {nu}-Support Vector Classifiers: Theory and Algorithms</li> + <li>Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector + machines, 2001. Software available at + <a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a></li> + </ul> + </description> + <examples> + <example>svm_ex.cpp.html</example> + <example>model_selection_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_one_class_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_one_class_trainer_abstract.h</spec_file> + <description> + <p> + Trains a one-class support vector classifier and outputs a <a href="#decision_function">decision_function</a>. + It is implemented using the <a href="optimization.html#solve_qp3_using_smo">SMO</a> algorithm. + </p> + The implementation of the one-class training algorithm used by this library is based + on the following paper: + <ul> + <li>Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector + machines, 2001. Software available at + <a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a></li> + </ul> + </description> + <examples> + <example>one_class_classifiers_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_c_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_c_trainer_abstract.h</spec_file> + <description> + <p> + Trains a C support vector machine for solving binary classification problems + and outputs a <a href="#decision_function">decision_function</a>. + It is implemented using the <a href="optimization.html#solve_qp3_using_smo">SMO</a> algorithm. + </p> + The implementation of the C-SVM training algorithm used by this library is based + on the following paper: + <ul> + <li>Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector + machines, 2001. Software available at + <a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a></li> + </ul> + </description> + <examples> + <example>svm_c_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_c_linear_dcd_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_c_linear_dcd_trainer_abstract.h</spec_file> + <description> + This object represents a tool for training the C formulation of + a support vector machine to solve binary classification problems. + It is optimized for the case where linear kernels are used and + is implemented using the method described in the + following paper: + <blockquote> + A Dual Coordinate Descent Method for Large-scale Linear SVM + by Cho-Jui Hsieh, Kai-Wei Chang, and Chih-Jen Lin + </blockquote> + + This trainer has the ability to disable the bias term and also + to force the last element of the learned weight vector to be 1. + Additionally, it can be warm-started from the solution to a previous + training run. + </description> + <examples> + <example>one_class_classifiers_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_c_linear_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_c_linear_trainer_abstract.h</spec_file> + <description> + This object represents a tool for training the C formulation of + a support vector machine to solve binary classification problems. + It is optimized for the case where linear kernels are used and + is implemented using the <a href="optimization.html#oca">oca</a> + optimizer and uses the exact line search described in the + following paper: + <blockquote> + Optimized Cutting Plane Algorithm for Large-Scale Risk Minimization + by Vojtech Franc, Soren Sonnenburg; Journal of Machine Learning + Research, 10(Oct):2157--2192, 2009. + </blockquote> + + This trainer has the ability to restrict the learned weights to non-negative + values. + </description> + <examples> + <example>svm_sparse_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_rank_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_rank_trainer_abstract.h</spec_file> + <description> + This object represents a tool for training a ranking support vector machine + using linear kernels. In particular, this object is a tool for training + the Ranking SVM described in the paper: + <blockquote> + Optimizing Search Engines using Clickthrough Data by Thorsten Joachims + </blockquote> + Finally, note that the implementation of this object is done using the + <a href="optimization.html#oca">oca</a> optimizer and + <a href="#count_ranking_inversions">count_ranking_inversions</a> method. + This means that it runs in O(n*log(n)) time, making it suitable for use + with large datasets. + </description> + <examples> + <example>svm_rank_ex.cpp.html</example> + <example>svm_rank.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>shape_predictor_trainer</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/shape_predictor_trainer_abstract.h</spec_file> + <description> + This object is a tool for training <a href="imaging.html#shape_predictor">shape_predictors</a> + based on annotated training images. Its implementation uses the algorithm described in: + <blockquote> + One Millisecond Face Alignment with an Ensemble of Regression Trees + by Vahid Kazemi and Josephine Sullivan, CVPR 2014 + </blockquote> + It is capable of learning high quality shape models. For example, this is an example output + for one of the faces in the HELEN face dataset: <br/><br/> + <img src='face_landmarking_example.png'/> + + </description> + <examples> + <example>train_shape_predictor_ex.cpp.html</example> + <example>train_shape_predictor.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_c_ekm_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_c_ekm_trainer_abstract.h</spec_file> + <description> + This object represents a tool for training the C formulation of + a support vector machine for solving binary classification problems. + It is implemented using the <a href="#empirical_kernel_map">empirical_kernel_map</a> + to kernelize the <a href="#svm_c_linear_trainer">svm_c_linear_trainer</a>. This makes it a very fast algorithm + capable of learning from very large datasets. + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>normalized_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a container for another function + object and an instance of the <a href="#vector_normalizer">vector_normalizer</a> object. + + It automatically normalizes all inputs before passing them + off to the contained function object. + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>probabilistic_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a binary decision function for use with + kernel-based learning-machines. It returns an + estimate of the probability that a given sample is in the +1 class. + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>probabilistic_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a binary decision function for use with + any kind of binary classifier. It returns an + estimate of the probability that a given sample is in the +1 class. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>distance_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a point in kernel induced feature space. + You may use this object to find the distance from the point it + represents to points in input space as well as other points + represented by distance_functions. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a classification or regression function that was + learned by a kernel based learning algorithm. Therefore, it is a function + object that takes a sample object and returns a scalar value. + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>one_vs_one_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/one_vs_one_decision_function_abstract.h</spec_file> + <description> + This object represents a multiclass classifier built out + of a set of binary classifiers. Each binary classifier + is used to vote for the correct multiclass label using a + one vs. one strategy. Therefore, if you have N classes then + there will be N*(N-1)/2 binary classifiers inside this object. + </description> + <examples> + <example>multiclass_classification_ex.cpp.html</example> + <example>custom_trainer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>one_vs_one_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/one_vs_one_trainer_abstract.h</spec_file> + <description> + This object is a tool for turning a bunch of binary classifiers + into a multiclass classifier. It does this by training the binary + classifiers in a one vs. one fashion. That is, if you have N possible + classes then it trains N*(N-1)/2 binary classifiers which are then used + to vote on the identity of a test sample. + </description> + <examples> + <example>multiclass_classification_ex.cpp.html</example> + <example>custom_trainer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>one_vs_all_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/one_vs_all_decision_function_abstract.h</spec_file> + <description> + This object represents a multiclass classifier built out + of a set of binary classifiers. Each binary classifier + is used to vote for the correct multiclass label using a + one vs. all strategy. Therefore, if you have N classes then + there will be N binary classifiers inside this object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sequence_labeler</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sequence_labeler_abstract.h</spec_file> + <description> + This object is a tool for doing sequence labeling. In particular, + it is capable of representing sequence labeling models such as + those produced by Hidden Markov SVMs or Conditional Random fields. + See the following papers for an introduction to these techniques: + <blockquote> + Hidden Markov Support Vector Machines by + Y. Altun, I. Tsochantaridis, T. Hofmann + <br/> + Shallow Parsing with Conditional Random Fields by + Fei Sha and Fernando Pereira + </blockquote> + </description> + <examples> + <example>sequence_labeler_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sequence_segmenter</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sequence_segmenter_abstract.h</spec_file> + <description> + This object is a tool for segmenting a sequence of objects into a set of + non-overlapping chunks. An example sequence segmentation task is to take + English sentences and identify all the named entities. In this example, + you would be using a sequence_segmenter to find all the chunks of + contiguous words which refer to proper names. + + <p> + Internally, the sequence_segmenter uses the BIO (Begin, Inside, Outside) or + BILOU (Begin, Inside, Last, Outside, Unit) sequence tagging model. + Moreover, it is implemented using a <a href="#sequence_labeler">sequence_labeler</a> + object and therefore sequence_segmenter objects are examples of + chain structured conditional random field style sequence + taggers. + </p> + </description> + <examples> + <example>sequence_segmenter.py.html</example> + <example>sequence_segmenter_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>assignment_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/assignment_function_abstract.h</spec_file> + <description> + This object is a tool for solving the optimal assignment problem given a + user defined method for computing the quality of any particular assignment. + </description> + <examples> + <example>assignment_learning_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>track_association_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/track_association_function_abstract.h</spec_file> + <description> + This object is a tool that helps you implement an object tracker. So for + example, if you wanted to track people moving around in a video then this + object can help. In particular, imagine you have a tool for detecting the + positions of each person in an image. Then you can run this person + detector on the video and at each time step, i.e. at each frame, you get a + set of person detections. However, that by itself doesn't tell you how + many people there are in the video and where they are moving to and from. + To get that information you need to figure out which detections match each + other from frame to frame. This is where the track_association_function + comes in. It performs the detection to track association. It will also do + some of the track management tasks like creating a new track when a + detection doesn't match any of the existing tracks. + + <p> + Internally, this object is implemented using the + <a href="#assignment_function">assignment_function</a> object. + In fact, it's really just a thin wrapper around assignment_function and + exists just to provide a more convenient interface to users doing detection + to track association. + </p> + </description> + <examples> + <example>learning_to_track_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>lspi</name> + <file>dlib/control.h</file> + <spec_file link="true">dlib/control/lspi_abstract.h</spec_file> + <description> + This object is an implementation of the reinforcement learning algorithm + described in the following paper: + <blockquote> + Lagoudakis, Michail G., and Ronald Parr. "Least-squares policy + iteration." The Journal of Machine Learning Research 4 (2003): + 1107-1149. + </blockquote> + + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>policy</name> + <file>dlib/control.h</file> + <spec_file link="true">dlib/control/approximate_linear_models_abstract.h</spec_file> + <description> + This is a policy (i.e. a control law) based on a linear function approximator. + You can use a tool like <a href="#lspi">lspi</a> to learn the parameters + of a policy. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>process_sample</name> + <file>dlib/control.h</file> + <spec_file link="true">dlib/control/approximate_linear_models_abstract.h</spec_file> + <description> + This object holds a training sample for a reinforcement learning algorithm + (e.g. <a href="#lspi">lspi</a>). + In particular, it contains a state, action, reward, next state sample from + some process. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_labeler</name> + <file>dlib/graph_cuts.h</file> + <spec_file link="true">dlib/graph_cuts/graph_labeler_abstract.h</spec_file> + <description> + This object is a tool for labeling each node in a <a href="containers.html#graph">graph</a> + with a value of true or false, subject to a labeling consistency constraint between + nodes that share an edge. In particular, this object is useful for + representing a graph labeling model learned via some machine learning + method, such as the <a href="#structural_graph_labeling_trainer">structural_graph_labeling_trainer</a>. + </description> + <examples> + <example>graph_labeling_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>multiclass_linear_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a multiclass classifier built out of a set of + binary classifiers. Each binary classifier is used to vote for the + correct multiclass label using a one vs. all strategy. Therefore, + if you have N classes then there will be N binary classifiers inside + this object. Additionally, this object is linear in the sense that + each of these binary classifiers is a simple linear plane. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>one_vs_all_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/one_vs_all_trainer_abstract.h</spec_file> + <description> + This object is a tool for turning a bunch of binary classifiers + into a multiclass classifier. It does this by training the binary + classifiers in a one vs. all fashion. That is, if you have N possible + classes then it trains N binary classifiers which are then used + to vote on the identity of a test sample. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_multiclass_linear_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/svm_multiclass_linear_trainer_abstract.h</spec_file> + <description> + This object represents a tool for training a multiclass support + vector machine. It is optimized for the case where linear kernels + are used and implemented using the <a href="#structural_svm_problem">structural_svm_problem</a> + object. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>projection_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/function_abstract.h</spec_file> + <description> + This object represents a function that takes a data sample and projects + it into kernel feature space. The result is a real valued column vector that + represents a point in a kernel feature space. Instances of + this object are created using the + <a href="#empirical_kernel_map">empirical_kernel_map</a>. + </description> + <examples> + <example>linear_manifold_regularizer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>offset_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kernel_abstract.h</spec_file> + <description> + This object represents a kernel with a fixed value offset + added to it. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>linear_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kernel_abstract.h</spec_file> + <description> + This object represents a linear function kernel for use with + kernel learning machines. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>histogram_intersection_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kernel_abstract.h</spec_file> + <description> + This object represents a histogram intersection kernel for use with + kernel learning machines. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sigmoid_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kernel_abstract.h</spec_file> + <description> + This object represents a sigmoid kernel for use with + kernel learning machines. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>polynomial_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kernel_abstract.h</spec_file> + <description> + This object represents a polynomial kernel for use with + kernel learning machines. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>radial_basis_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/kernel_abstract.h</spec_file> + <description> + This object represents a radial basis function kernel for use with + kernel learning machines. + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>sparse_histogram_intersection_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sparse_kernel_abstract.h</spec_file> + <description> + This object represents a histogram intersection kernel kernel for use with + kernel learning machines that operate on + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sparse_sigmoid_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sparse_kernel_abstract.h</spec_file> + <description> + This object represents a sigmoid kernel for use with + kernel learning machines that operate on + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sparse_linear_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sparse_kernel_abstract.h</spec_file> + <description> + This object represents a linear kernel for use with + kernel learning machines that operate on + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sparse_polynomial_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sparse_kernel_abstract.h</spec_file> + <description> + This object represents a polynomial kernel for use with + kernel learning machines that operate on + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sparse_radial_basis_kernel</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/sparse_kernel_abstract.h</spec_file> + <description> + This object represents a radial basis function kernel for use with + kernel learning machines that operate on + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a>. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>is_binary_classification_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function simply takes two vectors, the first containing feature vectors and + the second containing labels, and reports back if the two could possibly + contain data for a well formed classification problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_sequence_labeling_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function takes a set of training data for a sequence labeling problem + and reports back if it could possibly be a well formed sequence labeling problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_sequence_segmentation_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function takes a set of training data for a sequence segmentation problem + and reports back if it could possibly be a well formed sequence segmentation problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_assignment_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function takes a set of training data for an assignment problem + and reports back if it could possibly be a well formed assignment problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_track_association_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function takes a set of training data for a track association learning problem + and reports back if it could possibly be a well formed track association problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_graph_labeling_problem</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_graph_labeling_problem_abstract.h</spec_file> + <description> + This function takes a set of training data for a graph labeling problem + and reports back if it could possibly be a well formed problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_forced_assignment_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function takes a set of training data for a forced assignment problem + and reports back if it could possibly be a well formed forced assignment problem. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_learning_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + This function simply takes two vectors, the first containing feature vectors and + the second containing labels, and reports back if the two could possibly + contain data for a well formed learning problem. In this case it just means + that the two vectors have the same length and aren't empty. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>select_all_distinct_labels</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/multiclass_tools_abstract.h</spec_file> + <description> + This is a function which determines all distinct values present in a + std::vector and returns the result. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>simplify_linear_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/simplify_linear_decision_function_abstract.h</spec_file> + <description> + This is a set of functions that takes various forms of linear <a href="#decision_function">decision functions</a> + and collapses them down so that they only compute a single dot product when invoked. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>randomize_samples</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + Randomizes the order of samples in a column vector containing sample data. + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rank_features</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/feature_ranking_abstract.h</spec_file> + <description> + Finds a ranking of the top N (a user supplied parameter) features in a set of data + from a two class classification problem. It + does this by computing the distance between the centroids of both classes in kernel defined + feature space. Good features are then ones that result in the biggest separation between + the two centroids. + </description> + <examples> + <example>rank_features_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_mnist_dataset</name> + <file>dlib/data_io.h</file> + <spec_file>dlib/data_io/mnist_abstract.h</spec_file> + <description> + Loads the <a href="http://yann.lecun.com/exdb/mnist/">MNIST dataset</a> from disk. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_image_dataset</name> + <file>dlib/data_io.h</file> + <spec_file link="true">dlib/data_io/load_image_dataset_abstract.h</spec_file> + <description> + This is a function which loads the list of images indicated by an + <a href="#load_image_dataset_metadata">image dataset metadata file</a> + as well as the box locations for each image. It makes loading the + data necessary to train an <a href="imaging.html#object_detector">object_detector</a> + a little more convenient. + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_image_dataset_metadata</name> + <file>dlib/data_io.h</file> + <spec_file link="true">dlib/data_io/image_dataset_metadata.h</spec_file> + <description> + dlib comes with a graphical tool for annotating images with + labeled rectangles. The tool produces an XML file containing these + annotations. Therefore, load_image_dataset_metadata() is a routine + for parsing these XML files. Note also that this is the metadata + format used by the image labeling tool included with dlib in the + tools/imglab folder. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>save_image_dataset_metadata</name> + <file>dlib/data_io.h</file> + <spec_file link="true">dlib/data_io/image_dataset_metadata.h</spec_file> + <description> + This routine is a tool for saving labeled image metadata to an + XML file. In particular, this routine saves the metadata into a + form which can be read by the <a href="#load_image_dataset_metadata">load_image_dataset_metadata</a> + routine. Note also that this is the metadata + format used by the image labeling tool included with dlib in the + tools/imglab folder. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>load_libsvm_formatted_data</name> + <file>dlib/data_io.h</file> + <spec_file link="true">dlib/data_io/libsvm_io_abstract.h</spec_file> + <description> + This is a function that loads the data from a file that uses + the LIBSVM format. It loads the data into a std::vector of + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a>. + If you want to load data into dense vectors (i.e. + dlib::matrix objects) then you can use the <a href="linear_algebra.html#sparse_to_dense">sparse_to_dense</a> + function to perform the conversion. Also, some LIBSVM formatted files number + their features beginning with 1 rather than 0. If this bothers you, then you + can fix it by using the <a href="#fix_nonzero_indexing">fix_nonzero_indexing</a> function + on the data after it is loaded. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>save_libsvm_formatted_data</name> + <file>dlib/data_io.h</file> + <spec_file link="true">dlib/data_io/libsvm_io_abstract.h</spec_file> + <description> + This is actually a pair of overloaded functions. Between the two of them + they let you save <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse</a> + or dense data vectors to file using the LIBSVM format. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>make_bounding_box_regression_training_data</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/shape_predictor_trainer_abstract.h</spec_file> + <description> + Suppose you have an object detector that can roughly locate objects in an + image. This means your detector draws boxes around objects, but these are + <i>rough</i> boxes in the sense that they aren't positioned super accurately. For + instance, HOG based detectors usually have a stride of 8 pixels. So the + positional accuracy is going to be, at best, +/-8 pixels. + + <p> + If you want to get better positional accuracy one easy thing to do is train a + <a href="#shape_predictor_trainer">shape_predictor</a> to give you the location + of the object's box. The make_bounding_box_regression_training_data() routine + helps you do this by creating an appropriate training dataset. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>fix_nonzero_indexing</name> + <file>dlib/data_io.h</file> + <spec_file link="true">dlib/data_io/libsvm_io_abstract.h</spec_file> + <description> + This is a simple function that takes a std::vector of + <a href="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors">sparse vectors</a> + and makes sure they are zero-indexed (e.g. makes sure the first index value is zero). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_gamma_with_big_centroid_gap</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/feature_ranking_abstract.h</spec_file> + <description> + This is a function that tries to pick a reasonable default value for the + gamma parameter of the <a href="#radial_basis_kernel">radial_basis_kernel</a>. It + picks the parameter that gives the largest separation between the centroids, in + kernel feature space, of two classes of data. + </description> + <examples> + <example>rank_features_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compute_mean_squared_distance</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/feature_ranking_abstract.h</spec_file> + <description> + This is a function that simply finds the average squared distance between all + pairs of a set of data samples. It is often convenient to use the reciprocal + of this value as the estimate of the gamma parameter of the + <a href="#radial_basis_kernel">radial_basis_kernel</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>batch</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/pegasos_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#batch_trainer">batch_trainer</a> objects. + </description> + <examples> + <example>svm_pegasos_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>verbose_batch</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/pegasos_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#batch_trainer">batch_trainer</a> objects. This function + generates a batch_trainer that will print status messages to standard + output so that you can observe the progress of a training algorithm. + </description> + <examples> + <example>svm_pegasos_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>batch_cached</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/pegasos_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#batch_trainer">batch_trainer</a> objects that are setup + to use a kernel matrix cache. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>verbose_batch_cached</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/pegasos_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#batch_trainer">batch_trainer</a> objects. This function + generates a batch_trainer that will print status messages to standard + output so that you can observe the progress of a training algorithm. + It will also be configured to use a kernel matrix cache. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>batch_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/pegasos_abstract.h</spec_file> + <description> + This is a batch trainer object that is meant to wrap online trainer objects + that create <a href="#decision_function">decision_functions</a>. It + turns an online learning algorithm such as <a href="#svm_pegasos">svm_pegasos</a> + into a batch learning object. This allows you to use objects like + svm_pegasos with functions (e.g. <a href="#cross_validate_trainer">cross_validate_trainer</a>) + that expect batch mode training objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>null_trainer_type</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/null_trainer_abstract.h</spec_file> + <description> + This object is a simple tool for turning a <a href="#decision_function">decision_function</a> + (or any object with an interface compatible with decision_function) + into a trainer object that always returns the original decision + function when you try to train with it. + + <p> + dlib contains a few "training post processing" algorithms (e.g. + <a href="#reduced">reduced</a> and <a href="#reduced2">reduced2</a>). These tools + take in a trainer object, + tell it to perform training, and then they take the output decision + function and do some kind of post processing to it. The null_trainer_type + object is useful because you can use it to run an already + learned decision function through the training post processing + algorithms by turning a decision function into a null_trainer_type + and then giving it to a post processor. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>null_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/null_trainer_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#null_trainer_type">null_trainer_type</a> + objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>roc_c1_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/roc_trainer_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#roc_trainer_type">roc_trainer_type</a> objects that are + setup to pick a point on the ROC curve with respect to the +1 class. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>roc_c2_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/roc_trainer_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#roc_trainer_type">roc_trainer_type</a> objects that are + setup to pick a point on the ROC curve with respect to the -1 class. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>roc_trainer_type</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/roc_trainer_abstract.h</spec_file> + <description> + This object is a simple trainer post processor that allows you to + easily adjust the bias term in a trained decision_function object. + That is, this object lets you pick a point on the ROC curve and + it will adjust the bias term appropriately. + + <p> + So for example, suppose you wanted to set the bias term so that + the accuracy of your decision function on +1 labeled samples was 99%. + To do this you would use an instance of this object declared as follows: + <tt>roc_trainer_type<trainer_type>(your_trainer, 0.99, +1);</tt> + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>reduced_decision_function_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/reduced_abstract.h</spec_file> + <description> + This is a batch trainer object that is meant to wrap other batch trainer objects + that create <a href="#decision_function">decision_function</a> objects. + It performs post processing on the output decision_function objects + with the intent of representing the decision_function with fewer + basis vectors. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>reduced</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/reduced_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#reduced_decision_function_trainer">reduced_decision_function_trainer</a> + objects. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>reduced2</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/reduced_abstract.h</spec_file> + <description> + This is a convenience function for creating + <a href="#reduced_decision_function_trainer2">reduced_decision_function_trainer2</a> + objects. + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>reduced_decision_function_trainer2</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/reduced_abstract.h</spec_file> + <description> + <p> + This is a batch trainer object that is meant to wrap other batch trainer objects + that create <a href="#decision_function">decision_function</a> objects. + It performs post processing on the output decision_function objects + with the intent of representing the decision_function with fewer + basis vectors. + </p> + <p> + It begins by performing the same post processing as + the <a href="#reduced_decision_function_trainer">reduced_decision_function_trainer</a> + object but it also performs a global gradient based optimization + to further improve the results. The gradient based optimization is + implemented using the <a href="#approximate_distance_function">approximate_distance_function</a> routine. + </p> + </description> + <examples> + <example>svm_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>approximate_distance_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/reduced_abstract.h</spec_file> + <description> + This function attempts to find a <a href="#distance_function">distance_function</a> object which is close + to a target distance_function. That is, it searches for an X such that target(X) is + minimized. Critically, X may be set to use fewer basis vectors than the target. + + <p>The optimization begins with an initial guess supplied by the user + and searches for an X which locally minimizes target(X). Since + this problem can have many local minima the quality of the starting point + can significantly influence the results. </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_binary_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + Tests a <a href="#decision_function">decision_function</a> that represents a binary decision function and + returns the test accuracy. + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_multiclass_decision_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_multiclass_trainer_abstract.h</spec_file> + <description> + Tests a multiclass decision function (e.g. <a href="#one_vs_one_decision_function">one_vs_one_decision_function</a>) + and returns a confusion matrix describing the results. + </description> + <examples> + <example>multiclass_classification_ex.cpp.html</example> + <example>custom_trainer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>cross_validate_trainer_threaded</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/svm_threaded_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied binary classification trainer object such + as the <a href="#svm_nu_trainer">svm_nu_trainer</a> or <a href="#rbf_network_trainer">rbf_network_trainer</a>. + This function does the same thing as <a href="#cross_validate_trainer">cross_validate_trainer</a> + except this function also allows you to specify how many threads of execution to use. + So you can use this function to take advantage of a multi-core system to perform + cross validation faster. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/svm_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied binary classification trainer object such + as the <a href="#svm_nu_trainer">svm_nu_trainer</a> or <a href="#rbf_network_trainer">rbf_network_trainer</a>. + </description> + <examples> + <example>svm_ex.cpp.html</example> + <example>model_selection_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_multiclass_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_multiclass_trainer_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied multiclass classification trainer object such + as the <a href="#one_vs_one_trainer">one_vs_one_trainer</a>. The result is described by a + confusion matrix. + </description> + <examples> + <example>multiclass_classification_ex.cpp.html</example> + <example>custom_trainer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_regression_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_regression_trainer_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied regression trainer object such + as the <a href="#svr_trainer">svr_trainer</a> and returns the mean squared error + and R-squared value. + </description> + <examples> + <example>svr_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_sequence_labeler</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_sequence_labeler_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied sequence labeling trainer object such + as the <a href="#structural_sequence_labeling_trainer">structural_sequence_labeling_trainer</a> + and returns a confusion matrix describing the results. + </description> + <examples> + <example>sequence_labeler_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_sequence_segmenter</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_sequence_segmenter_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied sequence segmentation trainer object such + as the <a href="#structural_sequence_segmentation_trainer">structural_sequence_segmentation_trainer</a> + and returns the resulting precision, recall, and F1-score. + </description> + <examples> + <example>sequence_segmenter.py.html</example> + <example>sequence_segmenter_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_assignment_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_assignment_trainer_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied assignment trainer object such + as the <a href="#structural_assignment_trainer">structural_assignment_trainer</a> + and returns the fraction of assignments predicted correctly. + </description> + <examples> + <example>assignment_learning_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_track_association_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/cross_validate_track_association_trainer_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied track association trainer object such + as the <a href="#structural_track_association_trainer">structural_track_association_trainer</a> + and returns the fraction of detections which were correctly associated to their tracks. + </description> + <examples> + <example>learning_to_track_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_graph_labeling_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/cross_validate_graph_labeling_trainer_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied graph labeling trainer object such + as the <a href="#structural_graph_labeling_trainer">structural_graph_labeling_trainer</a> + and returns the fraction of assignments predicted correctly. + </description> + <examples> + <example>graph_labeling_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_ranking_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/ranking_tools_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied ranking trainer object such + as the <a href="#svm_rank_trainer">svm_rank_trainer</a> + and returns the fraction of ranking pairs ordered correctly as well as the mean + average precision. + </description> + <examples> + <example>svm_rank_ex.cpp.html</example> + <example>svm_rank.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_sequence_labeler</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_sequence_labeler_abstract.h</spec_file> + <description> + Tests a <a href="#sequence_labeler">sequence_labeler</a> on a set of data + and returns a confusion matrix describing the results. + </description> + <examples> + <example>sequence_labeler_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_sequence_segmenter</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_sequence_segmenter_abstract.h</spec_file> + <description> + Tests a <a href="#sequence_segmenter">sequence_segmenter</a> on a set of data + and returns the resulting precision, recall, and F1-score. + </description> + <examples> + <example>sequence_segmenter.py.html</example> + <example>sequence_segmenter_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_assignment_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_assignment_trainer_abstract.h</spec_file> + <description> + Tests an <a href="#assignment_function">assignment_function</a> on a set of data + and returns the fraction of assignments predicted correctly. + </description> + <examples> + <example>assignment_learning_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_track_association_function</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/cross_validate_track_association_trainer_abstract.h</spec_file> + <description> + Tests a <a href="#track_association_function">track_association_function</a> on a set of data + and returns the fraction of detections which were correctly associated to their tracks. + </description> + <examples> + <example>learning_to_track_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_graph_labeling_function</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/cross_validate_graph_labeling_trainer_abstract.h</spec_file> + <description> + Tests a <a href="#graph_labeler">graph_labeler</a> on a set of data + and returns the fraction of labels predicted correctly. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>average_precision</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/average_precision_abstract.h</spec_file> + <description> + This function computes the average precision of a ranking. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>equal_error_rate</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/lda_abstract.h</spec_file> + <description> + This function finds a threshold that best separates the elements of two + vectors by selecting the threshold with equal error rate. It also reports + the value of the equal error rate. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>compute_roc_curve</name> + <file>dlib/statistics.h</file> + <spec_file link="true">dlib/statistics/lda_abstract.h</spec_file> + <description> + This function computes a ROC curve (receiver operating characteristic curve). + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_ranking_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/ranking_tools_abstract.h</spec_file> + <description> + Tests a <a href="#decision_function">decision_function</a>'s ability to correctly + rank a dataset and returns the resulting ranking accuracy and mean average precision metrics. + </description> + <examples> + <example>svm_rank_ex.cpp.html</example> + <example>svm_rank.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_shape_predictor</name> + <file>dlib/image_processing.h</file> + <spec_file link="true">dlib/image_processing/shape_predictor_abstract.h</spec_file> + <description> + Tests a <a href="imaging.html#shape_predictor">shape_predictor</a>'s ability to correctly + predict the part locations of objects. The output is the average distance (measured in pixels) between + each part and its true location. You can optionally normalize each distance using a + user supplied scale. For example, when performing face landmarking, you might want to + normalize the distances by the interocular distance. + </description> + <examples> + <example>train_shape_predictor_ex.cpp.html</example> + <example>train_shape_predictor.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cross_validate_object_detection_trainer</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_object_detection_trainer_abstract.h</spec_file> + <description> + Performs k-fold cross validation on a user supplied object detection trainer such + as the <a href="#structural_object_detection_trainer">structural_object_detection_trainer</a> + and returns the precision and recall. + </description> + <examples> + <example>object_detector_ex.cpp.html</example> + <example>object_detector_advanced_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_object_detection_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_object_detection_trainer_abstract.h</spec_file> + <description> + Tests an object detector such + as the <a href="imaging.html#object_detector">object_detector</a> + and returns the precision and recall. + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + <example>object_detector_ex.cpp.html</example> + <example>object_detector_advanced_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + <example>dnn_mmod_ex.cpp.html</example> + <example>dnn_mmod_train_find_cars_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>test_regression_function</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/cross_validate_regression_trainer_abstract.h</spec_file> + <description> + Tests a regression function (e.g. <a href="#decision_function">decision_function</a>) + and returns the mean squared error and R-squared value. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_svm_problem</name> + <file>dlib/svm.h</file> + <spec_file link="true">dlib/svm/structural_svm_problem_abstract.h</spec_file> + <description> + This object, when used with the <a href="optimization.html#oca">oca</a> optimizer, is a tool + for solving the optimization problem associated + with a structural support vector machine. A structural SVM is a supervised + machine learning method for learning to predict complex outputs. This is + contrasted with a binary classifier which makes only simple yes/no + predictions. A structural SVM, on the other hand, can learn to predict + complex outputs such as entire parse trees or DNA sequence alignments. To + do this, it learns a function F(x,y) which measures how well a particular + data sample x matches a label y. When used for prediction, the best label + for a new x is given by the y which maximizes F(x,y). + + <br/> + <br/> + + For an introduction to structured support vector machines you should consult + the following paper: + <blockquote> + Predicting Structured Objects with Support Vector Machines by + Thorsten Joachims, Thomas Hofmann, Yisong Yue, and Chun-nam Yu + </blockquote> + + For a more detailed discussion of the particular algorithm implemented by this + object see the following paper: + <blockquote> + T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of Structural SVMs, + Machine Learning, 77(1):27-59, 2009. + </blockquote> + Note that this object is essentially a tool for solving the 1-Slack structural + SVM with margin-rescaling. Specifically, see Algorithm 3 in the above referenced + paper. + + <br/><br/> + Finally, for a very detailed introduction to this subject, you should consider the book: + <blockquote> + <i><a href="http://www.nowozin.net/sebastian/papers/nowozin2011structured-tutorial.pdf">Structured + Prediction and Learning in Computer Vision</a></i> by Sebastian Nowozin and + Christoph H. Lampert + </blockquote> + + </description> + <examples> + <example>svm_struct.py.html</example> + <example>svm_struct_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_svm_problem_threaded</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_problem_threaded_abstract.h</spec_file> + <description> + This is just a version of the <a href="#structural_svm_problem">structural_svm_problem</a> + which is capable of using multiple cores/threads at a time. You should use it if + you have a multi-core CPU and the separation oracle takes a long time to compute. Or even better, if you + have multiple computers then you can use the <a href="#svm_struct_controller_node">svm_struct_controller_node</a> + to distribute the work across many computers. + </description> + <examples> + <example>svm_struct_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_svm_object_detection_problem</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_object_detection_problem_abstract.h</spec_file> + <description> + This object is a tool for learning the parameter vector needed to use + a <a href="imaging.html#scan_fhog_pyramid">scan_fhog_pyramid</a>, + <a href="imaging.html#scan_image_pyramid">scan_image_pyramid</a>, + <a href="imaging.html#scan_image_boxes">scan_image_boxes</a>, or + <a href="imaging.html#scan_image_custom">scan_image_custom</a> object. + + <p> + It learns the parameter vector by formulating the problem as a <a + href="#structural_svm_problem">structural SVM problem</a>. + The exact details of the method are described in the paper + <a href="http://arxiv.org/abs/1502.00046">Max-Margin Object Detection</a> by Davis E. King. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_svm_sequence_labeling_problem</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_sequence_labeling_problem_abstract.h</spec_file> + <description> + This object is a tool for learning the weight vector needed to use + a <a href="#sequence_labeler">sequence_labeler</a> object. + + It learns the parameter vector by formulating the problem as a + <a href="#structural_svm_problem">structural SVM problem</a>. + The general approach is discussed in the paper: + <blockquote> + Hidden Markov Support Vector Machines by + Y. Altun, I. Tsochantaridis, T. Hofmann + </blockquote> + While the particular optimization strategy used is the method from: + <blockquote> + T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of + Structural SVMs, Machine Learning, 77(1):27-59, 2009. + </blockquote> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_svm_assignment_problem</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_assignment_problem_abstract.h</spec_file> + <description> + This object is a tool for learning the parameters needed to use + an <a href="#assignment_function">assignment_function</a> object. + It learns the parameters by formulating the problem as a + <a href="#structural_svm_problem">structural SVM problem</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_svm_graph_labeling_problem</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_graph_labeling_problem_abstract.h</spec_file> + <description> + This object is a tool for learning the weight vectors needed to use + a <a href="#graph_labeler">graph_labeler</a> object. + It learns the parameter vectors by + formulating the problem as a <a href="#structural_svm_problem">structural SVM problem</a>. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_object_detection_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_object_detection_trainer_abstract.h</spec_file> + <description> + This object is a tool for learning to detect objects in images based on a set of labeled images. + The training procedure produces an <a href="imaging.html#object_detector">object_detector</a> which + can be used to predict the locations of objects in new images. + It learns the parameter vector by formulating the problem as a <a + href="#structural_svm_problem">structural SVM problem</a>. + The exact details of the method are described in the paper + <a href="http://arxiv.org/abs/1502.00046">Max-Margin Object Detection</a> by Davis E. King. + <p> + Note that this is just a convenience wrapper around the + <a href="#structural_svm_object_detection_problem">structural_svm_object_detection_problem</a> + to make it look similar to all the other trainers in dlib. + </p> + </description> + <examples> + <example>fhog_object_detector_ex.cpp.html</example> + <example>object_detector_ex.cpp.html</example> + <example>object_detector_advanced_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + + <example>train_object_detector.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_sequence_labeling_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_sequence_labeling_trainer_abstract.h</spec_file> + <description> + This object is a tool for learning to do sequence labeling based + on a set of training data. The training procedure produces a + <a href="#sequence_labeler">sequence_labeler</a> object which can + be use to predict the labels of new data sequences. + <p> + Note that this is just a convenience wrapper around the + <a href="#structural_svm_sequence_labeling_problem">structural_svm_sequence_labeling_problem</a> + to make it look similar to all the other trainers in dlib. + </p> + </description> + <examples> + <example>sequence_labeler_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_sequence_segmentation_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_sequence_segmentation_trainer_abstract.h</spec_file> + <description> + This object is a tool for learning to do sequence segmentation based on a + set of training data. The training procedure produces a <a href="#sequence_segmenter">sequence_segmenter</a> + object which can be used to identify the sub-segments of new data sequences. + <p> + This object internally uses the <a href="#structural_sequence_labeling_trainer">structural_sequence_labeling_trainer</a> + to solve the learning problem. + </p> + </description> + <examples> + <example>sequence_segmenter.py.html</example> + <example>sequence_segmenter_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_graph_labeling_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_graph_labeling_trainer_abstract.h</spec_file> + <description> + This object is a tool for learning to solve a graph labeling problem based + on a training dataset of example labeled <a href="containers.html#graph">graphs</a>. + The training procedure produces a <a href="#graph_labeler">graph_labeler</a> object + which can be used to predict the labelings of new graphs. + + <p> + To elaborate, a graph labeling problem is a task to learn a binary classifier which + predicts the label of each node in a graph. Additionally, we have information in + the form of edges between nodes where edges are present when we believe the + linked nodes are likely to have the same label. Therefore, part of a graph labeling + problem is to learn to score each edge in terms of how strongly the edge should enforce + labeling consistency between its two nodes. + </p> + + <p> + Note that this is just a convenience wrapper around the + <a href="#structural_svm_graph_labeling_problem">structural_svm_graph_labeling_problem</a> + to make it look similar to all the other trainers in dlib. You might also + consider reading the book + <i><a href="http://www.nowozin.net/sebastian/papers/nowozin2011structured-tutorial.pdf">Structured + Prediction and Learning in Computer Vision</a></i> by Sebastian + Nowozin and Christoph H. Lampert since it contains a good introduction to machine learning + methods such as the algorithm implemented by the structural_graph_labeling_trainer. + </p> + </description> + <examples> + <example>graph_labeling_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_assignment_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_assignment_trainer_abstract.h</spec_file> + <description> + This object is a tool for learning to solve an assignment problem based + on a training dataset of example assignments. The training procedure produces an + <a href="#assignment_function">assignment_function</a> object which can be used + to predict the assignments of new data. + + + Note that this is just a convenience wrapper around the + <a href="#structural_svm_assignment_problem">structural_svm_assignment_problem</a> + to make it look similar to all the other trainers in dlib. + </description> + <examples> + <example>assignment_learning_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>structural_track_association_trainer</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_track_association_trainer_abstract.h</spec_file> + <description> + This object is a tool for learning to solve a track association problem. That + is, it takes in a set of training data and outputs a + <a href="#track_association_function">track_association_function</a> + you can use to do detection to track association. + </description> + <examples> + <example>learning_to_track_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_struct_controller_node</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_distributed_abstract.h</spec_file> + <description> + This object is a tool for distributing the work involved in solving a + <a href="#structural_svm_problem">structural_svm_problem</a> across many computers. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>svm_struct_processing_node</name> + <file>dlib/svm_threaded.h</file> + <spec_file link="true">dlib/svm/structural_svm_distributed_abstract.h</spec_file> + <description> + This object is a tool for distributing the work involved in solving a + <a href="#structural_svm_problem">structural_svm_problem</a> across many computers. + </description> + + </component> + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> + + diff --git a/ml/dlib/docs/docs/ml_guide.dia b/ml/dlib/docs/docs/ml_guide.dia Binary files differnew file mode 100644 index 00000000..1d66e539 --- /dev/null +++ b/ml/dlib/docs/docs/ml_guide.dia diff --git a/ml/dlib/docs/docs/ml_guide.svg b/ml/dlib/docs/docs/ml_guide.svg new file mode 100644 index 00000000..d971f5e8 --- /dev/null +++ b/ml/dlib/docs/docs/ml_guide.svg @@ -0,0 +1,4345 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1826.2773" + height="887.87567" + viewBox="-331 -284 1030.832 492.80385" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="ml_guide.svg"> + <metadata + id="metadata1192"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs1190"> + <linearGradient + id="linearGradient4255"> + <stop + id="stop4257" + offset="0" + style="stop-color:#007800;stop-opacity:1" /> + <stop + id="stop4259" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <filter + id="filter7184" + inkscape:label="Inner Glow" + inkscape:menu="Shadows and Glows" + inkscape:menu-tooltip="Adds a colorizable glow inside" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur7186" + stdDeviation="10" + result="result8" /> + <feComposite + in2="result8" + id="feComposite7188" + result="result6" + in="SourceGraphic" + operator="in" /> + <feComposite + in2="result6" + id="feComposite7190" + operator="in" + result="result11" /> + <feFlood + id="feFlood7192" + result="result10" + in="result11" + flood-opacity="1" + flood-color="rgb(255,222,85)" /> + <feBlend + in2="result10" + id="feBlend7194" + mode="normal" + in="result11" + result="result12" /> + <feComposite + in2="SourceGraphic" + id="feComposite7196" + result="result2" + operator="in" + in="result12" /> + </filter> + <linearGradient + id="linearGradient4255-5"> + <stop + id="stop4257-0" + offset="0" + style="stop-color:#007800;stop-opacity:1" /> + <stop + id="stop4259-7" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <filter + inkscape:collect="always" + id="filter4656-5-8" + color-interpolation-filters="sRGB"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.0881325" + id="feGaussianBlur4658-8-6" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4255-5" + id="linearGradient47656" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.17339242,0,0,0.17339242,274.05622,-255.33221)" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4255-5" + id="linearGradient47727" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.17339242,0,0,0.17339242,274.05622,-255.33221)" + x1="161.89027" + y1="-168.53056" + x2="297.46921" + y2="484.83612" /> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1855" + inkscape:window-height="1056" + id="namedview1188" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:zoom="1" + inkscape:cx="784.46352" + inkscape:cy="377.72943" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" /> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="224.83031" + y="-43.168491" + id="text5552"> + <tspan + x="224.83031" + y="-43.168491" + id="tspan5554">NO</tspan> + </text> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5730"> + <path + inkscape:connector-curvature="0" + style="fill:#dbebea" + d="m 1513.95,474.536 c 44.08,-55.164 20.74,-230.632 15.98,-300.199 -4.76,-69.566 0.44,-206.0882 -63.27,-245.9956 -63.71,-39.9074 -144.02,-30.4984 -321.02,-31.4984 -176.998,-1 -248.756,24.7046 -281.698,47.9308 C 831,-32 763.184,6.58152 768.184,145.581 c 5,138.997 37.762,229.961 130.234,320.547 49,47.998 144.632,70.634 259.832,68.112 115.21,-2.524 311.62,-4.538 355.7,-59.704 z" + id="path5732" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#5aa5a2;stroke-width:5" + d="m 1513.95,474.536 c 44.08,-55.164 20.74,-230.632 15.98,-300.199 -4.76,-69.566 0.44,-206.0882 -63.27,-245.9956 -63.71,-39.9074 -144.02,-30.4984 -321.02,-31.4984 -176.998,-1 -248.756,24.7046 -281.698,47.9308 C 831,-32 763.184,6.58152 768.184,145.581 c 5,138.997 37.762,229.961 130.234,320.547 49,47.998 144.632,70.634 259.832,68.112 115.21,-2.524 311.62,-4.538 355.7,-59.704" + id="path5734" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5736"> + <path + inkscape:connector-curvature="0" + style="fill:#bbdcd0" + d="m 852.184,309.578 c 37,-40 157.996,-82.998 300.996,-82.998 143,0 339.75,-9.358 354.89,53.71 15.13,63.066 30.01,181.954 -55.5,209.382 C 1408,503.968 1113.11,541.566 994.28,496.4 875.448,451.234 815.184,349.578 852.184,309.578 z" + id="path5738" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#569e85;stroke-width:3" + d="m 852.184,309.578 c 37,-40 157.996,-82.998 300.996,-82.998 143,0 339.75,-9.358 354.89,53.71 15.13,63.066 30.01,181.954 -55.5,209.382 C 1408,503.968 1113.11,541.566 994.28,496.4 875.448,451.234 815.184,349.578 852.184,309.578" + id="path5740" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5752"> + <ellipse + sodipodi:ry="48.248299" + sodipodi:rx="84.218903" + sodipodi:cy="57.59" + sodipodi:cx="914.78699" + d="m 999.00589,57.59 c 0,26.6468 -37.70609,48.2483 -84.2189,48.2483 -46.51282,0 -84.21891,-21.6015 -84.21891,-48.2483 0,-26.646799 37.70609,-48.2482985 84.21891,-48.2482985 46.51281,0 84.2189,21.6014995 84.2189,48.2482985 z" + style="fill:#ffffff" + cx="914.78699" + cy="57.59" + rx="84.218903" + ry="48.248299" + id="ellipse5754" /> + <ellipse + sodipodi:ry="48.248299" + sodipodi:rx="84.218903" + sodipodi:cy="57.59" + sodipodi:cx="914.78699" + d="m 999.00589,57.59 c 0,26.6468 -37.70609,48.2483 -84.2189,48.2483 -46.51282,0 -84.21891,-21.6015 -84.21891,-48.2483 0,-26.646799 37.70609,-48.2482985 84.21891,-48.2482985 46.51281,0 84.2189,21.6014995 84.2189,48.2482985 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="914.78699" + cy="57.59" + rx="84.218903" + ry="48.248299" + id="ellipse5756" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="914.78699" + y="53.490002" + id="text5758"> + <tspan + x="914.78699" + y="53.490002" + id="tspan5760">Do you want to detect</tspan> + <tspan + x="914.78699" + y="69.489998" + id="tspan5762">objects in images?</tspan> + </text> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5774"> + <ellipse + sodipodi:ry="34.054901" + sodipodi:rx="87.774399" + sodipodi:cy="162.746" + sodipodi:cx="1138.3" + d="m 1226.0744,162.746 c 0,18.808 -39.2979,34.0549 -87.7744,34.0549 -48.4764,0 -87.7743,-15.2469 -87.7743,-34.0549 0,-18.808 39.2979,-34.0549 87.7743,-34.0549 48.4765,0 87.7744,15.2469 87.7744,34.0549 z" + style="fill:#ffffff" + cx="1138.3" + cy="162.746" + rx="87.774399" + ry="34.054901" + id="ellipse5776" /> + <ellipse + sodipodi:ry="34.054901" + sodipodi:rx="87.774399" + sodipodi:cy="162.746" + sodipodi:cx="1138.3" + d="m 1226.0744,162.746 c 0,18.808 -39.2979,34.0549 -87.7744,34.0549 -48.4764,0 -87.7743,-15.2469 -87.7743,-34.0549 0,-18.808 39.2979,-34.0549 87.7743,-34.0549 48.4765,0 87.7744,15.2469 87.7744,34.0549 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="1138.3" + cy="162.746" + rx="87.774399" + ry="34.054901" + id="ellipse5778" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="1138.3" + y="158.646" + id="text5780"> + <tspan + x="1138.3" + y="158.646" + id="tspan5782">Predicting the labels</tspan> + <tspan + x="1138.3" + y="174.646" + id="tspan5784">of nodes in a graph?</tspan> + </text> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5786"> + <ellipse + sodipodi:ry="47.365101" + sodipodi:rx="68.973396" + sodipodi:cy="301.603" + sodipodi:cx="1151.63" + d="m 1220.6034,301.603 c 0,26.15902 -30.8804,47.3651 -68.9734,47.3651 -38.093,0 -68.9734,-21.20608 -68.9734,-47.3651 0,-26.15903 30.8804,-47.3651 68.9734,-47.3651 38.093,0 68.9734,21.20607 68.9734,47.3651 z" + style="fill:#ffffff" + cx="1151.63" + cy="301.603" + rx="68.973396" + ry="47.365101" + id="ellipse5788" /> + <ellipse + sodipodi:ry="47.365101" + sodipodi:rx="68.973396" + sodipodi:cy="301.603" + sodipodi:cx="1151.63" + d="m 1220.6034,301.603 c 0,26.15902 -30.8804,47.3651 -68.9734,47.3651 -38.093,0 -68.9734,-21.20608 -68.9734,-47.3651 0,-26.15903 30.8804,-47.3651 68.9734,-47.3651 38.093,0 68.9734,21.20607 68.9734,47.3651 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="1151.63" + cy="301.603" + rx="68.973396" + ry="47.365101" + id="ellipse5790" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="1151.63" + y="297.50299" + id="text5792"> + <tspan + x="1151.63" + y="297.50299" + id="tspan5794">Binary labels on</tspan> + <tspan + x="1151.63" + y="313.50299" + id="tspan5796">nodes in a graph?</tspan> + </text> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5798"> + <ellipse + sodipodi:ry="38.759998" + sodipodi:rx="103.487" + sodipodi:cy="335.742" + sodipodi:cx="968.53699" + d="m 1072.024,335.742 c 0,21.40656 -46.3327,38.76 -103.48701,38.76 -57.15429,0 -103.487,-17.35344 -103.487,-38.76 0,-21.40655 46.33271,-38.75999 103.487,-38.75999 57.15431,0 103.48701,17.35344 103.48701,38.75999 z" + style="fill:#ffffff" + cx="968.53699" + cy="335.742" + rx="103.487" + ry="38.759998" + id="ellipse5800" /> + <ellipse + sodipodi:ry="38.759998" + sodipodi:rx="103.487" + sodipodi:cy="335.742" + sodipodi:cx="968.53699" + d="m 1072.024,335.742 c 0,21.40656 -46.3327,38.76 -103.48701,38.76 -57.15429,0 -103.487,-17.35344 -103.487,-38.76 0,-21.40655 46.33271,-38.75999 103.487,-38.75999 57.15431,0 103.48701,17.35344 103.48701,38.75999 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="968.53699" + cy="335.742" + rx="103.487" + ry="38.759998" + id="ellipse5802" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="968.53699" + y="331.642" + id="text5804"> + <tspan + x="968.53699" + y="331.642" + id="tspan5806">A chain structured graph?</tspan> + <tspan + x="968.53699" + y="347.642" + id="tspan5808">(e.g. words in a sentence)</tspan> + </text> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5810"> + <ellipse + sodipodi:ry="39.1562" + sodipodi:rx="92.1082" + sodipodi:cy="427.93201" + sodipodi:cx="1079.11" + d="m 1171.2182,427.93201 c 0,21.62537 -41.2383,39.1562 -92.1082,39.1562 -50.87,0 -92.10821,-17.53083 -92.10821,-39.1562 0,-21.62538 41.23821,-39.1562 92.10821,-39.1562 50.8699,0 92.1082,17.53082 92.1082,39.1562 z" + style="fill:#ffffff" + cx="1079.11" + cy="427.93201" + rx="92.1082" + ry="39.1562" + id="ellipse5812" /> + <ellipse + sodipodi:ry="39.1562" + sodipodi:rx="92.1082" + sodipodi:cy="427.93201" + sodipodi:cx="1079.11" + d="m 1171.2182,427.93201 c 0,21.62537 -41.2383,39.1562 -92.1082,39.1562 -50.87,0 -92.10821,-17.53083 -92.10821,-39.1562 0,-21.62538 41.23821,-39.1562 92.10821,-39.1562 50.8699,0 92.1082,17.53082 92.1082,39.1562 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="1079.11" + cy="427.93201" + rx="92.1082" + ry="39.1562" + id="ellipse5814" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="1079.11" + y="423.832" + id="text5816"> + <tspan + x="1079.11" + y="423.832" + id="tspan5818">Are you trying to make</tspan> + <tspan + x="1079.11" + y="439.832" + id="tspan5820">a BIO or BILOU tagger?</tspan> + </text> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5822"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="M 1077.73,128.465 A 1181.4,1181.4 0 0 0 985.629,84.8341" + id="path5824" /> + <polygon + style="fill:#800000" + points="1084.36,131.978 1073.18,131.62 1077.76,128.411 1077.94,122.824 " + id="polygon5826" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1084.36,131.978 1073.18,131.62 1077.76,128.411 1077.94,122.824 " + id="polygon5828" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5860"> + <ellipse + sodipodi:ry="36.265999" + sodipodi:rx="89.409203" + sodipodi:cy="69.619003" + sodipodi:cx="1344.77" + d="m 1434.1792,69.619003 c 0,20.029158 -40.0298,36.265997 -89.4092,36.265997 -49.3793,0 -89.4092,-16.236839 -89.4092,-36.265997 0,-20.029158 40.0299,-36.265999 89.4092,-36.265999 49.3794,0 89.4092,16.236841 89.4092,36.265999 z" + style="fill:#ffffff" + cx="1344.77" + cy="69.619003" + rx="89.409203" + ry="36.265999" + id="ellipse5862" /> + <ellipse + sodipodi:ry="36.265999" + sodipodi:rx="89.409203" + sodipodi:cy="69.619003" + sodipodi:cx="1344.77" + d="m 1434.1792,69.619003 c 0,20.029158 -40.0298,36.265997 -89.4092,36.265997 -49.3793,0 -89.4092,-16.236839 -89.4092,-36.265997 0,-20.029158 40.0299,-36.265999 89.4092,-36.265999 49.3794,0 89.4092,16.236841 89.4092,36.265999 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="1344.77" + cy="69.619003" + rx="89.409203" + ry="36.265999" + id="ellipse5864" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="1344.77" + y="65.518997" + id="text5866"> + <tspan + x="1344.77" + y="65.518997" + id="tspan5868">Trying to solve an</tspan> + <tspan + x="1344.77" + y="81.518997" + id="tspan5870">assignment problem?</tspan> + </text> + </g> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="469.60294" + y="126.33755" + id="text5896"> + <tspan + x="469.60294" + y="126.33755" + id="tspan5898">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="491.66599" + y="153.59703" + id="text5900"> + <tspan + x="491.66599" + y="153.59703" + id="tspan5902">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="486.89365" + y="43.905613" + id="text5904"> + <tspan + x="486.89365" + y="43.905613" + id="tspan5906">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="517.61932" + y="59.077667" + id="text5908"> + <tspan + x="517.61932" + y="59.077667" + id="tspan5910">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="575.37628" + y="-26.100613" + id="text5912"> + <tspan + x="575.37628" + y="-26.100613" + id="tspan5914">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="499.51596" + y="-29.351845" + id="text5916"> + <tspan + x="499.51596" + y="-29.351845" + id="tspan5918">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="438.68704" + y="25.489807" + id="text5920"> + <tspan + x="438.68704" + y="25.489807" + id="tspan5922">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="400.67618" + y="70.056152" + id="text5924"> + <tspan + x="400.67618" + y="70.056152" + id="tspan5926">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="366.42319" + y="131.20088" + id="text5928"> + <tspan + x="366.42319" + y="131.20088" + id="tspan5930">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="517.72882" + y="-48.280499" + id="text5932"> + <tspan + x="517.72882" + y="-48.280499" + id="tspan5934">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="312.43112" + y="-27.616421" + id="text5936"> + <tspan + x="312.43112" + y="-27.616421" + id="tspan5938">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="389.62741" + y="-52.418751" + id="text5940"> + <tspan + x="389.62741" + y="-52.418751" + id="tspan5942">NO</tspan> + </text> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5944"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 1255.82,63.071 a 2865.21,2865.21 0 0 0 -26.69,-1.4228" + id="path5946" /> + <polygon + style="fill:#008000" + points="1221.64,61.2903 1231.85,56.7392 1229.13,61.6232 1231.41,66.7293 " + id="polygon5948" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="1221.64,61.2903 1231.85,56.7392 1229.13,61.6232 1231.41,66.7293 " + id="polygon5950" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5952"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 1187.31,387.941 a 426.074,426.074 0 0 0 -42.53,11.773" + id="path5954" /> + <polygon + style="fill:#008000" + points="1194.64,386.359 1185.76,393.159 1187.27,387.777 1183.87,383.339 " + id="polygon5956" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="1194.64,386.359 1185.76,393.159 1187.27,387.777 1183.87,383.339 " + id="polygon5958" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5960"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 1167.34,440.623 a 946.032,946.032 0 0 0 36.51,2.794" + id="path5962" /> + <polygon + style="fill:#800000" + points="1211.34,443.825 1201.13,448.377 1203.85,443.492 1201.57,438.386 " + id="polygon5964" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1211.34,443.825 1201.13,448.377 1203.85,443.492 1201.57,438.386 " + id="polygon5966" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5968"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 989.225,374.389 a 139.53,139.53 0 0 0 15.595,17.329" + id="path5970" /> + <polygon + style="fill:#008000" + points="1010.36,396.741 999.411,394.465 1004.47,392.092 1005.61,386.619 " + id="polygon5972" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="1010.36,396.741 999.411,394.465 1004.47,392.092 1005.61,386.619 " + id="polygon5974" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5976"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 1071.48,291.885 a 186.308,186.308 0 0 0 -46.59,10.732" + id="path5978" /> + <polygon + style="fill:#800000" + points="1078.94,291.251 1069.11,296.584 1071.44,291.503 1068.78,286.589 " + id="polygon5980" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1078.94,291.251 1069.11,296.584 1071.44,291.503 1068.78,286.589 " + id="polygon5982" /> + </g> + <text + font-size="22.5778" + style="font-size:13.01290607px;font-style:normal;font-weight:700;text-anchor:start;fill:#000000;font-family:sans-serif" + x="387.89255" + y="-133.68552" + id="text5984"> + <tspan + x="387.89255" + y="-133.68552" + id="tspan5986">Structured Prediction</tspan> + </text> + <text + font-size="22.5778" + style="font-size:13.01290607px;font-style:normal;font-weight:700;text-anchor:start;fill:#000000;font-family:sans-serif" + x="411.04489" + y="187.91916" + id="text5988"> + <tspan + x="411.04489" + y="187.91916" + id="tspan5990">Markov Random Fields</tspan> + </text> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g5992"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 903.521,106.355 a 189.241,189.241 0 0 0 -0.76,23.438" + id="path5994" /> + <polygon + style="fill:#008000" + points="903.078,137.272 897.173,127.778 902.383,129.804 907.13,126.851 " + id="polygon5996" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="903.078,137.272 897.173,127.778 902.383,129.804 907.13,126.851 " + id="polygon5998" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6000"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 1091.83,192.354 a 419.174,419.174 0 0 0 -93.487,94.845" + id="path6002" /> + <polygon + style="fill:#008000" + points="994.03,293.331 995.44,282.24 998.204,287.1 1003.75,287.805 " + id="polygon6004" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="994.03,293.331 995.44,282.24 998.204,287.1 1003.75,287.805 " + id="polygon6006" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6008"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 1221.36,302.852 a 10651.9,10651.9 0 0 0 23.47,0.318" + id="path6010" /> + <polygon + style="fill:#008000" + points="1252.33,303.261 1242.27,308.148 1244.83,303.177 1242.39,298.149 " + id="polygon6012" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="1252.33,303.261 1242.27,308.148 1244.83,303.177 1242.39,298.149 " + id="polygon6014" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6016"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 1251.14,209.056 a 312.032,312.032 0 0 0 -64.9,50.565" + id="path6018" /> + <polygon + style="fill:#800000" + points="1257.64,205.32 1251.18,214.446 1251.03,208.858 1246.47,205.629 " + id="polygon6020" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1257.64,205.32 1251.18,214.446 1251.03,208.858 1246.47,205.629 " + id="polygon6022" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6024"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 1359.04,120.581 a 175.338,175.338 0 0 0 -2.3,-14.052" + id="path6026" /> + <polygon + style="fill:#800000" + points="1359.85,128.021 1354.32,118.302 1359.45,120.531 1364.31,117.769 " + id="polygon6028" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1359.85,128.021 1354.32,118.302 1359.45,120.531 1364.31,117.769 " + id="polygon6030" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6032"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 795.522,228.764 a 510.049,510.049 0 0 0 -52.598,7.092" + id="path6034" /> + <polygon + style="fill:#008000" + points="802.998,228.185 793.307,233.761 795.511,228.624 792.723,223.779 " + id="polygon6036" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="802.998,228.185 793.307,233.761 795.511,228.624 792.723,223.779 " + id="polygon6038" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6040"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 818.605,66.4623 a 287.605,287.605 0 0 0 -90.57,42.1127" + id="path6042" /> + <polygon + style="fill:#800000" + points="825.861,64.5915 817.187,71.6455 818.54,66.2216 815.013,61.8845 " + id="polygon6044" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="825.861,64.5915 817.187,71.6455 818.54,66.2216 815.013,61.8845 " + id="polygon6046" /> + </g> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="238.2088" + y="32.502949" + id="text6608"> + <tspan + x="238.2088" + y="32.502949" + id="tspan6610">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="228.79224" + y="77.636414" + id="text6612"> + <tspan + x="228.79224" + y="77.636414" + id="tspan6614">NO</tspan> + </text> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6616"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 1267.89,99.546 a 1373.3,1373.3 0 0 0 -76.62,35.323" + id="path6618" /> + <polygon + style="fill:#800000" + points="1274.8,96.629 1267.47,105.074 1267.87,99.498 1263.65,95.8346 " + id="polygon6620" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1274.8,96.629 1267.47,105.074 1267.87,99.498 1263.65,95.8346 " + id="polygon6622" /> + </g> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6624"> + <ellipse + sodipodi:ry="26.950001" + sodipodi:rx="86.272003" + sodipodi:cy="58.549999" + sodipodi:cx="1130.27" + d="m 1216.542,58.549999 c 0,14.884075 -38.6253,26.950001 -86.272,26.950001 -47.6467,0 -86.272,-12.065926 -86.272,-26.950001 0,-14.884074 38.6253,-26.950001 86.272,-26.950001 47.6467,0 86.272,12.065927 86.272,26.950001 z" + style="fill:#ffffff" + cx="1130.27" + cy="58.549999" + rx="86.272003" + ry="26.950001" + id="ellipse6626" /> + <ellipse + sodipodi:ry="26.950001" + sodipodi:rx="86.272003" + sodipodi:cy="58.549999" + sodipodi:cx="1130.27" + d="m 1216.542,58.549999 c 0,14.884075 -38.6253,26.950001 -86.272,26.950001 -47.6467,0 -86.272,-12.065926 -86.272,-26.950001 0,-14.884074 38.6253,-26.950001 86.272,-26.950001 47.6467,0 86.272,12.065927 86.272,26.950001 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="1130.27" + cy="58.549999" + rx="86.272003" + ry="26.950001" + id="ellipse6628" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="1130.27" + y="54.450001" + id="text6630"> + <tspan + x="1130.27" + y="54.450001" + id="tspan6632">Want to make</tspan> + <tspan + x="1130.27" + y="70.449997" + id="tspan6634">a tracker?</tspan> + </text> + </g> + <a + xlink:href="ml.html#structural_track_association_trainer" + id="a7669" + transform="translate(-518.26903,16.004773)"> + <g + id="g6636" + transform="matrix(0.57635848,0,0,0.57635848,323.21914,-112.48855)"> + <rect + id="rect6638" + height="40" + width="252.39999" + y="-38.400002" + x="965.862" + style="fill:#ffffff" /> + <rect + id="rect6640" + height="40" + width="252.39999" + y="-38.400002" + x="965.862" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text6642" + y="-14.5" + x="1092.0601" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan6644" + y="-14.5" + x="1092.0601">structural_track_association_trainer</tspan> + </text> + </g> + </a> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6646"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 1101.06,14.814 a 134.796,134.796 0 0 0 8.34,16.7485" + id="path6648" /> + <polygon + style="fill:#008000" + points="1098.32,7.86073 1106.09,15.9059 1100.57,15.017 1096.55,18.8988 " + id="polygon6650" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="1098.32,7.86073 1106.09,15.9059 1100.57,15.017 1096.55,18.8988 " + id="polygon6652" /> + </g> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="421.9957" + y="-83.697723" + id="text6654"> + <tspan + x="421.9957" + y="-83.697723" + id="tspan6656">YES</tspan> + </text> + <g + transform="matrix(0.57635848,0,0,0.57635848,-189.40544,-96.483777)" + id="g6658"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="M 1238.09,6.30583 A 446.2,446.2 0 0 0 1171.52,34.2576" + id="path6660" /> + <polygon + style="fill:#800000" + points="1245.23,4.01066 1237.08,11.659 1238.04,6.15322 1234.22,2.07578 " + id="polygon6662" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="1245.23,4.01066 1237.08,11.659 1238.04,6.15322 1234.22,2.07578 " + id="polygon6664" /> + </g> + <text + font-size="12.8" + style="font-size:7.37738848px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="476.98026" + y="-83.788788" + id="text6666"> + <tspan + x="476.98026" + y="-83.788788" + id="tspan6668">NO</tspan> + </text> + <a + xlink:href="ml.html#svm_rank_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-38.179731,-15.968612)" + id="a3746"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g212"> + <rect + id="rect214" + height="40" + width="135" + y="204.75999" + x="788.69202" + style="fill:#ffffff" /> + <rect + id="rect216" + height="40" + width="135" + y="204.75999" + x="788.69202" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text218" + y="228.66" + x="856.19202" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan220" + y="228.66" + x="856.19202">svm_rank_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#structural_object_detection_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-43.162391,-12.620922)" + id="a3739"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g656"> + <rect + id="rect658" + height="40" + width="247.89999" + y="133.55701" + x="768.97198" + style="fill:#ffffff" /> + <rect + id="rect660" + height="40" + width="247.89999" + y="133.55701" + x="768.97198" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text662" + y="157.457" + x="892.922" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan664" + y="157.457" + x="892.922">structural_object_detection_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#structural_sequence_segmentation_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-55.464451,-35.829135)" + id="a3769"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g738"> + <rect + id="rect740" + height="40" + width="298.14999" + y="393.46799" + x="1208.95" + style="fill:#ffffff" /> + <rect + id="rect742" + height="40" + width="298.14999" + y="393.46799" + x="1208.95" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text744" + y="417.36801" + x="1358.03" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan746" + y="417.36801" + x="1358.03">structural_sequence_segmentation_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#structural_sequence_labeling_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-66.837211,-45.449317)" + id="a3776"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g748"> + <rect + id="rect750" + height="40" + width="260.45001" + y="466.36801" + x="1244.25" + style="fill:#ffffff" /> + <rect + id="rect752" + height="40" + width="260.45001" + y="466.36801" + x="1244.25" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text754" + y="490.26801" + x="1374.47" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan756" + y="490.26801" + x="1374.47">structural_sequence_labeling_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#structural_graph_labeling_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-57.654191,-32.79966)" + id="a3762"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g758"> + <rect + id="rect760" + height="46.961498" + width="236.2" + y="302.698" + x="1270.95" + style="fill:#ffffff" /> + <rect + id="rect762" + height="46.961498" + width="236.2" + y="302.698" + x="1270.95" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text764" + y="330.07901" + x="1389.05" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan766" + y="330.07901" + x="1389.05">structural_graph_labeling_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#structural_assignment_trainer" + transform="matrix(1.0345233,0,0,1.0345233,21.838539,28.457534)" + id="a3732"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g788"> + <rect + id="rect790" + height="40" + width="230.52299" + y="-105.443" + x="1125.4399" + style="fill:#ffffff" /> + <rect + id="rect792" + height="40" + width="230.52299" + y="-105.443" + x="1125.4399" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text794" + y="-81.542603" + x="1240.71" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan796" + y="-81.542603" + x="1240.71">structural_assignment_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#structural_svm_problem" + transform="matrix(1.0345233,0,0,1.0345233,-75.691381,-22.73941)" + id="a3753"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-75.470302)" + id="g798"> + <rect + id="rect800" + height="72" + width="188.787" + y="141.933" + x="1306.77" + style="fill:#ffffff" /> + <rect + id="rect802" + height="72" + width="188.787" + y="141.933" + x="1306.77" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text804" + y="165.83299" + x="1401.16" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan806" + y="165.83299" + x="1401.16">structural_svm_problem</tspan> + <tspan + id="tspan808" + y="181.83299" + x="1401.16">(Used to build your own</tspan> + <tspan + id="tspan810" + y="197.83299" + x="1401.16">structured precition tool!)</tspan> + </text> + </g> + </a> + <g + id="g40342" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40344" + d="m 325.556,-296.732 c 32,-36 394.686,-51.344 446.998,19 63.938,85.98 32.859,253.2787 -3.141,298.2784 -36,44.9997 -137.257,34.6994 -171.955,15.422 -34.7,-19.2775 -29.301,-25.4462 -77.881,-64.0011 -48.579,-38.5549 -144.367,-0.3276 -198.415,-38.409 -20.12,-14.1764 -24.606,-32.2914 -23.606,-96.2903 1,-64 -4,-98 28,-134 z" + style="fill:#e1dbeb" + inkscape:connector-curvature="0" /> + <path + id="path40346" + d="m 325.556,-296.732 c 32,-36 394.686,-51.344 446.998,19 63.938,85.98 32.859,253.2787 -3.141,298.2784 -36,44.9997 -137.257,34.6994 -171.955,15.422 -34.7,-19.2775 -29.301,-25.4462 -77.881,-64.0011 -48.579,-38.5549 -144.367,-0.3276 -198.415,-38.409 -20.12,-14.1764 -24.606,-32.2914 -23.606,-96.2903 1,-64 -4,-98 28,-134" + style="fill:none;stroke:#785ba4;stroke-width:5" + inkscape:connector-curvature="0" /> + </g> + <text + id="text582" + y="-79.359634" + x="199.17044" + style="font-size:7.14567232px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan584" + y="-79.359634" + x="199.17044" /> + </text> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + x="543.29382" + y="277.3078" + id="text14"> + <tspan + x="543.29382" + y="277.3078" + id="tspan16" /> + </text> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + x="-83.899239" + y="24.997019" + id="text232"> + <tspan + x="-83.899239" + y="24.997019" + id="tspan234" /> + </text> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39608"> + <ellipse + sodipodi:ry="41.979599" + sodipodi:rx="74.064201" + sodipodi:cy="167.653" + sodipodi:cx="403.59201" + d="m 477.65621,167.653 c 0,23.18469 -33.15967,41.9796 -74.0642,41.9796 -40.90453,0 -74.0642,-18.79491 -74.0642,-41.9796 0,-23.18469 33.15967,-41.9796 74.0642,-41.9796 40.90453,0 74.0642,18.79491 74.0642,41.9796 z" + style="fill:#ffffff" + cx="403.59201" + cy="167.653" + rx="74.064201" + ry="41.979599" + id="ellipse39610" /> + <ellipse + sodipodi:ry="41.979599" + sodipodi:rx="74.064201" + sodipodi:cy="167.653" + sodipodi:cx="403.59201" + d="m 477.65621,167.653 c 0,23.18469 -33.15967,41.9796 -74.0642,41.9796 -40.90453,0 -74.0642,-18.79491 -74.0642,-41.9796 0,-23.18469 33.15967,-41.9796 74.0642,-41.9796 40.90453,0 74.0642,18.79491 74.0642,41.9796 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="403.59201" + cy="167.653" + rx="74.064201" + ry="41.979599" + id="ellipse39612" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="403.59201" + y="163.55299" + id="text39614"> + <tspan + x="403.59201" + y="163.55299" + id="tspan39616">Predicting a</tspan> + <tspan + x="403.59201" + y="179.55299" + id="tspan39618">true or false label?</tspan> + </text> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39620"> + <ellipse + sodipodi:ry="46.270802" + sodipodi:rx="64.457397" + sodipodi:cy="237.28" + sodipodi:cx="260.849" + d="m 325.3064,237.28 c 0,25.55466 -28.85856,46.2708 -64.4574,46.2708 -35.59884,0 -64.4574,-20.71614 -64.4574,-46.2708 0,-25.55466 28.85856,-46.2708 64.4574,-46.2708 35.59884,0 64.4574,20.71614 64.4574,46.2708 z" + style="fill:#ffffff" + cx="260.849" + cy="237.28" + rx="64.457397" + ry="46.270802" + id="ellipse39622" /> + <ellipse + sodipodi:ry="46.270802" + sodipodi:rx="64.457397" + sodipodi:cy="237.28" + sodipodi:cx="260.849" + d="m 325.3064,237.28 c 0,25.55466 -28.85856,46.2708 -64.4574,46.2708 -35.59884,0 -64.4574,-20.71614 -64.4574,-46.2708 0,-25.55466 28.85856,-46.2708 64.4574,-46.2708 35.59884,0 64.4574,20.71614 64.4574,46.2708 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="260.849" + cy="237.28" + rx="64.457397" + ry="46.270802" + id="ellipse39624" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="260.849" + y="233.17999" + id="text39626"> + <tspan + x="260.849" + y="233.17999" + id="tspan39628">Predicting a</tspan> + <tspan + x="260.849" + y="249.17999" + id="tspan39630">categorial label?</tspan> + </text> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39632"> + <ellipse + sodipodi:ry="43.628201" + sodipodi:rx="81.638" + sodipodi:cy="246.539" + sodipodi:cx="503.92099" + d="m 585.55899,246.539 c 0,24.09519 -36.55058,43.6282 -81.638,43.6282 -45.08742,0 -81.638,-19.53301 -81.638,-43.6282 0,-24.09519 36.55058,-43.6282 81.638,-43.6282 45.08742,0 81.638,19.53301 81.638,43.6282 z" + style="fill:#ffffff" + cx="503.92099" + cy="246.539" + rx="81.638" + ry="43.628201" + id="ellipse39634" /> + <ellipse + sodipodi:ry="43.628201" + sodipodi:rx="81.638" + sodipodi:cy="246.539" + sodipodi:cx="503.92099" + d="m 585.55899,246.539 c 0,24.09519 -36.55058,43.6282 -81.638,43.6282 -45.08742,0 -81.638,-19.53301 -81.638,-43.6282 0,-24.09519 36.55058,-43.6282 81.638,-43.6282 45.08742,0 81.638,19.53301 81.638,43.6282 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="503.92099" + cy="246.539" + rx="81.638" + ry="43.628201" + id="ellipse39636" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="503.92099" + y="242.439" + id="text39638"> + <tspan + x="503.92099" + y="242.439" + id="tspan39640">Predicting a</tspan> + <tspan + x="503.92099" + y="258.439" + id="tspan39642">continuous quantity?</tspan> + </text> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39644"> + <ellipse + sodipodi:ry="35.506901" + sodipodi:rx="71.284302" + sodipodi:cy="233.19501" + sodipodi:cx="87.252197" + d="m 158.5365,233.19501 c 0,19.60992 -31.91507,35.5069 -71.284303,35.5069 -39.369232,0 -71.284301,-15.89698 -71.284301,-35.5069 0,-19.60992 31.915069,-35.5069 71.284301,-35.5069 39.369233,0 71.284303,15.89698 71.284303,35.5069 z" + style="fill:#ffffff" + cx="87.252197" + cy="233.19501" + rx="71.284302" + ry="35.506901" + id="ellipse39646" /> + <ellipse + sodipodi:ry="35.506901" + sodipodi:rx="71.284302" + sodipodi:cy="233.19501" + sodipodi:cx="87.252197" + d="m 158.5365,233.19501 c 0,19.60992 -31.91507,35.5069 -71.284303,35.5069 -39.369232,0 -71.284301,-15.89698 -71.284301,-35.5069 0,-19.60992 31.915069,-35.5069 71.284301,-35.5069 39.369233,0 71.284303,15.89698 71.284303,35.5069 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="87.252197" + cy="233.19501" + rx="71.284302" + ry="35.506901" + id="ellipse39648" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="87.252197" + y="229.095" + id="text39650"> + <tspan + x="87.252197" + y="229.095" + id="tspan39652">Do you have</tspan> + <tspan + x="87.252197" + y="245.095" + id="tspan39654">labeled data?</tspan> + </text> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39656"> + <ellipse + sodipodi:ry="45.4314" + sodipodi:rx="64.767899" + sodipodi:cy="251.57001" + sodipodi:cx="681.05103" + d="m 745.81892,251.57001 c 0,25.09107 -28.99757,45.4314 -64.76789,45.4314 -35.77033,0 -64.7679,-20.34033 -64.7679,-45.4314 0,-25.09107 28.99757,-45.4314 64.7679,-45.4314 35.77032,0 64.76789,20.34033 64.76789,45.4314 z" + style="fill:#ffffff" + cx="681.05103" + cy="251.57001" + rx="64.767899" + ry="45.4314" + id="ellipse39658" /> + <ellipse + sodipodi:ry="45.4314" + sodipodi:rx="64.767899" + sodipodi:cy="251.57001" + sodipodi:cx="681.05103" + d="m 745.81892,251.57001 c 0,25.09107 -28.99757,45.4314 -64.76789,45.4314 -35.77033,0 -64.7679,-20.34033 -64.7679,-45.4314 0,-25.09107 28.99757,-45.4314 64.7679,-45.4314 35.77032,0 64.76789,20.34033 64.76789,45.4314 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="681.05103" + cy="251.57001" + rx="64.767899" + ry="45.4314" + id="ellipse39660" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="681.05103" + y="239.47" + id="text39662"> + <tspan + x="681.05103" + y="239.47" + id="tspan39664">Are you trying</tspan> + <tspan + x="681.05103" + y="255.47" + id="tspan39666">to rank order</tspan> + <tspan + x="681.05103" + y="271.47" + id="tspan39668">something?</tspan> + </text> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39670"> + <ellipse + sodipodi:ry="45.8988" + sodipodi:rx="57.7617" + sodipodi:cy="142.66" + sodipodi:cx="687.70697" + d="m 745.46867,142.66 c 0,25.34921 -25.86079,45.8988 -57.7617,45.8988 -31.90091,0 -57.7617,-20.54959 -57.7617,-45.8988 0,-25.3492 25.86079,-45.898796 57.7617,-45.898796 31.90091,0 57.7617,20.549596 57.7617,45.898796 z" + style="fill:#ffffff" + cx="687.70697" + cy="142.66" + rx="57.7617" + ry="45.8988" + id="ellipse39672" /> + <ellipse + sodipodi:ry="45.8988" + sodipodi:rx="57.7617" + sodipodi:cy="142.66" + sodipodi:cx="687.70697" + d="m 745.46867,142.66 c 0,25.34921 -25.86079,45.8988 -57.7617,45.8988 -31.90091,0 -57.7617,-20.54959 -57.7617,-45.8988 0,-25.3492 25.86079,-45.898796 57.7617,-45.898796 31.90091,0 57.7617,20.549596 57.7617,45.898796 z" + style="fill:none;stroke:#000057;stroke-width:2" + cx="687.70697" + cy="142.66" + rx="57.7617" + ry="45.8988" + id="ellipse39674" /> + <text + font-size="12.8" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + x="687.70697" + y="130.56" + id="text39676"> + <tspan + x="687.70697" + y="130.56" + id="tspan39678">Do you want</tspan> + <tspan + x="687.70697" + y="146.56" + id="tspan39680">to transform</tspan> + <tspan + x="687.70697" + y="162.56" + id="tspan39682">your data?</tspan> + </text> + </g> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="189.6427" + y="-51.360909" + id="text39684"> + <tspan + x="189.6427" + y="-51.360909" + id="tspan39686">YES</tspan> + </text> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39692"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 610.554,228.869 a 193.448,193.448 0 0 0 -31.812,-1.163" + id="path39694" /> + <polygon + style="fill:#008000" + points="609.037,223.133 617.976,229.849 607.24,232.971 610.598,228.501 " + id="polygon39696" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="609.037,223.133 617.976,229.849 607.24,232.971 610.598,228.501 " + id="polygon39698" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39700"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 171.06,237.501 a 1614.91,1614.91 0 0 0 24.341,0.433" + id="path39702" /> + <polygon + style="fill:#008000" + points="173.394,242.624 163.563,237.299 173.721,232.63 171.059,237.545 " + id="polygon39704" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="173.394,242.624 163.563,237.299 173.721,232.63 171.059,237.545 " + id="polygon39706" /> + </g> + <g + transform="matrix(0.65939608,0,0,0.64580433,-228.12625,-107.98884)" + id="g39708"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#808000;stroke-width:6" + d="m 477.646,136.904 a 883.099,883.099 0 0 0 17.172,-8.291" + id="path39710" /> + <polygon + style="fill:#808000" + points="470.856,140.085 477.923,131.422 477.695,137.007 482.027,140.541 " + id="polygon39712" /> + <polygon + style="fill:none;stroke:#808000;stroke-width:6" + points="470.856,140.085 477.923,131.422 477.695,137.007 482.027,140.541 " + id="polygon39714" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39716"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 331.809,180.146 a 163.967,163.967 0 0 0 -23.18,11.95" + id="path39718" /> + <polygon + style="fill:#800000" + points="313.36,194.3 302.331,196.134 307.481,186.21 308.398,191.725 " + id="polygon39720" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="313.36,194.3 302.331,196.134 307.481,186.21 308.398,191.725 " + id="polygon39722" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39724"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 324.841,247.217 a 773.708,773.708 0 0 0 85.125,4.864" + id="path39726" /> + <polygon + style="fill:#800000" + points="407.398,247.208 417.465,252.072 407.533,257.207 409.965,252.174 " + id="polygon39728" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="407.398,247.208 417.465,252.072 407.533,257.207 409.965,252.174 " + id="polygon39730" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39732"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="m 621.597,163.628 a 349.671,349.671 0 0 0 -75.678,44.585" + id="path39734" /> + <polygon + style="fill:#800000" + points="617.369,159.691 628.503,160.712 621.006,169.006 621.516,163.44 " + id="polygon39736" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="617.369,159.691 628.503,160.712 621.006,169.006 621.516,163.44 " + id="polygon39738" /> + </g> + <g + id="g39774" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path39776" + d="m -222.239,303.824 c 21.592,-43.182 279.0802,-40.572 334.539,5.214 55.458,45.786 20.459,97.785 -13.5411,154.785 -33.9997,56.999 -85.9994,72.999 -169.9988,72.999 -83.9991,0 -156.7471,3.207 -165.9991,-49.999 -9.254,-53.206 -6.59,-139.817 15,-182.999 z" + style="fill:#ebe3db" + inkscape:connector-curvature="0" /> + <path + id="path39778" + d="m -222.239,303.824 c 21.592,-43.182 279.0802,-40.572 334.539,5.214 55.458,45.786 20.459,97.785 -13.5411,154.785 -33.9997,56.999 -85.9994,72.999 -169.9988,72.999 -83.9991,0 -156.7471,3.207 -165.9991,-49.999 -9.254,-53.206 -6.59,-139.817 15,-182.999" + style="fill:none;stroke:#a57e5a;stroke-width:5" + inkscape:connector-curvature="0" /> + </g> + <g + id="g39780" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse39782" + ry="47.970299" + rx="68.419601" + cy="369.034" + cx="54.807899" + style="fill:#ffffff" + d="m 123.2275,369.034 c 0,26.49326 -30.632498,47.9703 -68.419601,47.9703 -37.787102,0 -68.419601,-21.47704 -68.419601,-47.9703 0,-26.49327 30.632499,-47.9703 68.419601,-47.9703 37.787103,0 68.419601,21.47703 68.419601,47.9703 z" + sodipodi:cx="54.807899" + sodipodi:cy="369.034" + sodipodi:rx="68.419601" + sodipodi:ry="47.970299" /> + <ellipse + id="ellipse39784" + ry="47.970299" + rx="68.419601" + cy="369.034" + cx="54.807899" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 123.2275,369.034 c 0,26.49326 -30.632498,47.9703 -68.419601,47.9703 -37.787102,0 -68.419601,-21.47704 -68.419601,-47.9703 0,-26.49327 30.632499,-47.9703 68.419601,-47.9703 37.787103,0 68.419601,21.47703 68.419601,47.9703 z" + sodipodi:cx="54.807899" + sodipodi:cy="369.034" + sodipodi:rx="68.419601" + sodipodi:ry="47.970299" /> + <text + id="text39786" + y="364.93399" + x="54.807899" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan39788" + y="364.93399" + x="54.807899">Do you know how</tspan> + <tspan + id="tspan39790" + y="380.93399" + x="54.807899">many categories?</tspan> + </text> + </g> + <text + id="text39816" + y="130.13699" + x="-265.93613" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#808000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan39818" + y="130.13699" + x="-276.64673" + style="text-align:center;text-anchor:middle">TOO</tspan> + <tspan + id="tspan39820" + y="139.36436" + x="-276.64673" + style="text-align:center;text-anchor:middle">SLOW</tspan> + </text> + <text + id="text39822" + y="166.09599" + x="-178.49316" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan39824" + y="166.09599" + x="-178.49316">YES</tspan> + </text> + <text + id="text39826" + y="93.157051" + x="-203.82185" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan39828" + y="93.157051" + x="-203.82185">NO</tspan> + </text> + <text + id="text39830" + y="201.31917" + x="-266.13144" + style="font-size:13.02086735px;font-style:normal;font-weight:700;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="22.5778"> + <tspan + id="tspan39832" + y="201.31917" + x="-266.13144">Clustering</tspan> + </text> + <g + id="g39834" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path39836" + d="M -7.15504,459.873 A 115.524,115.524 0 0 0 38.9173,416.696" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon39838" + points="-6.36487,454.856 -6.87145,460.423 -2.72166,464.168 -13.856,463.155 " + style="fill:#008000" /> + <polygon + id="polygon39840" + points="-6.36487,454.856 -6.87145,460.423 -2.72166,464.168 -13.856,463.155 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g39842" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path39844" + d="M -5.74405,345.146 A 347.239,347.239 0 0 0 -38.1294,337.429" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon39846" + points="-34.8652,332.66 -38.0912,337.226 -36.3746,342.546 -45.5053,336.094 " + style="fill:#800000" /> + <polygon + id="polygon39848" + points="-34.8652,332.66 -38.0912,337.226 -36.3746,342.546 -45.5053,336.094 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g39850" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path39852" + d="m -126.051,374.113 a 710.741,710.741 0 0 0 1.909,51.097" + style="fill:none;stroke:#808000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon39854" + points="-121.191,376.69 -126.151,374.113 -131.189,376.536 -126.035,366.614 " + style="fill:#808000" /> + <polygon + id="polygon39856" + points="-121.191,376.69 -126.151,374.113 -131.189,376.536 -126.035,366.614 " + style="fill:none;stroke:#808000;stroke-width:4" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g39858"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="M 55.5628,265.893 A 101.105,101.105 0 0 0 41.4398,309.13" + id="path39860" /> + <polygon + style="fill:#800000" + points="45.6616,306.423 40.9539,316.564 35.6658,306.714 40.7362,309.067 " + id="polygon39862" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="45.6616,306.423 40.9539,316.564 35.6658,306.714 40.7362,309.067 " + id="polygon39864" /> + </g> + <g + id="g40348" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40350" + ry="30.107" + rx="44.078602" + cy="-134.55701" + cx="577.73199" + style="fill:#ffffff" + d="m 621.8106,-134.55701 c 0,16.62764 -19.73467,30.107 -44.07861,30.107 -24.34393,0 -44.0786,-13.47936 -44.0786,-30.107 0,-16.62763 19.73467,-30.107 44.0786,-30.107 24.34394,0 44.07861,13.47937 44.07861,30.107 z" + sodipodi:cx="577.73199" + sodipodi:cy="-134.55701" + sodipodi:rx="44.078602" + sodipodi:ry="30.107" /> + <ellipse + id="ellipse40352" + ry="30.107" + rx="44.078602" + cy="-134.55701" + cx="577.73199" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 621.8106,-134.55701 c 0,16.62764 -19.73467,30.107 -44.07861,30.107 -24.34393,0 -44.0786,-13.47936 -44.0786,-30.107 0,-16.62763 19.73467,-30.107 44.0786,-30.107 24.34394,0 44.07861,13.47937 44.07861,30.107 z" + sodipodi:cx="577.73199" + sodipodi:cy="-134.55701" + sodipodi:rx="44.078602" + sodipodi:ry="30.107" /> + <text + id="text40354" + y="-138.657" + x="577.73199" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40356" + y="-138.657" + x="577.73199">< 5K</tspan> + <tspan + id="tspan40358" + y="-122.657" + x="577.73199">Samples</tspan> + </text> + </g> + <g + id="g40394" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40396" + d="m 539.226,-150.668 a 234.783,234.783 0 0 0 -44.156,-9.456" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40398" + points="497.918,-165.257 495.105,-160.427 497.282,-155.278 487.62,-160.904 " + style="fill:#800000" /> + <polygon + id="polygon40400" + points="497.918,-165.257 495.105,-160.427 497.282,-155.278 487.62,-160.904 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40402" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40404" + d="m 491.306,-105.322 a 333.999,333.999 0 0 0 48.041,-12.972" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40406" + points="493.053,-110.434 491.346,-105.111 494.581,-100.552 483.934,-103.965 " + style="fill:#008000" /> + <polygon + id="polygon40408" + points="493.053,-110.434 491.346,-105.111 494.581,-100.552 483.934,-103.965 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g40428" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40430" + d="M 646.463,-36.9024 A 119.845,119.845 0 0 0 611.982,-54.0107" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40432" + points="615.6,-58.9853 612.158,-54.5807 613.616,-49.1841 604.807,-56.0686 " + style="fill:#008000" /> + <polygon + id="polygon40434" + points="615.6,-58.9853 612.158,-54.5807 613.616,-49.1841 604.807,-56.0686 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <text + id="text40436" + y="-250.16597" + x="155.97491" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40438" + y="-250.16597" + x="155.97491">YES</tspan> + </text> + <text + id="text40448" + y="-163.95332" + x="207.23254" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40450" + y="-163.95332" + x="207.23254" /> + </text> + <text + id="text40452" + y="-163.95332" + x="207.23254" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40454" + y="-163.95332" + x="207.23254" /> + </text> + <text + id="text40456" + y="-163.95332" + x="207.23254" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40458" + y="-163.95332" + x="207.23254" /> + </text> + <text + id="text40460" + y="-163.95332" + x="207.23254" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40462" + y="-163.95332" + x="207.23254" /> + </text> + <text + id="text40464" + y="-163.95332" + x="207.23254" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40466" + y="-163.95332" + x="207.23254" /> + </text> + <text + id="text40468" + y="-163.95332" + x="207.23254" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40470" + y="-163.95332" + x="207.23254" /> + </text> + <text + id="text40472" + y="-225.38354" + x="149.64148" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40474" + y="-225.38354" + x="149.64148">NO</tspan> + </text> + <g + id="g40496" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40498" + ry="47.136902" + rx="84.255402" + cy="-225.46201" + cx="694.16302" + style="fill:#ffffff" + d="m 778.41843,-225.46201 c 0,26.033 -37.72243,47.13691 -84.25541,47.13691 -46.53297,0 -84.2554,-21.10391 -84.2554,-47.13691 0,-26.03299 37.72243,-47.1369 84.2554,-47.1369 46.53298,0 84.25541,21.10391 84.25541,47.1369 z" + sodipodi:cx="694.16302" + sodipodi:cy="-225.46201" + sodipodi:rx="84.255402" + sodipodi:ry="47.136902" /> + <ellipse + id="ellipse40500" + ry="47.136902" + rx="84.255402" + cy="-225.46201" + cx="694.16302" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 778.41843,-225.46201 c 0,26.033 -37.72243,47.13691 -84.25541,47.13691 -46.53297,0 -84.2554,-21.10391 -84.2554,-47.13691 0,-26.03299 37.72243,-47.1369 84.2554,-47.1369 46.53298,0 84.25541,21.10391 84.25541,47.1369 z" + sodipodi:cx="694.16302" + sodipodi:cy="-225.46201" + sodipodi:rx="84.255402" + sodipodi:ry="47.136902" /> + <text + id="text40502" + y="-237.562" + x="694.16302" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40504" + y="-237.562" + x="694.16302">Do you have</tspan> + <tspan + id="tspan40506" + y="-221.562" + x="694.16302">a graph of "similar"</tspan> + <tspan + id="tspan40508" + y="-205.562" + x="694.16302">samples?</tspan> + </text> + </g> + <text + id="text40510" + y="-230.10219" + x="192.80646" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40512" + y="-230.10219" + x="192.80646" /> + </text> + <g + id="g40522" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40524" + d="m 553.379,-208.999 a 1542.89,1542.89 0 0 0 57.939,-5.188" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40526" + points="555.564,-214.099 553.382,-208.953 556.19,-204.119 545.897,-208.483 " + style="fill:#800000" /> + <polygon + id="polygon40528" + points="555.564,-214.099 553.382,-208.953 556.19,-204.119 545.897,-208.483 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40530" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40532" + d="m 624.32,-252.957 a 369.129,369.129 0 0 0 -69.043,-12.422" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40534" + points="558.042,-270.44 555.294,-265.573 557.538,-260.453 547.803,-265.951 " + style="fill:#008000" /> + <polygon + id="polygon40536" + points="558.042,-270.44 555.294,-265.573 557.538,-260.453 547.803,-265.951 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <text + id="text40538" + y="-129.4127" + x="171.8362" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40540" + y="-129.4127" + x="171.8362">YES</tspan> + </text> + <text + id="text40542" + y="-125.85497" + x="209.48737" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40544" + y="-125.85497" + x="209.48737">NO</tspan> + </text> + <text + id="text40546" + y="-186.63779" + x="219.06247" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40548" + y="-186.63779" + x="219.06247">YES</tspan> + </text> + <text + id="text40550" + y="-178.2478" + x="186.89644" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40552" + y="-178.2478" + x="186.89644">NO</tspan> + </text> + <text + id="text40554" + y="-154.11838" + x="112.01455" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40556" + y="-154.11838" + x="112.01455">YES</tspan> + </text> + <text + id="text40558" + y="-190.53925" + x="116.18299" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40560" + y="-190.53925" + x="116.18299">NO</tspan> + </text> + <text + id="text40562" + y="-265.32828" + x="46.646641" + style="font-size:13.02086735px;font-style:normal;font-weight:700;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="22.5778"> + <tspan + id="tspan40564" + y="-265.32828" + x="46.646641">Data Transformations</tspan> + </text> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g40566"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 654.697,41.6285 a 104.932,104.932 0 0 0 4.546,60.0165" + id="path40568" /> + <polygon + style="fill:#008000" + points="648.493,42.2342 656.455,34.3851 657.957,45.464 654.032,41.4831 " + id="polygon40570" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="648.493,42.2342 656.455,34.3851 657.957,45.464 654.032,41.4831 " + id="polygon40572" /> + </g> + <g + id="g40576" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40578" + d="m -233.95,-270.543 c 15.023,-64.189 463.682,-70.498 480.187,21.201 16.506,91.7 0.917,108.205 27.51,151.3041 26.593,43.0987 51.496,46.9911 73.36,59.6046 21.863,12.6134 82.529,21.0908 71.525,83.4463 -11.004,62.356 -77.027,67.857 -122.838,86.957 -45.811,19.099 -88.676,43.952 -215.1364,47.808 -126.4599,3.855 -296.8196,22.687 -311.5236,-11.567 -13.726,-31.97 -10.024,-117.2067 -11.561,-199.0835 -1.537,-81.8765 -0.005,-203.4295 8.477,-239.6705 z" + style="fill:#dbebdd" + inkscape:connector-curvature="0" /> + <path + id="path40580" + d="m -233.95,-270.543 c 15.023,-64.189 463.682,-70.498 480.187,21.201 16.506,91.7 0.917,108.205 27.51,151.3041 26.593,43.0987 51.496,46.9911 73.36,59.6046 21.863,12.6134 82.529,21.0908 71.525,83.4463 -11.004,62.356 -77.027,67.857 -122.838,86.957 -45.811,19.099 -88.676,43.952 -215.1364,47.808 -126.4599,3.855 -296.8196,22.687 -311.5236,-11.567 -13.726,-31.97 -10.024,-117.2067 -11.561,-199.0835 -1.537,-81.8765 -0.005,-203.4295 8.477,-239.6705" + style="fill:none;stroke:#73b57d;stroke-width:5" + inkscape:connector-curvature="0" /> + </g> + <g + id="g40594" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40596" + ry="43.724201" + rx="51.254902" + cy="101.771" + cx="207.582" + style="fill:#ffffff" + d="m 258.8369,101.771 c 0,24.14821 -22.9476,43.7242 -51.2549,43.7242 -28.3073,0 -51.2549,-19.57599 -51.2549,-43.7242 0,-24.148206 22.9476,-43.724197 51.2549,-43.724197 28.3073,0 51.2549,19.575991 51.2549,43.724197 z" + sodipodi:cx="207.582" + sodipodi:cy="101.771" + sodipodi:rx="51.254902" + sodipodi:ry="43.724201" /> + <ellipse + id="ellipse40598" + ry="43.724201" + rx="51.254902" + cy="101.771" + cx="207.582" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 258.8369,101.771 c 0,24.14821 -22.9476,43.7242 -51.2549,43.7242 -28.3073,0 -51.2549,-19.57599 -51.2549,-43.7242 0,-24.148206 22.9476,-43.724197 51.2549,-43.724197 28.3073,0 51.2549,19.575991 51.2549,43.724197 z" + sodipodi:cx="207.582" + sodipodi:cy="101.771" + sodipodi:rx="51.254902" + sodipodi:ry="43.724201" /> + <text + id="text40600" + y="89.671402" + x="207.582" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40602" + y="89.671402" + x="207.582">Number of</tspan> + <tspan + id="tspan40604" + y="105.671" + x="207.582">features</tspan> + <tspan + id="tspan40606" + y="121.671" + x="207.582">< 100</tspan> + </text> + </g> + <text + id="text40608" + y="-110.52305" + x="-4.7936749" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40610" + y="-110.52305" + x="-4.7936749">NO</tspan> + </text> + <text + id="text40612" + y="-46.71315" + x="-12.304188" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40614" + y="-46.71315" + x="-12.304188">YES</tspan> + </text> + <g + id="g40630" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40632" + ry="33.556599" + rx="40.856098" + cy="-0.390807" + cx="21.561001" + style="fill:#ffffff" + d="m 62.417099,-0.390807 c 0,18.532798 -18.291898,33.556599 -40.856098,33.556599 -22.5642001,0 -40.856098,-15.023801 -40.856098,-33.556599 0,-18.532798 18.2918979,-33.556599 40.856098,-33.556599 22.5642,0 40.856098,15.023801 40.856098,33.556599 z" + sodipodi:cx="21.561001" + sodipodi:cy="-0.390807" + sodipodi:rx="40.856098" + sodipodi:ry="33.556599" /> + <ellipse + id="ellipse40634" + ry="33.556599" + rx="40.856098" + cy="-0.390807" + cx="21.561001" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 62.417099,-0.390807 c 0,18.532798 -18.291898,33.556599 -40.856098,33.556599 -22.5642001,0 -40.856098,-15.023801 -40.856098,-33.556599 0,-18.532798 18.2918979,-33.556599 40.856098,-33.556599 22.5642,0 40.856098,15.023801 40.856098,33.556599 z" + sodipodi:cx="21.561001" + sodipodi:cy="-0.390807" + sodipodi:rx="40.856098" + sodipodi:ry="33.556599" /> + <text + id="text40636" + y="-4.4908099" + x="21.561001" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40638" + y="-4.4908099" + x="21.561001">< 20K</tspan> + <tspan + id="tspan40640" + y="11.5092" + x="21.561001">Samples</tspan> + </text> + </g> + <text + id="text40642" + y="-112.73492" + x="-116.2119" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#808000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40644" + y="-112.73492" + x="-134.03767" + style="text-align:center;text-anchor:middle">NOT</tspan> + <tspan + id="tspan40646" + y="-103.50754" + x="-134.03767" + style="text-align:center;text-anchor:middle">WORKING</tspan> + </text> + <text + id="text40648" + y="-122.91808" + x="-180.65865" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40650" + y="-122.91808" + x="-180.65865">YES</tspan> + </text> + <text + id="text40662" + y="-57.442398" + x="-106.05607" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40664" + y="-57.442398" + x="-106.05607">NO</tspan> + </text> + <text + id="text40666" + y="-101.74" + x="-212.59938" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40668" + y="-101.74" + x="-212.59938">NO</tspan> + </text> + <text + id="text40670" + y="-104.63276" + x="-182.14595" + style="font-size:7.13555813px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40672" + y="-104.63276" + x="-182.14595" /> + </text> + <g + id="g40674" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40676" + ry="43.008801" + rx="54.863201" + cy="29.567301" + cx="350.39999" + style="fill:#ffffff" + d="m 405.2632,29.567301 c 0,23.753104 -24.5631,43.0088 -54.86321,43.0088 -30.30011,0 -54.8632,-19.255696 -54.8632,-43.0088 0,-23.7531048 24.56309,-43.008801 54.8632,-43.008801 30.30011,0 54.86321,19.2556962 54.86321,43.008801 z" + sodipodi:cx="350.39999" + sodipodi:cy="29.567301" + sodipodi:rx="54.863201" + sodipodi:ry="43.008801" /> + <ellipse + id="ellipse40678" + ry="43.008801" + rx="54.863201" + cy="29.567301" + cx="350.39999" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 405.2632,29.567301 c 0,23.753104 -24.5631,43.0088 -54.86321,43.0088 -30.30011,0 -54.8632,-19.255696 -54.8632,-43.0088 0,-23.7531048 24.56309,-43.008801 54.8632,-43.008801 30.30011,0 54.86321,19.2556962 54.86321,43.008801 z" + sodipodi:cx="350.39999" + sodipodi:cy="29.567301" + sodipodi:rx="54.863201" + sodipodi:ry="43.008801" /> + <text + id="text40680" + y="25.4673" + x="350.39999" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40682" + y="25.4673" + x="350.39999">Do you have</tspan> + <tspan + id="tspan40684" + y="41.4673" + x="350.39999">labeled data?</tspan> + </text> + </g> + <g + id="g40686" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40688" + ry="50.1301" + rx="75.076599" + cy="-113.523" + cx="145.739" + style="fill:#ffffff" + d="m 220.8156,-113.523 c 0,27.686087 -33.61294,50.130098 -75.0766,50.130098 -41.46366,0 -75.076601,-22.444011 -75.076601,-50.130098 0,-27.68609 33.612941,-50.1301 75.076601,-50.1301 41.46366,0 75.0766,22.44401 75.0766,50.1301 z" + sodipodi:cx="145.739" + sodipodi:cy="-113.523" + sodipodi:rx="75.076599" + sodipodi:ry="50.1301" /> + <ellipse + id="ellipse40690" + ry="50.1301" + rx="75.076599" + cy="-113.523" + cx="145.739" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 220.8156,-113.523 c 0,27.686087 -33.61294,50.130098 -75.0766,50.130098 -41.46366,0 -75.076601,-22.444011 -75.076601,-50.130098 0,-27.68609 33.612941,-50.1301 75.076601,-50.1301 41.46366,0 75.0766,22.44401 75.0766,50.1301 z" + sodipodi:cx="145.739" + sodipodi:cy="-113.523" + sodipodi:rx="75.076599" + sodipodi:ry="50.1301" /> + <text + id="text40692" + y="-133.623" + x="145.739" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40694" + y="-133.623" + x="145.739">Are you trying</tspan> + <tspan + id="tspan40696" + y="-117.623" + x="145.739">to label things</tspan> + <tspan + id="tspan40698" + y="-101.623" + x="145.739">as anomalous</tspan> + <tspan + id="tspan40700" + y="-85.622803" + x="145.739">vs. normal?</tspan> + </text> + </g> + <g + id="g40714" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40716" + ry="33.426998" + rx="40.978802" + cy="-237.467" + cx="64.597099" + style="fill:#ffffff" + d="m 105.5759,-237.467 c 0,18.46123 -18.346833,33.427 -40.978801,33.427 -22.631967,0 -40.978801,-14.96577 -40.978801,-33.427 0,-18.46122 18.346834,-33.42699 40.978801,-33.42699 22.631968,0 40.978801,14.96577 40.978801,33.42699 z" + sodipodi:cx="64.597099" + sodipodi:cy="-237.467" + sodipodi:rx="40.978802" + sodipodi:ry="33.426998" /> + <ellipse + id="ellipse40718" + ry="33.426998" + rx="40.978802" + cy="-237.467" + cx="64.597099" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 105.5759,-237.467 c 0,18.46123 -18.346833,33.427 -40.978801,33.427 -22.631967,0 -40.978801,-14.96577 -40.978801,-33.427 0,-18.46122 18.346834,-33.42699 40.978801,-33.42699 22.631968,0 40.978801,14.96577 40.978801,33.42699 z" + sodipodi:cx="64.597099" + sodipodi:cy="-237.467" + sodipodi:rx="40.978802" + sodipodi:ry="33.426998" /> + <text + id="text40720" + y="-241.567" + x="64.597099" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40722" + y="-241.567" + x="64.597099">< 20K</tspan> + <tspan + id="tspan40724" + y="-225.567" + x="64.597099">Samples</tspan> + </text> + </g> + <text + id="text40726" + y="-197.04799" + x="-118.14854" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40728" + y="-197.04799" + x="-118.14854">YES</tspan> + </text> + <g + id="g40730" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40732" + ry="34.2831" + rx="46.0229" + cy="-238.58099" + cx="186.702" + style="fill:#ffffff" + d="m 232.7249,-238.58099 c 0,18.93403 -20.60516,34.2831 -46.0229,34.2831 -25.41775,0 -46.0229,-15.34907 -46.0229,-34.2831 0,-18.93404 20.60515,-34.2831 46.0229,-34.2831 25.41774,0 46.0229,15.34906 46.0229,34.2831 z" + sodipodi:cx="186.702" + sodipodi:cy="-238.58099" + sodipodi:rx="46.0229" + sodipodi:ry="34.2831" /> + <ellipse + id="ellipse40734" + ry="34.2831" + rx="46.0229" + cy="-238.58099" + cx="186.702" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 232.7249,-238.58099 c 0,18.93403 -20.60516,34.2831 -46.0229,34.2831 -25.41775,0 -46.0229,-15.34907 -46.0229,-34.2831 0,-18.93404 20.60515,-34.2831 46.0229,-34.2831 25.41774,0 46.0229,15.34906 46.0229,34.2831 z" + sodipodi:cx="186.702" + sodipodi:cy="-238.58099" + sodipodi:rx="46.0229" + sodipodi:ry="34.2831" /> + <text + id="text40736" + y="-242.681" + x="186.702" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40738" + y="-242.681" + x="186.702">Go get</tspan> + <tspan + id="tspan40740" + y="-226.681" + x="186.702">labels!</tspan> + </text> + </g> + <text + id="text40742" + y="-193.86224" + x="-80.957031" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40744" + y="-193.86224" + x="-80.957031">NO</tspan> + </text> + <text + id="text40746" + y="-239.01872" + x="-195.65677" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40748" + y="-239.01872" + x="-195.65677">YES</tspan> + </text> + <text + id="text40764" + y="-194.76595" + x="-158.55869" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40766" + y="-194.76595" + x="-158.55869">NO</tspan> + </text> + <g + id="g40778" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40780" + ry="42.668499" + rx="52.284698" + cy="114.731" + cx="80.547501" + style="fill:#ffffff" + d="m 132.8322,114.731 c 0,23.56516 -23.40866,42.6685 -52.284699,42.6685 -28.876042,0 -52.284699,-19.10334 -52.284699,-42.6685 0,-23.565158 23.408657,-42.668496 52.284699,-42.668496 28.876039,0 52.284699,19.103338 52.284699,42.668496 z" + sodipodi:cx="80.547501" + sodipodi:cy="114.731" + sodipodi:rx="52.284698" + sodipodi:ry="42.668499" /> + <ellipse + id="ellipse40782" + ry="42.668499" + rx="52.284698" + cy="114.731" + cx="80.547501" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 132.8322,114.731 c 0,23.56516 -23.40866,42.6685 -52.284699,42.6685 -28.876042,0 -52.284699,-19.10334 -52.284699,-42.6685 0,-23.565158 23.408657,-42.668496 52.284699,-42.668496 28.876039,0 52.284699,19.103338 52.284699,42.668496 z" + sodipodi:cx="80.547501" + sodipodi:cy="114.731" + sodipodi:rx="52.284698" + sodipodi:ry="42.668499" /> + <text + id="text40784" + y="102.631" + x="80.547501" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40786" + y="102.631" + x="80.547501">Number of</tspan> + <tspan + id="tspan40788" + y="118.631" + x="80.547501">features</tspan> + <tspan + id="tspan40790" + y="134.631" + x="80.547501">< 100</tspan> + </text> + </g> + <text + id="text40806" + y="-11.68441" + x="-181.19244" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40808" + y="-11.68441" + x="-181.19244">NO</tspan> + </text> + <text + id="text40810" + y="-41.384457" + x="-187.60071" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40812" + y="-41.384457" + x="-187.60071">YES</tspan> + </text> + <g + id="g40814" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40816" + d="M 15.4817,-34.5846 A 88.5543,88.5543 0 0 0 4.3608,-54.7601" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40818" + points="10.342,-56.9159 5.00976,-55.2375 3.15314,-49.9647 -0.203689,-60.6292 " + style="fill:#008000" /> + <polygon + id="polygon40820" + points="10.342,-56.9159 5.00976,-55.2375 3.15314,-49.9647 -0.203689,-60.6292 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g40822" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40824" + d="M 37.6877,88.8209 A 291.658,291.658 0 0 0 -47.4035,62.0991" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40826" + points="-44.334,57.1602 -47.3666,61.8563 -45.4294,67.1 -54.8215,61.0347 " + style="fill:#008000" /> + <polygon + id="polygon40828" + points="-44.334,57.1602 -47.3666,61.8563 -45.4294,67.1 -54.8215,61.0347 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g40830" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40832" + d="M 4.29936,134.693 A 373.615,373.615 0 0 0 30.5238,129.756" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40834" + points="6.22026,129.623 4.32809,134.883 7.40095,139.553 -3.11945,135.768 " + style="fill:#800000" /> + <polygon + id="polygon40836" + points="6.22026,129.623 4.32809,134.883 7.40095,139.553 -3.11945,135.768 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40838" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40840" + d="M 75.3235,1.6094 A 1598.85,1598.85 0 0 0 131.581,1.76512" + style="fill:none;stroke:#808000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40842" + points="77.9609,-3.27424 75.3226,1.65421 77.6824,6.72189 67.8255,1.44536 " + style="fill:#808000" /> + <polygon + id="polygon40844" + points="77.9609,-3.27424 75.3226,1.65421 77.6824,6.72189 67.8255,1.44536 " + style="fill:none;stroke:#808000;stroke-width:4" /> + </g> + <g + id="g40846" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40848" + d="m 195.197,40.7523 a 116.277,116.277 0 0 0 0.087,17.5929" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40850" + points="199.078,44.034 194.584,40.7088 189.228,42.3086 195.878,33.3213 " + style="fill:#008000" /> + <polygon + id="polygon40852" + points="199.078,44.034 194.584,40.7088 189.228,42.3086 195.878,33.3213 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g40854" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40856" + d="M 270.517,91.1026 A 170.517,170.517 0 0 0 317.083,64.8329" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40858" + points="271.65,85.9937 270.663,91.496 274.472,95.5872 263.468,93.6127 " + style="fill:#008000" /> + <polygon + id="polygon40860" + points="271.65,85.9937 270.663,91.496 274.472,95.5872 263.468,93.6127 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g40862" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40864" + d="m -51.9933,2.6041 a 503.024,503.024 0 0 0 31.8616,0.02767" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40866" + points="-49.2203,-2.10482 -51.9979,2.74647 -49.7834,7.87932 -59.486,2.32415 " + style="fill:#800000" /> + <polygon + id="polygon40868" + points="-49.2203,-2.10482 -51.9979,2.74647 -49.7834,7.87932 -59.486,2.32415 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40870" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40872" + d="M 322.165,-8.37154 A 325.627,325.627 0 0 0 224.261,-85.2944" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40874" + points="228.742,-88.9629 224.361,-85.4902 224.511,-79.902 217.565,-88.6633 " + style="fill:#800000" /> + <polygon + id="polygon40876" + points="228.742,-88.9629 224.361,-85.4902 224.511,-79.902 217.565,-88.6633 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40878" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40880" + d="m 177.426,-159.971 a 142.158,142.158 0 0 0 9.199,-31.544" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40882" + points="191.894,-188.521 187.122,-191.431 181.93,-189.359 187.75,-198.905 " + style="fill:#800000" /> + <polygon + id="polygon40884" + points="191.894,-188.521 187.122,-191.431 181.93,-189.359 187.75,-198.905 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40886" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40888" + d="m 62.1711,29.8336 a 591.42,591.42 0 0 0 97.7109,53.71" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40890" + points="67.0356,27.3034 62.103,29.9338 61.2477,35.4581 55.9869,25.5928 " + style="fill:#800000" /> + <polygon + id="polygon40892" + points="67.0356,27.3034 62.103,29.9338 61.2477,35.4581 55.9869,25.5928 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <text + id="text40894" + y="-69.377029" + x="-71.392265" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40896" + y="-69.377029" + x="-71.392265">YES</tspan> + </text> + <text + id="text40898" + y="-263.60159" + x="-228.87804" + style="font-size:13.02086735px;font-style:normal;font-weight:700;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="22.5778"> + <tspan + id="tspan40900" + y="-263.60159" + x="-228.87804">Classification</tspan> + </text> + <g + id="g40902" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40904" + d="M 122.3,-162.086 A 366.244,366.244 0 0 0 96.8913,-200.354" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40906" + points="102.505,-201.681 97.0472,-200.473 94.7392,-195.381 92.3222,-206.297 " + style="fill:#008000" /> + <polygon + id="polygon40908" + points="102.505,-201.681 97.0472,-200.473 94.7392,-195.381 92.3222,-206.297 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g40910" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40912" + d="m 25.1131,-165.496 a 107.611,107.611 0 0 0 30.0863,-38.415" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40914" + points="24.9532,-170.539 25.5293,-164.979 30.3233,-162.103 19.2025,-160.951 " + style="fill:#800000" /> + <polygon + id="polygon40916" + points="24.9532,-170.539 25.5293,-164.979 30.3233,-162.103 19.2025,-160.951 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g40918" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <path + id="path40920" + d="m -31.4533,-236.213 a 5892.89,5892.89 0 0 0 54.0786,-0.513" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon40922" + points="-28.9676,-241.208 -31.4532,-236.201 -28.9388,-231.208 -38.9532,-236.179 " + style="fill:#008000" /> + <polygon + id="polygon40924" + points="-28.9676,-241.208 -31.4532,-236.201 -28.9388,-231.208 -38.9532,-236.179 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g40926"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 47.2935,162.054 a 65.7748,65.7748 0 0 0 5.8349,39.118" + id="path40928" /> + <polygon + style="fill:#008000" + points="40.6805,162.589 48.7086,154.808 50.1169,165.899 46.2262,161.885 " + id="polygon40930" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="40.6805,162.589 48.7086,154.808 50.1169,165.899 46.2262,161.885 " + id="polygon40932" /> + </g> + <g + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)" + id="g40934"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#008000;stroke-width:4" + d="m 345.055,85.1147 a 113.137,113.137 0 0 0 18.267,46.3643" + id="path40936" /> + <polygon + style="fill:#008000" + points="339.556,87.9473 344.072,77.7197 349.544,87.4692 344.43,85.2111 " + id="polygon40938" /> + <polygon + style="fill:none;stroke:#008000;stroke-width:4" + points="339.556,87.9473 344.072,77.7197 349.544,87.4692 344.43,85.2111 " + id="polygon40940" /> + </g> + <g + id="g40944" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <path + id="path40946" + d="m 190.915,337.515 c 29.444,-62.158 265.335,-38.547 332.599,-33.805 67.266,4.744 166.844,10.905 224.64,30.533 57.796,19.629 81.787,41.439 74.153,102.506 -7.633,61.067 -150.487,88.329 -205.011,90.51 -54.525,2.181 -408.933,17.448 -431.833,-3.271 -22.9,-20.719 -23.991,-124.315 5.452,-186.473 z" + style="fill:#e6eed8" + inkscape:connector-curvature="0" /> + <path + id="path40948" + d="m 190.915,337.515 c 29.444,-62.158 265.335,-38.547 332.599,-33.805 67.266,4.744 166.844,10.905 224.64,30.533 57.796,19.629 81.787,41.439 74.153,102.506 -7.633,61.067 -150.487,88.329 -205.011,90.51 -54.525,2.181 -408.933,17.448 -431.833,-3.271 -22.9,-20.719 -23.991,-124.315 5.452,-186.473" + style="fill:none;stroke:#88b04e;stroke-width:5" + inkscape:connector-curvature="0" /> + </g> + <text + id="text40962" + y="121.71304" + x="52.883808" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#808000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40964" + y="121.71304" + x="52.883808" + style="text-align:start;text-anchor:start">NOT</tspan> + <tspan + id="tspan40966" + y="130.94043" + x="52.883808" + style="text-align:start;text-anchor:start">WORKING</tspan> + </text> + <g + id="g40968" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <ellipse + id="ellipse40970" + ry="36.242298" + rx="39.140598" + cy="347.91901" + cx="379.60999" + style="fill:#ffffff" + d="m 418.75058,347.91901 c 0,20.01606 -17.52384,36.24229 -39.14059,36.24229 -21.61676,0 -39.1406,-16.22623 -39.1406,-36.24229 0,-20.01607 17.52384,-36.2423 39.1406,-36.2423 21.61675,0 39.14059,16.22623 39.14059,36.2423 z" + sodipodi:cx="379.60999" + sodipodi:cy="347.91901" + sodipodi:rx="39.140598" + sodipodi:ry="36.242298" /> + <ellipse + id="ellipse40972" + ry="36.242298" + rx="39.140598" + cy="347.91901" + cx="379.60999" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 418.75058,347.91901 c 0,20.01606 -17.52384,36.24229 -39.14059,36.24229 -21.61676,0 -39.1406,-16.22623 -39.1406,-36.24229 0,-20.01607 17.52384,-36.2423 39.1406,-36.2423 21.61675,0 39.14059,16.22623 39.14059,36.2423 z" + sodipodi:cx="379.60999" + sodipodi:cy="347.91901" + sodipodi:rx="39.140598" + sodipodi:ry="36.242298" /> + <text + id="text40974" + y="343.819" + x="379.60999" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40976" + y="343.819" + x="379.60999">< 20K</tspan> + <tspan + id="tspan40978" + y="359.819" + x="379.60999">Samples</tspan> + </text> + </g> + <text + id="text40994" + y="138.46866" + x="19.689875" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40996" + y="138.46866" + x="19.689875">YES</tspan> + </text> + <text + id="text41008" + y="157.17961" + x="167.00606" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan41010" + y="157.17961" + x="167.00606">NO</tspan> + </text> + <g + id="g41012" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <ellipse + id="ellipse41014" + ry="52.748001" + rx="80.154404" + cy="406.93799" + cx="728.49103" + style="fill:#ffffff" + d="m 808.64543,406.93799 c 0,29.13191 -35.88635,52.748 -80.1544,52.748 -44.26806,0 -80.15441,-23.61609 -80.15441,-52.748 0,-29.13192 35.88635,-52.748 80.15441,-52.748 44.26805,0 80.1544,23.61608 80.1544,52.748 z" + sodipodi:cx="728.49103" + sodipodi:cy="406.93799" + sodipodi:rx="80.154404" + sodipodi:ry="52.748001" /> + <ellipse + id="ellipse41016" + ry="52.748001" + rx="80.154404" + cy="406.93799" + cx="728.49103" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 808.64543,406.93799 c 0,29.13191 -35.88635,52.748 -80.1544,52.748 -44.26806,0 -80.15441,-23.61609 -80.15441,-52.748 0,-29.13192 35.88635,-52.748 80.15441,-52.748 44.26805,0 80.1544,23.61608 80.1544,52.748 z" + sodipodi:cx="728.49103" + sodipodi:cy="406.93799" + sodipodi:rx="80.154404" + sodipodi:ry="52.748001" /> + <text + id="text41018" + y="394.83801" + x="728.49103" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan41020" + y="394.83801" + x="728.49103">Is this a time-series</tspan> + <tspan + id="tspan41022" + y="410.83801" + x="728.49103">or online prediction</tspan> + <tspan + id="tspan41024" + y="426.83801" + x="728.49103">problem?</tspan> + </text> + </g> + <text + id="text41026" + y="103.96693" + x="-18.64353" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan41028" + y="103.96693" + x="-18.64353">NO</tspan> + </text> + <g + id="g41040" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <path + id="path41042" + d="m 652.123,388.838 a 599.374,599.374 0 0 0 -40.487,-5.422" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon41044" + points="604.171,382.705 614.535,378.511 611.647,383.297 613.745,388.479 " + style="fill:#008000" /> + <polygon + id="polygon41046" + points="604.171,382.705 614.535,378.511 611.647,383.297 613.745,388.479 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g41048" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <path + id="path41050" + d="m 619.937,458.655 a 217.037,217.037 0 0 0 49.968,-14.592" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon41052" + points="612.535,459.795 621.933,453.738 619.991,458.98 623.019,463.679 " + style="fill:#800000" /> + <polygon + id="polygon41054" + points="612.535,459.795 621.933,453.738 619.991,458.98 623.019,463.679 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g41056" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <path + id="path41058" + d="m 413.686,383.131 a 367.292,367.292 0 0 0 57.107,42.348" + style="fill:none;stroke:#808000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon41060" + points="408.159,378.067 418.827,381.413 413.556,383.275 411.883,388.609 " + style="fill:#808000" /> + <polygon + id="polygon41062" + points="408.159,378.067 418.827,381.413 413.556,383.275 411.883,388.609 " + style="fill:none;stroke:#808000;stroke-width:4" /> + </g> + <g + id="g41064" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <path + id="path41066" + d="m 343.369,331.921 a 72.3233,72.3233 0 0 0 -61.351,20.735" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon41068" + points="276.982,358.082 278.686,347.033 281.319,351.964 286.844,352.815 " + style="fill:#800000" /> + <polygon + id="polygon41070" + points="276.982,358.082 278.686,347.033 281.319,351.964 286.844,352.815 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g41072" + transform="matrix(0.57671105,0,0,0.57671105,-197.34379,-98.071115)"> + <path + id="path41074" + d="M 353.614,423.554 A 147.263,147.263 0 0 0 372.81,384.628" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon41076" + points="349.256,429.629 351.734,418.727 354.013,423.831 359.464,425.07 " + style="fill:#008000" /> + <polygon + id="polygon41078" + points="349.256,429.629 351.734,418.727 354.013,423.831 359.464,425.07 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <text + id="text41080" + y="117.74742" + x="165.08679" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan41082" + y="117.74742" + x="165.08679">YES</tspan> + </text> + <text + id="text41084" + y="198.92924" + x="50.921684" + style="font-size:13.02086735px;font-style:normal;font-weight:700;text-anchor:start;fill:#000000;font-family:sans-serif" + font-size="22.5778"> + <tspan + id="tspan41086" + y="198.92924" + x="50.921684">Regression</tspan> + </text> + <g + transform="matrix(0.5738609,0.0572652,-0.0572652,0.5738609,-171.31153,-138.14896)" + id="g41088"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#800000;stroke-width:4" + d="M 735,341.568 A 136.145,136.145 0 0 0 716.674,290.549" + id="path41090" /> + <polygon + style="fill:#800000" + points="740.371,338.714 735.945,348.981 730.387,339.28 735.52,341.493 " + id="polygon41092" /> + <polygon + style="fill:none;stroke:#800000;stroke-width:4" + points="740.371,338.714 735.945,348.981 730.387,339.28 735.52,341.493 " + id="polygon41094" /> + </g> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="-176.64941" + y="59.043442" + id="text41096"> + <tspan + x="-176.64941" + y="59.043442" + id="tspan41098">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="-179.53648" + y="17.149405" + id="text41100"> + <tspan + x="-179.53648" + y="17.149405" + id="tspan41102">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="-93.865562" + y="31.428194" + id="text41104"> + <tspan + x="-93.865562" + y="31.428194" + id="tspan41106">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="2.8615749" + y="40.05175" + id="text41108"> + <tspan + x="2.8615749" + y="40.05175" + id="tspan41110">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="-14.060843" + y="5.1486268" + id="text41112"> + <tspan + x="-14.060843" + y="5.1486268" + id="tspan41114">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="19.834171" + y="-27.801189" + id="text41116"> + <tspan + x="19.834171" + y="-27.801189" + id="tspan41118">YES</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#800000;font-family:sans-serif" + x="120.26321" + y="14.138973" + id="text41120"> + <tspan + x="120.26321" + y="14.138973" + id="tspan41122">NO</tspan> + </text> + <text + font-size="12.8" + style="font-size:7.38190126px;font-style:normal;font-weight:normal;text-anchor:start;fill:#008000;font-family:sans-serif" + x="141.46599" + y="27.726282" + id="text41124"> + <tspan + x="141.46599" + y="27.726282" + id="tspan41126">YES</tspan> + </text> + <g + id="g47702" + transform="matrix(1.0218295,0,0,1.0218295,-6.2614245,4.1682336)"> + <path + style="font-size:300px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-29.45005226px;word-spacing:0px;fill:#6c6c6c;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" + d="m 426.04965,-261.67503 c -5.14827,-0.0231 -10.26699,3.08331 -12.20528,7.92542 -2.76719,5.98758 -2.66457,12.91435 -1.47568,19.289 1.05335,4.73781 4.03885,9.43078 8.83161,11.01067 5.49384,1.97944 11.98404,0.92564 16.59442,-2.58084 0.51367,-0.97222 -0.55086,-1.80882 -0.68408,-2.74859 -0.41887,-1.05081 -0.84308,-2.09954 -1.25485,-3.15314 -3.50032,2.36812 -8.10359,4.13172 -12.27628,2.49666 -3.25685,-1.51557 -4.39342,-5.36946 -4.69066,-8.67995 -0.44133,-4.9068 -0.55773,-10.23416 2.03457,-14.58177 1.74388,-2.36194 4.88943,-3.05838 7.67072,-2.58699 2.38118,0.25335 4.63124,1.15783 6.60295,2.51264 0.8151,-1.88513 1.60107,-3.78266 2.39048,-5.67864 -3.24755,-2.52106 -7.49719,-3.31903 -11.53792,-3.22447 z m -67.86222,0.0317 c -3.16538,-0.0996 -5.13344,4.24072 -3.01733,6.587 1.70525,2.35597 5.96221,1.74113 6.83672,-1.06241 0.99853,-2.48346 -1.0568,-5.72213 -3.81939,-5.52459 z m 191.26789,0 c -3.17342,-0.0919 -5.12311,4.28915 -2.98539,6.60294 1.69858,2.35888 6.00367,1.7082 6.8314,-1.1421 0.99917,-2.49184 -1.1229,-5.63854 -3.84601,-5.46084 z m -224.10205,0.96681 c 0,1.91411 0,3.82823 0,5.74237 2.25757,10e-6 4.51525,0 6.77292,0 0,10.59058 0,21.18116 0,31.77173 4.4427,0 8.88538,0 13.32808,0 0,-2.02568 0,-4.05133 0,-6.07704 -2.24171,0 -4.48342,0 -6.72511,0 0,-10.59235 0,-21.18471 0,-31.77703 -4.45867,0 -8.91734,0 -13.37589,0 l 0,0.16997 z m 41.21129,0 c 0,12.50469 0,25.00941 0,37.5141 2.1585,0 4.31698,0 6.47549,0 0.11254,-0.49726 0.16683,-1.00371 0.14344,-1.51395 3.92514,3.11418 10.37431,2.97739 13.6628,-1.00928 4.02068,-4.51721 4.64336,-11.10011 3.62812,-16.85532 -0.77325,-4.02896 -3.22074,-8.18733 -7.336,-9.42901 -3.31678,-1.05983 -7.14201,-0.34451 -9.97089,1.6627 0,-3.56976 0,-7.13949 0,-10.70921 -2.20098,0 -4.40197,0 -6.60296,0 l 0,0.16997 z m 147.4695,0 c 0,12.50469 0,25.00941 0,37.5141 7.28118,0 14.56237,0 21.84344,0 0,-2.09297 0,-4.18594 0,-6.2789 -5.01285,0 -10.0257,0 -15.03855,0 0,-10.52507 0,-21.05013 0,-31.57517 -2.26834,0 -4.53655,0 -6.80489,0 l 0,0.16997 z m 46.02422,0 c 0,12.50469 0,25.00941 0,37.5141 2.17614,0 4.35238,0 6.52852,0 0.0814,-0.49914 0.10619,-1.00686 0.0909,-1.51395 3.92953,3.12296 10.43759,2.97342 13.70529,-1.05179 4.01347,-4.5687 4.61851,-11.1673 3.56119,-16.94197 -0.78774,-3.90895 -3.1256,-7.90625 -7.08312,-9.2308 -3.3978,-1.15286 -7.30593,-0.45985 -10.1939,1.59365 0,-3.56976 0,-7.13949 0,-10.70921 -2.20277,0 -4.40553,0 -6.60829,0 l 0,0.16997 z m -110.97006,5.30679 c 0,3.28996 0,6.57993 0,9.86989 -3.40322,2e-5 -6.80655,0 -10.20987,0 0,1.99384 0,3.98764 0,5.98145 3.40332,-1e-5 6.80665,0 10.20987,0 0,3.39442 0,6.78886 0,10.18328 1.99386,0 3.98769,0 5.98143,0 0,-3.39442 0,-6.78886 0,-10.18328 3.36084,0 6.72167,-1e-5 10.0824,0 0,-1.99381 0,-3.98761 0,-5.98145 -3.36073,2e-5 -6.72156,0 -10.0824,0 0,-3.40329 0,-6.8066 0,-10.20987 -1.99374,0 -3.98757,0 -5.98143,0 l 0,0.16999 z m 28.2924,0 c 0,3.28996 0,6.57993 0,9.86989 -3.40332,2e-5 -6.80666,0 -10.20998,0 0,1.99384 0,3.98764 0,5.98145 3.40332,-1e-5 6.80666,0 10.20998,0 0,3.39442 0,6.78886 0,10.18328 1.99374,0 3.98748,0 5.98132,0 0,-3.39442 0,-6.78886 0,-10.18328 3.36261,-1e-5 6.72522,0 10.08773,0 0,-1.99381 0,-3.98761 0,-5.98145 -3.36251,0 -6.72512,2e-5 -10.08773,0 0,-3.40329 0,-6.8066 0,-10.20987 -1.99384,0 -3.98758,0 -5.98132,0 l 0,0.16999 z m 124.62743,2.92695 c -2.42776,0.0254 -4.71342,1.25847 -6.37985,2.97479 0.0469,-0.763 0.33316,-2.09424 -0.65869,-2.35857 -1.96723,0 -3.93455,0 -5.90177,0 0,9.55471 0,19.10946 0,28.66414 2.19388,0 4.38788,0 6.58176,0 0.0292,-5.9672 -0.0574,-11.93506 0.047,-17.90178 1.5,-2.44248 3.98465,-5.09524 7.12885,-4.67999 1.53434,0.20776 2.95553,0.88461 4.38255,1.4927 0.8745,-2.05286 1.7275,-4.11484 2.60285,-6.16736 -2.36595,-1.30773 -5.06809,-2.12322 -7.80342,-2.02393 z m 22.31086,0 c -3.95407,0.0872 -7.75017,1.54259 -11.16071,3.41569 0.64816,1.77888 1.30279,3.55543 1.93893,5.33868 3.28451,-1.65317 7.01776,-3.39008 10.75175,-2.31075 1.92243,0.75243 2.59156,3.06591 2.48069,4.9084 -4.04366,0.37479 -8.40543,0.45456 -11.98938,2.61883 -2.75371,1.48095 -4.36167,4.60902 -4.12519,7.71304 0.1044,3.43134 2.37826,6.72097 5.69754,7.73989 3.68952,1.30302 7.97507,0.17381 10.84729,-2.33732 0.13551,0.74569 0.33493,1.47464 0.5737,2.1939 2.20632,0 4.41263,0 6.61894,0 -2.1395,-7.18981 -0.19953,-14.81137 -1.38652,-22.12494 -0.64533,-3.2128 -3.08081,-6.05253 -6.34256,-6.74104 -1.27052,-0.33943 -2.58791,-0.4501 -3.90448,-0.41438 z m 29.15824,0 c -2.43257,0.0278 -4.71739,1.26004 -6.39061,2.97479 0.0564,-0.76151 0.33765,-2.09464 -0.65327,-2.35857 -1.96732,0 -3.93454,0 -5.90176,0 0,9.55471 0,19.10946 0,28.66414 2.19389,0 4.38777,0 6.58166,0 0.0292,-5.96368 -0.0574,-11.92797 0.047,-17.89117 1.51012,-2.4212 3.8816,-5.04816 7.028,-4.69592 1.57809,0.16947 3.03278,0.89195 4.48872,1.49802 0.86667,-2.0547 1.72489,-4.11296 2.5923,-6.16736 -2.36961,-1.31327 -5.06412,-2.12073 -7.79277,-2.02393 z m -306.22742,0.95621 c 0,1.91411 0,3.82824 0,5.74238 2.54805,0 5.09607,0 7.6442,0 0,7.52727 0,15.0545 0,22.58177 2.20088,0 4.40188,0 6.60296,0 0,-9.55468 0,-19.10943 0,-28.66414 -4.74912,0 -9.49814,0 -14.24716,0 l 0,0.16998 z m 191.27855,0 c 0,1.91411 0,3.82824 0,5.74238 2.54802,0 5.09606,0 7.6442,0 0,7.52727 0,15.0545 0,22.58177 2.20098,0 4.40186,0 6.60284,0 0,-9.55468 0,-19.10943 0,-28.66414 -4.74901,0 -9.49803,0 -14.24704,0 l 0,0.16998 z m 122.72566,0.11676 c 3.34684,8.93198 6.69734,17.86143 10.05587,26.78895 -0.88504,2.03459 -1.61703,4.77175 -3.99457,5.49273 -1.7395,0.32874 -3.43391,-0.45279 -5.0944,-0.8712 -0.41835,1.89254 -0.80131,3.79266 -1.20057,5.68929 3.28787,1.38482 7.49105,2.22139 10.59243,-0.0104 4.2343,-3.30317 5.50106,-8.8207 7.47089,-13.57077 3.03069,-7.99172 6.0614,-15.9835 9.09221,-23.97522 -2.38861,0 -4.77732,0 -7.16602,0 -2.1229,6.00702 -4.25414,12.01109 -6.3905,18.01335 -2.13625,-6.00226 -4.26749,-12.00633 -6.39038,-18.01335 -2.38171,0 -4.76322,0 -7.14483,0 0.0564,0.15221 0.11339,0.30456 0.16998,0.45684 z m -282.41832,4.97742 c 2.72249,-0.026 4.55138,2.721 4.90302,5.18994 0.83598,3.91193 0.49332,8.53866 -2.41168,11.54322 -1.67414,1.46733 -4.28086,1.14864 -5.84862,-0.31343 -1.21017,-1.0459 -2.5971,-2.44327 -2.30017,-4.18064 0.0532,-2.95606 -0.17676,-5.97536 0.12748,-8.89245 1.23565,-1.81822 3.20474,-3.3774 5.52987,-3.34664 z m 193.49362,0 c 2.80946,-0.0194 4.61465,2.8372 4.93392,5.35073 0.80967,3.89363 0.41522,8.44816 -2.46367,11.41961 -1.73825,1.46914 -4.46837,1.06497 -6.0188,-0.51529 -1.25841,-1.05746 -2.42233,-2.53723 -2.10358,-4.31874 0.0522,-2.85888 -0.18,-5.77775 0.1329,-8.60031 1.23576,-1.80994 3.20549,-3.37009 5.51933,-3.336 z m 56.01087,10.91107 c 0.24462,0.23056 -0.16841,0.85668 -0.0219,1.22711 0.12946,0.92556 0.0375,2.00563 -0.78618,2.5498 -1.82377,1.98597 -4.81761,3.52587 -7.45293,2.31078 -1.58572,-1.01002 -1.34851,-3.75504 0.43025,-4.45154 2.37399,-1.37408 5.22887,-1.10797 7.83005,-1.63615 z" + id="path38109" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/davis/source/docs/docs/dlib-logo.png" + inkscape:export-xdpi="11.454896" + inkscape:export-ydpi="11.454896" + sodipodi:nodetypes="ccccccccccccccccccccccscccccccccssccccccccccsscccccccssccccccccccsscccccccccccccsscccccccccccccsccccccccccccccccccccccccccccccccccccscccccccsscccccccscccccccccccccccccccccccccccccccccc" /> + <path + inkscape:export-filename="/home/davis/source/docs/docs/dlib-logo.png" + inkscape:export-ydpi="11.454896" + inkscape:export-xdpi="11.454896" + inkscape:connector-curvature="0" + id="path38111" + d="m 291.39182,-278.22304 c -1.20171,0.0403 -2.40854,0.0826 -3.59449,0.28802 -0.67509,5.08964 -0.0867,10.24034 -0.29401,15.35621 0,18.76072 0,37.52141 0,56.2821 2.97787,0.33369 5.99113,0.354 8.97131,0.0361 0.57924,-2.35855 1.16026,-4.71665 1.74024,-7.07503 3.48987,-0.75834 6.83328,-2.10877 9.85343,-4.03855 2.07392,1.27559 4.15244,2.54426 6.22888,3.81653 2.31645,-1.85814 4.42243,-3.92893 6.27689,-6.25292 -1.18229,-2.1116 -2.67666,-4.2096 -3.70256,-6.30686 1.91972,-2.96685 3.28858,-6.29235 4.0566,-9.75741 2.36083,-0.56646 4.72209,-1.13147 7.08699,-1.68025 0.35477,-2.94047 0.34893,-5.91886 0.0418,-8.86329 -2.35322,-0.60182 -4.72709,-1.12535 -7.06893,-1.77024 -0.7393,-3.49752 -2.10859,-6.83992 -4.03863,-9.82945 1.25694,-2.08361 2.54751,-4.13446 3.7985,-6.22284 -1.83995,-2.32331 -3.9242,-4.43117 -6.24683,-6.27094 -2.10597,1.18966 -4.21456,2.66439 -6.30697,3.69654 -2.96033,-1.97106 -6.3007,-3.30894 -9.75738,-4.08058 -0.56807,-2.34998 -1.12329,-4.70298 -1.67424,-7.05702 -1.77951,-0.22961 -3.57749,-0.30242 -5.37077,-0.27005 z m 6.52894,15.83628 c 9.71216,2.58522 16.67261,12.99778 15.12824,22.97731 -1.01086,8.00268 -7.02361,15.1766 -14.81618,17.44449 -0.58415,0.43176 -0.27343,-0.66416 -0.32407,-0.93612 0.0177,-13.15863 -0.0104,-26.33612 0.0125,-39.48568 z" + style="fill:url(#linearGradient47727);fill-opacity:1;stroke:#7b7b7b;stroke-width:1.25778878;stroke-linejoin:miter;stroke-miterlimit:0.60000002;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <g + id="text38113" + style="font-size:33.58379745px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"> + <path + id="path47662" + d="m 287.54295,-196.98534 4.9359,0 6.24777,16.66071 6.28056,-16.66071 4.9359,0 0,24.48272 -3.23047,0 0,-21.49823 -6.31336,16.7919 -3.32886,0 -6.31336,-16.7919 0,21.49823 -3.21408,0 0,-24.48272" + inkscape:connector-curvature="0" /> + <path + id="path47664" + d="m 324.75078,-181.73489 c -2.43789,1e-5 -4.12692,0.27878 -5.06708,0.83632 -0.94018,0.55755 -1.41027,1.50865 -1.41026,2.85331 -10e-6,1.07136 0.34982,1.92407 1.04949,2.55814 0.71059,0.62314 1.67263,0.93471 2.88611,0.9347 1.67262,1e-5 3.01182,-0.59033 4.01759,-1.77102 1.01669,-1.1916 1.52503,-2.77131 1.52505,-4.73912 l 0,-0.67233 -3.0009,0 m 6.01819,-1.24627 0,10.47854 -3.01729,0 0,-2.78772 c -0.68875,1.11509 -1.54692,1.94047 -2.57454,2.47615 -1.02764,0.52474 -2.28485,0.78712 -3.77162,0.78712 -1.88035,0 -3.37806,-0.52475 -4.49314,-1.57424 -1.10416,-1.06043 -1.65624,-2.47615 -1.65624,-4.24717 0,-2.06619 0.68873,-3.62403 2.0662,-4.67353 1.38838,-1.04948 3.45457,-1.57423 6.19857,-1.57424 l 4.23077,0 0,-0.29517 c -2e-5,-1.38838 -0.45917,-2.45974 -1.37746,-3.21407 -0.90739,-0.76524 -2.18646,-1.14787 -3.83721,-1.14789 -1.0495,2e-5 -2.07167,0.12574 -3.06649,0.37716 -0.99484,0.25146 -1.95141,0.62862 -2.86971,1.13149 l 0,-2.78772 c 1.10415,-0.42634 2.17551,-0.74337 3.21407,-0.9511 1.03856,-0.21863 2.04979,-0.32795 3.0337,-0.32797 2.65651,2e-5 4.64071,0.68875 5.95259,2.06619 1.31185,1.37748 1.96779,3.46553 1.9678,6.26417" + inkscape:connector-curvature="0" /> + <path + id="path47666" + d="m 350.2174,-190.16364 0,2.82052 c -0.85272,-0.47007 -1.7109,-0.8199 -2.57453,-1.04949 -0.85273,-0.2405 -1.71638,-0.36075 -2.59094,-0.36077 -1.95688,2e-5 -3.47646,0.62315 -4.55874,1.86941 -1.0823,1.23536 -1.62344,2.97358 -1.62344,5.21467 0,2.24112 0.54114,3.98481 1.62344,5.23107 1.08228,1.23535 2.60186,1.85302 4.55874,1.85302 0.87456,0 1.73821,-0.11479 2.59094,-0.34437 0.86363,-0.2405 1.72181,-0.5958 2.57453,-1.06589 l 0,2.78772 c -0.84179,0.39356 -1.71637,0.68873 -2.62373,0.88551 -0.89645,0.19678 -1.85302,0.29517 -2.86971,0.29517 -2.76586,0 -4.96324,-0.86911 -6.59213,-2.60734 -1.62891,-1.73822 -2.44336,-4.08318 -2.44335,-7.03489 -1e-5,-2.99541 0.81991,-5.35131 2.45975,-7.06768 1.65076,-1.71634 3.90826,-2.57452 6.77251,-2.57454 0.92923,2e-5 1.8366,0.0984 2.72213,0.29517 0.88549,0.18587 1.74367,0.4701 2.57453,0.85271" + inkscape:connector-curvature="0" /> + <path + id="path47668" + d="m 370.76452,-183.5879 0,11.08528 -3.0173,0 0,-10.98689 c -1e-5,-1.73821 -0.33891,-3.03915 -1.01669,-3.90281 -0.67781,-0.86363 -1.69451,-1.29545 -3.05009,-1.29546 -1.62891,1e-5 -2.91345,0.51929 -3.85361,1.55784 -0.94018,1.03857 -1.41027,2.45429 -1.41026,4.24717 l 0,10.38015 -3.03369,0 0,-25.51582 3.03369,0 0,10.00299 c 0.72152,-1.10414 1.56877,-1.92952 2.54174,-2.47615 0.98389,-0.54659 2.11538,-0.8199 3.39446,-0.81992 2.1099,2e-5 3.70601,0.65595 4.78831,1.9678 1.08228,1.30095 1.62342,3.21956 1.62344,5.75582" + inkscape:connector-curvature="0" /> + <path + id="path47670" + d="m 376.81551,-190.86876 3.01729,0 0,18.36614 -3.01729,0 0,-18.36614 m 0,-7.14968 3.01729,0 0,3.82081 -3.01729,0 0,-3.82081" + inkscape:connector-curvature="0" /> + <path + id="path47672" + d="m 401.39662,-183.5879 0,11.08528 -3.01729,0 0,-10.98689 c -2e-5,-1.73821 -0.33892,-3.03915 -1.0167,-3.90281 -0.67781,-0.86363 -1.69451,-1.29545 -3.05009,-1.29546 -1.62891,1e-5 -2.91345,0.51929 -3.85361,1.55784 -0.94018,1.03857 -1.41026,2.45429 -1.41026,4.24717 l 0,10.38015 -3.03369,0 0,-18.36614 3.03369,0 0,2.85331 c 0.72152,-1.10414 1.56877,-1.92952 2.54175,-2.47615 0.98389,-0.54659 2.11537,-0.8199 3.39445,-0.81992 2.10991,2e-5 3.70601,0.65595 4.78832,1.9678 1.08227,1.30095 1.62341,3.21956 1.62343,5.75582" + inkscape:connector-curvature="0" /> + <path + id="path47674" + d="m 423.15722,-182.44002 0,1.47585 -13.873,0 c 0.13118,2.07713 0.75432,3.6623 1.86941,4.75552 1.12602,1.08229 2.68932,1.62344 4.68993,1.62344 1.1588,0 2.27935,-0.14212 3.36166,-0.42636 1.0932,-0.28424 2.17549,-0.71059 3.24687,-1.27907 l 0,2.85331 c -1.08231,0.45915 -2.19193,0.80899 -3.32886,1.04949 -1.13697,0.24051 -2.29032,0.36077 -3.46005,0.36077 -2.92985,0 -5.25294,-0.85272 -6.9693,-2.55814 -1.70543,-1.70543 -2.55814,-4.01212 -2.55814,-6.9201 0,-3.00635 0.80898,-5.38958 2.42696,-7.14968 1.62889,-1.771 3.8208,-2.65651 6.57573,-2.65653 2.47067,2e-5 4.42207,0.79807 5.85421,2.39416 1.44303,1.58519 2.16456,3.7443 2.16458,6.47734 m -3.0173,-0.88551 c -0.0219,-1.65075 -0.4865,-2.96808 -1.39386,-3.952 -0.89645,-0.98388 -2.08806,-1.47583 -3.57483,-1.47585 -1.68358,2e-5 -3.0337,0.47557 -4.05039,1.42666 -1.00577,0.95111 -1.58518,2.29031 -1.73823,4.01759 l 10.75731,-0.0164" + inkscape:connector-curvature="0" /> + <path + id="path47676" + d="m 438.93242,-196.98534 3.31246,0 0,21.695 11.9216,0 0,2.78772 -15.23406,0 0,-24.48272" + inkscape:connector-curvature="0" /> + <path + id="path47678" + d="m 472.6146,-182.44002 0,1.47585 -13.87299,0 c 0.13118,2.07713 0.75431,3.6623 1.86941,4.75552 1.12601,1.08229 2.68931,1.62344 4.68992,1.62344 1.1588,0 2.27936,-0.14212 3.36166,-0.42636 1.09321,-0.28424 2.1755,-0.71059 3.24687,-1.27907 l 0,2.85331 c -1.08231,0.45915 -2.19193,0.80899 -3.32886,1.04949 -1.13697,0.24051 -2.29032,0.36077 -3.46005,0.36077 -2.92985,0 -5.25294,-0.85272 -6.96929,-2.55814 -1.70543,-1.70543 -2.55815,-4.01212 -2.55815,-6.9201 0,-3.00635 0.80899,-5.38958 2.42696,-7.14968 1.62889,-1.771 3.8208,-2.65651 6.57573,-2.65653 2.47067,2e-5 4.42207,0.79807 5.85421,2.39416 1.44303,1.58519 2.16456,3.7443 2.16458,6.47734 m -3.01729,-0.88551 c -0.0219,-1.65075 -0.4865,-2.96808 -1.39386,-3.952 -0.89646,-0.98388 -2.08807,-1.47583 -3.57484,-1.47585 -1.68357,2e-5 -3.0337,0.47557 -4.05039,1.42666 -1.00577,0.95111 -1.58518,2.29031 -1.73822,4.01759 l 10.75731,-0.0164" + inkscape:connector-curvature="0" /> + <path + id="path47680" + d="m 485.91366,-181.73489 c -2.4379,1e-5 -4.12693,0.27878 -5.06709,0.83632 -0.94018,0.55755 -1.41026,1.50865 -1.41026,2.85331 0,1.07136 0.34983,1.92407 1.0495,2.55814 0.71058,0.62314 1.67262,0.93471 2.8861,0.9347 1.67262,1e-5 3.01182,-0.59033 4.0176,-1.77102 1.01668,-1.1916 1.52503,-2.77131 1.52504,-4.73912 l 0,-0.67233 -3.00089,0 m 6.01819,-1.24627 0,10.47854 -3.0173,0 0,-2.78772 c -0.68874,1.11509 -1.54692,1.94047 -2.57454,2.47615 -1.02764,0.52474 -2.28484,0.78712 -3.77161,0.78712 -1.88035,0 -3.37807,-0.52475 -4.49315,-1.57424 -1.10416,-1.06043 -1.65623,-2.47615 -1.65623,-4.24717 0,-2.06619 0.68873,-3.62403 2.06619,-4.67353 1.38839,-1.04948 3.45458,-1.57423 6.19857,-1.57424 l 4.23077,0 0,-0.29517 c -1e-5,-1.38838 -0.45916,-2.45974 -1.37746,-3.21407 -0.90738,-0.76524 -2.18645,-1.14787 -3.83721,-1.14789 -1.0495,2e-5 -2.07166,0.12574 -3.06649,0.37716 -0.99484,0.25146 -1.9514,0.62862 -2.86971,1.13149 l 0,-2.78772 c 1.10415,-0.42634 2.17551,-0.74337 3.21408,-0.9511 1.03855,-0.21863 2.04978,-0.32795 3.03369,-0.32797 2.65652,2e-5 4.64072,0.68875 5.9526,2.06619 1.31185,1.37748 1.96778,3.46553 1.9678,6.26417" + inkscape:connector-curvature="0" /> + <path + id="path47682" + d="m 508.80574,-188.04825 c -0.33891,-0.19676 -0.71061,-0.33888 -1.11509,-0.42636 -0.39357,-0.0984 -0.83086,-0.14757 -1.31187,-0.14758 -1.70543,1e-5 -3.0173,0.55756 -3.9356,1.67263 -0.90738,1.10417 -1.36107,2.6948 -1.36106,4.77192 l 0,9.67502 -3.03369,0 0,-18.36614 3.03369,0 0,2.85331 c 0.63406,-1.11507 1.45945,-1.94046 2.47615,-2.47615 1.01669,-0.54659 2.25203,-0.8199 3.70602,-0.81992 0.2077,2e-5 0.43728,0.0164 0.68873,0.0492 0.25143,0.0219 0.5302,0.0601 0.83632,0.11478 l 0.0164,3.09929" + inkscape:connector-curvature="0" /> + <path + id="path47684" + d="m 526.67993,-183.5879 0,11.08528 -3.01729,0 0,-10.98689 c -2e-5,-1.73821 -0.33892,-3.03915 -1.0167,-3.90281 -0.67781,-0.86363 -1.69451,-1.29545 -3.05009,-1.29546 -1.62891,1e-5 -2.91345,0.51929 -3.85361,1.55784 -0.94018,1.03857 -1.41026,2.45429 -1.41026,4.24717 l 0,10.38015 -3.03369,0 0,-18.36614 3.03369,0 0,2.85331 c 0.72152,-1.10414 1.56877,-1.92952 2.54175,-2.47615 0.98389,-0.54659 2.11537,-0.8199 3.39445,-0.81992 2.10991,2e-5 3.70601,0.65595 4.78832,1.9678 1.08227,1.30095 1.62341,3.21956 1.62343,5.75582" + inkscape:connector-curvature="0" /> + <path + id="path47686" + d="m 532.73092,-190.86876 3.01729,0 0,18.36614 -3.01729,0 0,-18.36614 m 0,-7.14968 3.01729,0 0,3.82081 -3.01729,0 0,-3.82081" + inkscape:connector-curvature="0" /> + <path + id="path47688" + d="m 557.31203,-183.5879 0,11.08528 -3.0173,0 0,-10.98689 c -10e-6,-1.73821 -0.33891,-3.03915 -1.01669,-3.90281 -0.67782,-0.86363 -1.69451,-1.29545 -3.05009,-1.29546 -1.62892,1e-5 -2.91345,0.51929 -3.85361,1.55784 -0.94018,1.03857 -1.41027,2.45429 -1.41026,4.24717 l 0,10.38015 -3.03369,0 0,-18.36614 3.03369,0 0,2.85331 c 0.72152,-1.10414 1.56877,-1.92952 2.54174,-2.47615 0.98389,-0.54659 2.11538,-0.8199 3.39446,-0.81992 2.1099,2e-5 3.70601,0.65595 4.78831,1.9678 1.08227,1.30095 1.62342,3.21956 1.62344,5.75582" + inkscape:connector-curvature="0" /> + <path + id="path47690" + d="m 575.44858,-181.89887 c -2e-5,-2.18644 -0.45371,-3.88093 -1.36107,-5.08349 -0.89645,-1.20253 -2.15912,-1.8038 -3.78801,-1.80381 -1.61798,1e-5 -2.88065,0.60128 -3.78802,1.80381 -0.89645,1.20256 -1.34467,2.89705 -1.34466,5.08349 -10e-6,2.17552 0.44821,3.86454 1.34466,5.06708 0.90737,1.20255 2.17004,1.80382 3.78802,1.80382 1.62889,0 2.89156,-0.60127 3.78801,-1.80382 0.90736,-1.20254 1.36105,-2.89156 1.36107,-5.06708 m 3.01729,7.11688 c -2e-5,3.12661 -0.69421,5.44971 -2.08259,6.96929 -1.38841,1.53051 -3.51472,2.29576 -6.37895,2.29577 -1.06044,-1e-5 -2.06074,-0.082 -3.0009,-0.24598 -0.94018,-0.15306 -1.85302,-0.39356 -2.73852,-0.72152 l 0,-2.93531 c 0.8855,0.48102 1.76008,0.83631 2.62373,1.0659 0.86364,0.22957 1.74368,0.34436 2.64013,0.34436 1.97873,0 3.46004,-0.51928 4.44395,-1.55784 0.98389,-1.02763 1.47584,-2.58547 1.47586,-4.67353 l 0,-1.49225 c -0.62316,1.0823 -1.42121,1.89128 -2.39416,2.42696 -0.97298,0.53568 -2.13726,0.80352 -3.49285,0.80352 -2.25204,0 -4.06679,-0.85818 -5.44425,-2.57454 -1.37746,-1.71636 -2.06619,-3.99026 -2.06619,-6.82171 0,-2.84237 0.68873,-5.12174 2.06619,-6.83811 1.37746,-1.71634 3.19221,-2.57452 5.44425,-2.57454 1.35559,2e-5 2.51987,0.26786 3.49285,0.80352 0.97295,0.5357 1.771,1.34468 2.39416,2.42695 l 0,-2.78771 3.01729,0 0,16.08677" + inkscape:connector-curvature="0" /> + <path + id="path47692" + d="m 612.19728,-175.99547 0,-6.57573 -5.41145,0 0,-2.72213 8.69112,0 0,10.51134 c -1.2791,0.90737 -2.68935,1.5961 -4.23078,2.06619 -1.54146,0.45915 -3.18676,0.68873 -4.9359,0.68873 -3.82629,0 -6.82171,-1.11509 -8.98629,-3.34526 -2.15365,-2.2411 -3.23047,-5.35679 -3.23047,-9.34706 0,-4.00118 1.07682,-7.11686 3.23047,-9.34705 2.16458,-2.24108 5.16,-3.36163 8.98629,-3.36166 1.59609,3e-5 3.1102,0.19681 4.54234,0.59034 1.44304,0.39359 2.7713,0.97299 3.9848,1.73822 l 0,3.52565 c -1.22443,-1.03854 -2.52536,-1.8202 -3.9028,-2.34496 -1.37748,-0.52473 -2.826,-0.7871 -4.34556,-0.78712 -2.99545,2e-5 -5.24748,0.83633 -6.75612,2.50894 -1.49772,1.67265 -2.24658,4.16519 -2.24657,7.47764 -10e-6,3.30154 0.74885,5.78862 2.24657,7.46125 1.50864,1.67263 3.76067,2.50895 6.75612,2.50894 1.16973,1e-5 2.21375,-0.0984 3.13208,-0.29517 0.91829,-0.20771 1.74367,-0.52474 2.47615,-0.9511" + inkscape:connector-curvature="0" /> + <path + id="path47694" + d="m 621.10157,-179.75069 0,-11.11807 3.0173,0 0,11.00328 c -10e-6,1.73823 0.33889,3.04463 1.01669,3.9192 0.67779,0.86365 1.69449,1.29548 3.05009,1.29547 1.62889,1e-5 2.91343,-0.51927 3.85361,-1.55784 0.95109,-1.03856 1.42664,-2.45428 1.42666,-4.24717 l 0,-10.41294 3.01729,0 0,18.36614 -3.01729,0 0,-2.82052 c -0.73247,1.11509 -1.58519,1.94594 -2.55814,2.49255 -0.96205,0.53568 -2.0826,0.80352 -3.36166,0.80352 -2.10993,0 -3.7115,-0.65594 -4.80471,-1.9678 -1.09323,-1.31187 -1.63984,-3.23047 -1.63984,-5.75582 m 7.59243,-11.56083 0,0" + inkscape:connector-curvature="0" /> + <path + id="path47696" + d="m 642.73098,-190.86876 3.01729,0 0,18.36614 -3.01729,0 0,-18.36614 m 0,-7.14968 3.01729,0 0,3.82081 -3.01729,0 0,-3.82081" + inkscape:connector-curvature="0" /> + <path + id="path47698" + d="m 664.1308,-188.08105 0,-9.93739 3.01729,0 0,25.51582 -3.01729,0 0,-2.75493 c -0.63409,1.09323 -1.43761,1.90768 -2.41056,2.44336 -0.96205,0.52474 -2.12086,0.78712 -3.47645,0.78712 -2.21925,0 -4.02853,-0.88551 -5.42785,-2.65653 -1.38839,-1.77102 -2.08259,-4.09958 -2.08259,-6.9857 0,-2.88609 0.6942,-5.21465 2.08259,-6.98569 1.39932,-1.771 3.2086,-2.65651 5.42785,-2.65653 1.35559,2e-5 2.5144,0.26786 3.47645,0.80352 0.97295,0.52476 1.77647,1.33375 2.41056,2.42695 m -10.28176,6.41175 c -10e-6,2.21925 0.45368,3.96294 1.36106,5.23107 0.9183,1.25721 2.1755,1.88582 3.77162,1.88581 1.59609,1e-5 2.8533,-0.6286 3.77162,-1.88581 0.91829,-1.26813 1.37744,-3.01182 1.37746,-5.23107 -2e-5,-2.21923 -0.45917,-3.95745 -1.37746,-5.21467 -0.91832,-1.26812 -2.17553,-1.90219 -3.77162,-1.9022 -1.59612,1e-5 -2.85332,0.63408 -3.77162,1.9022 -0.90738,1.25722 -1.36107,2.99544 -1.36106,5.21467" + inkscape:connector-curvature="0" /> + <path + id="path47700" + d="m 689.07267,-182.44002 0,1.47585 -13.873,0 c 0.13119,2.07713 0.75432,3.6623 1.86942,4.75552 1.12601,1.08229 2.68931,1.62344 4.68992,1.62344 1.1588,0 2.27936,-0.14212 3.36166,-0.42636 1.09321,-0.28424 2.1755,-0.71059 3.24687,-1.27907 l 0,2.85331 c -1.08231,0.45915 -2.19193,0.80899 -3.32886,1.04949 -1.13697,0.24051 -2.29032,0.36077 -3.46005,0.36077 -2.92985,0 -5.25294,-0.85272 -6.9693,-2.55814 -1.70543,-1.70543 -2.55814,-4.01212 -2.55814,-6.9201 0,-3.00635 0.80899,-5.38958 2.42696,-7.14968 1.62889,-1.771 3.8208,-2.65651 6.57573,-2.65653 2.47067,2e-5 4.42207,0.79807 5.85421,2.39416 1.44303,1.58519 2.16456,3.7443 2.16458,6.47734 m -3.0173,-0.88551 c -0.0219,-1.65075 -0.48649,-2.96808 -1.39385,-3.952 -0.89646,-0.98388 -2.08807,-1.47583 -3.57484,-1.47585 -1.68357,2e-5 -3.0337,0.47557 -4.05039,1.42666 -1.00577,0.95111 -1.58518,2.29031 -1.73823,4.01759 l 10.75731,-0.0164" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="matrix(1.0345233,0,0,1.0345233,-1007.1164,588.09643)" + id="g39490"> + <g + style="opacity:0.60905349;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;filter:url(#filter4656-5-8)" + id="g3648" + transform="matrix(0.69558029,0,0,0.69558029,713.76324,-601.99885)"> + <path + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" + d="m 587.32989,-12.5034 c 0,22.648314 -19.03547,41.0084 -42.5169,41.0084 -23.48144,0 -42.5169,-18.360086 -42.5169,-41.0084 0,-22.648314 19.03546,-41.0084 42.5169,-41.0084 23.48143,0 42.5169,18.360086 42.5169,41.0084 z" + id="path3650" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-opacity:1" + d="m 587.32989,-12.5034 c 0,22.648314 -19.03547,41.0084 -42.5169,41.0084 -23.48144,0 -42.5169,-18.360086 -42.5169,-41.0084 0,-22.648314 19.03546,-41.0084 42.5169,-41.0084 23.48143,0 42.5169,18.360086 42.5169,41.0084 z" + id="path3652" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <g + style="font-size:18.10740089px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:sans-serif" + id="g3654"> + <path + d="m 515.93664,-11.187918 2.54635,-0.247562 c 0.15325,0.854683 0.4627,1.4824288 0.92836,1.8832407 0.47154,0.4008171 1.10518,0.6012243 1.90092,0.6012223 0.84288,2e-6 1.47652,-0.1768279 1.90092,-0.5304903 0.43028,-0.3595516 0.64542,-0.7780487 0.64543,-1.2554937 -10e-6,-0.306501 -0.0914,-0.565852 -0.27408,-0.778052 -0.17684,-0.218086 -0.48924,-0.406705 -0.9372,-0.565857 -0.30652,-0.106092 -1.00499,-0.294711 -2.09544,-0.565856 -1.40286,-0.34776 -2.38721,-0.775099 -2.95306,-1.282018 -0.79574,-0.713207 -1.19361,-1.582621 -1.19361,-2.608244 0,-0.660155 0.18568,-1.276113 0.55702,-1.847874 0.37724,-0.577633 0.91657,-1.016761 1.61799,-1.317384 0.70732,-0.300598 1.55905,-0.450904 2.5552,-0.450917 1.62683,1.3e-5 2.8499,0.35662 3.66922,1.069822 0.8252,0.713226 1.25843,1.66516 1.29971,2.855806 l -2.61709,0.114939 c -0.112,-0.66605 -0.35367,-1.14349 -0.725,-1.432323 -0.36546,-0.294706 -0.91658,-0.442064 -1.65336,-0.442075 -0.76038,1.1e-5 -1.35571,0.15621 -1.78599,0.468599 -0.27704,0.200418 -0.41555,0.46861 -0.41555,0.804577 0,0.306515 0.12967,0.568813 0.38903,0.786894 0.33008,0.277043 1.1317,0.565865 2.40489,0.866468 1.27316,0.300618 2.21331,0.613018 2.82044,0.937199 0.613,0.318301 1.09044,0.757429 1.43232,1.317384 0.34775,0.554073 0.52164,1.240762 0.52165,2.060071 -1e-5,0.742689 -0.20631,1.43822 -0.61891,2.0865947 -0.41261,0.648378 -0.99615,1.1317131 -1.75061,1.4500067 -0.75449,0.3123997 -1.69463,0.4685995 -2.82044,0.4685997 -1.63863,-2e-7 -2.89707,-0.3772374 -3.77533,-1.1317126 -0.87825,-0.7603677 -1.40285,-1.8655546 -1.57378,-3.3155645" + style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path3656" + inkscape:connector-curvature="0" /> + <path + d="m 531.61262,-6.97052 0,-10.768952 -3.84605,0 0,-2.192693 10.30035,0 0,2.192693 -3.83721,0 0,10.768952 -2.61709,0" + style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path3658" + inkscape:connector-curvature="0" /> + <path + d="m 550.10905,-6.97052 -2.84697,0 -1.13171,-2.944221 -5.18112,0 -1.06982,2.944221 -2.77623,0 5.04849,-12.961645 2.76739,0 5.18997,12.961645 m -4.81862,-5.128073 -1.78599,-4.809778 -1.75061,4.809778 3.5366,0" + style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path3660" + inkscape:connector-curvature="0" /> + <path + d="m 551.51485,-6.97052 0,-12.961645 5.50825,0 c 1.38517,1.3e-5 2.39015,0.117899 3.01496,0.35366 0.63068,0.229891 1.13465,0.642494 1.51189,1.23781 0.37723,0.595339 0.56585,1.276134 0.56586,2.042388 -10e-6,0.972574 -0.28589,1.77715 -0.85763,2.413731 -0.57176,0.6307 -1.42643,1.028567 -2.56403,1.193603 0.56585,0.330088 1.0315,0.692589 1.39696,1.087505 0.37133,0.394924 0.8694,1.09635 1.49421,2.1042777 l 1.58263,2.5286703 -3.12989,0 -1.89208,-2.8204399 c -0.67197,-1.0079281 -1.13172,-1.6415681 -1.37928,-1.9009231 -0.24757,-0.26524 -0.50987,-0.445018 -0.78689,-0.539332 -0.27704,-0.100198 -0.71617,-0.1503 -1.31739,-0.150306 l -0.53049,0 0,5.411001 -2.61708,0 m 2.61708,-7.479913 1.93629,0 c 1.25549,8e-6 2.03943,-0.05304 2.35184,-0.159147 0.31239,-0.10609 0.55701,-0.288814 0.73385,-0.548173 0.17682,-0.259342 0.26523,-0.583531 0.26524,-0.972566 -10e-6,-0.436171 -0.11789,-0.786883 -0.35366,-1.052139 -0.22989,-0.271129 -0.55702,-0.442064 -0.98141,-0.512807 -0.2122,-0.02946 -0.84879,-0.0442 -1.90976,-0.04421 l -2.04239,0 0,3.289039" + style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path3662" + inkscape:connector-curvature="0" /> + <path + d="m 567.50913,-6.97052 0,-10.768952 -3.84606,0 0,-2.192693 10.30036,0 0,2.192693 -3.83722,0 0,10.768952 -2.61708,0" + style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path3664" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10.59131145;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:21.18262233, 10.59131116;stroke-dashoffset:84.73048696" + d="m 587.32989,-12.5034 c 0,22.648314 -19.03547,41.0084 -42.5169,41.0084 -23.48144,0 -42.5169,-18.360086 -42.5169,-41.0084 0,-22.648314 19.03546,-41.0084 42.5169,-41.0084 23.48143,0 42.5169,18.360086 42.5169,41.0084 z" + id="path3666" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + </g> + <path + style="fill:#ffffff" + d="m 1120.2008,-612.79345 c 0,15.75372 -13.2407,28.52463 -29.5739,28.52463 -16.3332,0 -29.5739,-12.77091 -29.5739,-28.52463 0,-15.75373 13.2407,-28.52464 29.5739,-28.52464 16.3332,0 29.5739,12.77091 29.5739,28.52464 z" + id="ellipse6-6" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#dee74e;stroke-width:2.78232121;stroke-opacity:1" + d="m 1120.2008,-612.79345 c 0,15.75372 -13.2407,28.52463 -29.5739,28.52463 -16.3332,0 -29.5739,-12.77091 -29.5739,-28.52463 0,-15.75373 13.2407,-28.52464 29.5739,-28.52464 16.3332,0 29.5739,12.77091 29.5739,28.52464 z" + id="ellipse8-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <g + transform="matrix(0.80925346,0,0,0.80925346,649.71957,-602.56778)" + style="font-size:18.10740089px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + id="text10-5"> + <path + d="m 515.93664,-11.187918 2.54635,-0.247562 c 0.15325,0.854683 0.4627,1.4824288 0.92836,1.8832407 0.47154,0.4008171 1.10518,0.6012243 1.90092,0.6012223 0.84288,2e-6 1.47652,-0.1768279 1.90092,-0.5304903 0.43028,-0.3595516 0.64542,-0.7780487 0.64543,-1.2554937 -10e-6,-0.306501 -0.0914,-0.565852 -0.27408,-0.778052 -0.17684,-0.218086 -0.48924,-0.406705 -0.9372,-0.565857 -0.30652,-0.106092 -1.00499,-0.294711 -2.09544,-0.565856 -1.40286,-0.34776 -2.38721,-0.775099 -2.95306,-1.282018 -0.79574,-0.713207 -1.19361,-1.582621 -1.19361,-2.608244 0,-0.660155 0.18568,-1.276113 0.55702,-1.847874 0.37724,-0.577633 0.91657,-1.016761 1.61799,-1.317384 0.70732,-0.300598 1.55905,-0.450904 2.5552,-0.450917 1.62683,1.3e-5 2.8499,0.35662 3.66922,1.069822 0.8252,0.713226 1.25843,1.66516 1.29971,2.855806 l -2.61709,0.114939 c -0.112,-0.66605 -0.35367,-1.14349 -0.725,-1.432323 -0.36546,-0.294706 -0.91658,-0.442064 -1.65336,-0.442075 -0.76038,1.1e-5 -1.35571,0.15621 -1.78599,0.468599 -0.27704,0.200418 -0.41555,0.46861 -0.41555,0.804577 0,0.306515 0.12967,0.568813 0.38903,0.786894 0.33008,0.277043 1.1317,0.565865 2.40489,0.866468 1.27316,0.300618 2.21331,0.613018 2.82044,0.937199 0.613,0.318301 1.09044,0.757429 1.43232,1.317384 0.34775,0.554073 0.52164,1.240762 0.52165,2.060071 -1e-5,0.742689 -0.20631,1.43822 -0.61891,2.0865947 -0.41261,0.648378 -0.99615,1.1317131 -1.75061,1.4500067 -0.75449,0.3123997 -1.69463,0.4685995 -2.82044,0.4685997 -1.63863,-2e-7 -2.89707,-0.3772374 -3.77533,-1.1317126 -0.87825,-0.7603677 -1.40285,-1.8655546 -1.57378,-3.3155645" + style="font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path6452" + inkscape:connector-curvature="0" /> + <path + d="m 531.61262,-6.97052 0,-10.768952 -3.84605,0 0,-2.192693 10.30035,0 0,2.192693 -3.83721,0 0,10.768952 -2.61709,0" + style="font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path6454" + inkscape:connector-curvature="0" /> + <path + d="m 550.10905,-6.97052 -2.84697,0 -1.13171,-2.944221 -5.18112,0 -1.06982,2.944221 -2.77623,0 5.04849,-12.961645 2.76739,0 5.18997,12.961645 m -4.81862,-5.128073 -1.78599,-4.809778 -1.75061,4.809778 3.5366,0" + style="font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path6456" + inkscape:connector-curvature="0" /> + <path + d="m 551.51485,-6.97052 0,-12.961645 5.50825,0 c 1.38517,1.3e-5 2.39015,0.117899 3.01496,0.35366 0.63068,0.229891 1.13465,0.642494 1.51189,1.23781 0.37723,0.595339 0.56585,1.276134 0.56586,2.042388 -10e-6,0.972574 -0.28589,1.77715 -0.85763,2.413731 -0.57176,0.6307 -1.42643,1.028567 -2.56403,1.193603 0.56585,0.330088 1.0315,0.692589 1.39696,1.087505 0.37133,0.394924 0.8694,1.09635 1.49421,2.1042777 l 1.58263,2.5286703 -3.12989,0 -1.89208,-2.8204399 c -0.67197,-1.0079281 -1.13172,-1.6415681 -1.37928,-1.9009231 -0.24757,-0.26524 -0.50987,-0.445018 -0.78689,-0.539332 -0.27704,-0.100198 -0.71617,-0.1503 -1.31739,-0.150306 l -0.53049,0 0,5.411001 -2.61708,0 m 2.61708,-7.479913 1.93629,0 c 1.25549,8e-6 2.03943,-0.05304 2.35184,-0.159147 0.31239,-0.10609 0.55701,-0.288814 0.73385,-0.548173 0.17682,-0.259342 0.26523,-0.583531 0.26524,-0.972566 -10e-6,-0.436171 -0.11789,-0.786883 -0.35366,-1.052139 -0.22989,-0.271129 -0.55702,-0.442064 -0.98141,-0.512807 -0.2122,-0.02946 -0.84879,-0.0442 -1.90976,-0.04421 l -2.04239,0 0,3.289039" + style="font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path6458" + inkscape:connector-curvature="0" /> + <path + d="m 567.50913,-6.97052 0,-10.768952 -3.84606,0 0,-2.192693 10.30036,0 0,2.192693 -3.83722,0 0,10.768952 -2.61708,0" + style="font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial Bold" + id="path6460" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:none;stroke:#96b018;stroke-width:7.36710787;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:14.73421468, 7.36710733;stroke-dashoffset:58.93685704" + d="m 1120.2008,-612.79345 c 0,15.75372 -13.2407,28.52463 -29.5739,28.52463 -16.3332,0 -29.5739,-12.77091 -29.5739,-28.52463 0,-15.75373 13.2407,-28.52464 29.5739,-28.52464 16.3332,0 29.5739,12.77091 29.5739,28.52464 z" + id="ellipse6445" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + </g> + <a + xlink:href="ml.html#svm_c_trainer" + id="a3653" + transform="matrix(1.0345233,0,0,1.0345233,11.692972,-4.0092227)"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g116"> + <rect + id="rect118" + height="72" + width="216.96899" + y="-86.082397" + x="-327.95401" + style="fill:#ffffff" /> + <rect + id="rect120" + height="72" + width="216.96899" + y="-86.082397" + x="-327.95401" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text122" + y="-62.1824" + x="-219.47" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan124" + y="-62.1824" + x="-219.47">svm_c_trainer</tspan> + <tspan + id="tspan126" + y="-46.1824" + x="-219.47">with radial_basis_kernel or</tspan> + <tspan + id="tspan128" + y="-30.1824" + x="-219.47">histogram_intersection_kernel</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#svm_c_linear_trainer" + id="a3662" + transform="matrix(1.0345233,0,0,1.0345233,11.571269,-12.413974)"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g152"> + <rect + id="rect154" + height="40" + width="156.05" + y="15.6702" + x="-326.48999" + style="fill:#ffffff" /> + <rect + id="rect156" + height="40" + width="156.05" + y="15.6702" + x="-326.48999" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text158" + y="39.570202" + x="-248.465" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan160" + y="39.570202" + x="-248.465">svm_c_linear_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#svm_one_class_trainer" + id="a3636" + transform="matrix(1.0345233,0,0,1.0345233,7.4344136,5.5047033)"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g346"> + <rect + id="rect348" + height="56" + width="176.41901" + y="-255.664" + x="-319.80399" + style="fill:#ffffff" /> + <rect + id="rect350" + height="56" + width="176.41901" + y="-255.664" + x="-319.80399" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text352" + y="-231.76401" + x="-231.595" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan354" + y="-231.76401" + x="-231.595">svm_one_class_trainer</tspan> + <tspan + id="tspan356" + y="-215.76401" + x="-231.595">with radial_basis_kernel</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#svm_c_linear_dcd_trainer" + id="a3644" + transform="matrix(1.0345233,0,0,1.0345233,11.899438,3.6734783)"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g418"> + <rect + id="rect420" + height="72" + width="236.125" + y="-183.45799" + x="-328.57401" + style="fill:#ffffff" /> + <rect + id="rect422" + height="72" + width="236.125" + y="-183.45799" + x="-328.57401" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text424" + y="-159.558" + x="-210.51199" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan426" + y="-159.558" + x="-210.51199">svm_c_linear_dcd_trainer</tspan> + <tspan + id="tspan428" + y="-143.558" + x="-210.51199">(see one_class_classifiers_ex.cpp</tspan> + <tspan + id="tspan430" + y="-127.558" + x="-210.51199">example program)</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#svm_multiclass_linear_trainer" + id="a3678" + transform="matrix(1.0345233,0,0,1.0345233,8.7733176,-27.437303)"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g444"> + <rect + id="rect446" + height="40" + width="213.39999" + y="180.489" + x="-322.68201" + style="fill:#ffffff" /> + <rect + id="rect448" + height="40" + width="213.39999" + y="180.489" + x="-322.68201" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text450" + y="204.38901" + x="-215.98199" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan452" + y="204.38901" + x="-215.98199">svm_multiclass_linear_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#one_vs_one_trainer" + id="a3669" + transform="matrix(1.0345233,0,0,1.0345233,9.5637186,-19.946388)"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g472"> + <rect + id="rect474" + height="72" + width="160.72501" + y="83.086998" + x="-323.50201" + style="fill:#ffffff" /> + <rect + id="rect476" + height="72" + width="160.72501" + y="83.086998" + x="-323.50201" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text478" + y="106.987" + x="-243.14" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan480" + y="106.987" + x="-243.14">one_vs_one_trainer</tspan> + <tspan + id="tspan482" + y="122.987" + x="-243.14">with krr_trainer using</tspan> + <tspan + id="tspan484" + y="138.987" + x="-243.14">radial_basis_kernel</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#krr_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-7.5701194,1.6805743)" + id="a3628"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g18"> + <rect + id="rect20" + height="56" + width="145.269" + y="-12.0354" + x="61.235401" + style="fill:#ffffff" /> + <rect + id="rect22" + height="56" + width="145.269" + y="-12.0354" + x="61.235401" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text24" + y="11.8646" + x="133.87" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan26" + y="11.8646" + x="133.87">krr_trainer with</tspan> + <tspan + id="tspan28" + y="27.864599" + x="133.87">radial_basis_kernel</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#newman_cluster" + transform="matrix(1.0345233,0,0,1.0345233,1296.7302,-569.23995)" + id="a3685"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-1369.5729,428.8738)" + id="g514"> + <rect + id="rect516" + height="56" + width="145.89999" + y="351.65601" + x="-318.07001" + style="fill:#ffffff" /> + <rect + id="rect518" + height="56" + width="145.89999" + y="351.65601" + x="-318.07001" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text520" + y="375.556" + x="-245.12" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan522" + y="375.556" + x="-245.12">newman_cluster or</tspan> + <tspan + id="tspan524" + y="391.556" + x="-245.12">chinese_whispers</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#spectral_cluster" + transform="matrix(1.0345233,0,0,1.0345233,7.1212846,-24.887993)" + id="a3693"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g526"> + <rect + id="rect528" + height="56" + width="202.55" + y="488.67001" + x="-319.828" + style="fill:#ffffff" /> + <rect + id="rect530" + height="56" + width="202.55" + y="488.67001" + x="-319.828" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text532" + y="512.57001" + x="-218.55299" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan534" + y="512.57001" + x="-218.55299">spectral_cluster or</tspan> + <tspan + id="tspan536" + y="528.57001" + x="-218.55299">find_clusters_using_kmeans</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#vector_normalizer_frobmetric" + transform="matrix(1.0345233,0,0,1.0345233,-44.863773,9.2552823)" + id="a38121"> + <g + transform="matrix(0.55795892,0,0,0.55795892,-138.86453,-79.441536)" + id="g35901"> + <rect + id="rect35903" + height="40" + width="212.35001" + y="-270.34601" + x="325.54199" + style="fill:#ffffff" /> + <rect + id="rect35905" + height="40" + width="212.35001" + y="-270.34601" + x="325.54199" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text35907" + y="-246.446" + x="431.71701" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan35909" + y="-246.446" + x="431.71701">vector_normalizer_frobmetric</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#linear_manifold_regularizer" + transform="matrix(1.0345233,0,0,1.0345233,-44.728164,8.0874193)" + id="a38128"> + <g + transform="matrix(0.55795892,0,0,0.55795892,-138.86453,-79.441536)" + id="g35911"> + <rect + id="rect35913" + height="40" + width="212.35001" + y="-320.746" + x="327.44199" + style="fill:#ffffff" /> + <rect + id="rect35915" + height="40" + width="212.35001" + y="-320.746" + x="327.44199" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text35917" + y="-296.84601" + x="433.617" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan35919" + y="-296.84601" + x="433.617">linear_manifold_regularizer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#krr_trainer" + transform="matrix(1.0345233,0,0,1.0345233,109.25334,30.388373)" + id="a3708"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g196"> + <rect + id="rect198" + height="56" + width="145.269" + y="392.564" + x="172.21899" + style="fill:#ffffff" /> + <rect + id="rect200" + height="56" + width="145.269" + y="392.564" + x="172.21899" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text202" + y="416.46399" + x="244.853" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan204" + y="416.46399" + x="244.853">krr_trainer with</tspan> + <tspan + id="tspan206" + y="432.46399" + x="244.853">radial_basis_kernel</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#svr_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-145.98494,-42.08382)" + id="a3723"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g248"> + <rect + id="rect250" + height="72" + width="216.96899" + y="527.11401" + x="349.62" + style="fill:#ffffff" /> + <rect + id="rect252" + height="72" + width="216.96899" + y="527.11401" + x="349.62" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text254" + y="551.01398" + x="458.104" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan256" + y="551.01398" + x="458.104">svr_trainer with</tspan> + <tspan + id="tspan258" + y="567.01398" + x="458.104">radial_basis_kernel or</tspan> + <tspan + id="tspan260" + y="583.01398" + x="458.104">histogram_intersection_kernel</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#svr_linear_trainer" + transform="matrix(1.0345233,0,0,1.0345233,-182.16362,-48.448377)" + id="a3716"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g266"> + <rect + id="rect268" + height="40" + width="135.39999" + y="467.306" + x="413.99799" + style="fill:#ffffff" /> + <rect + id="rect270" + height="40" + width="135.39999" + y="467.306" + x="413.99799" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text272" + y="491.20599" + x="481.698" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan274" + y="491.20599" + x="481.698">svr_linear_trainer</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#sammon_projection" + transform="matrix(1.0345233,0,0,1.0345233,-65.805214,95.211286)" + id="a3621"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g292"> + <rect + id="rect294" + height="40" + width="149.71899" + y="-268.496" + x="356.25601" + style="fill:#ffffff" /> + <rect + id="rect296" + height="40" + width="149.71899" + y="-268.496" + x="356.25601" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text298" + y="-244.59599" + x="431.11499" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan300" + y="-244.59599" + x="431.11499">sammon_projection</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#discriminant_pca" + transform="matrix(1.0345233,0,0,1.0345233,-182.5205,62.204516)" + id="a3614"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g594"> + <rect + id="rect596" + height="40" + width="153.761" + y="-262.94601" + x="557.93597" + style="fill:#ffffff" /> + <rect + id="rect598" + height="40" + width="153.761" + y="-262.94601" + x="557.93597" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text600" + y="-239.04601" + x="634.81702" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan602" + y="-239.04601" + x="634.81702">discriminant_pca</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#krls" + transform="matrix(1.0345233,0,0,1.0345233,110.93633,24.324742)" + id="a3701"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g634"> + <rect + id="rect636" + height="40" + width="83.5" + y="337.58401" + x="223.448" + style="fill:#ffffff" /> + <rect + id="rect638" + height="40" + width="83.5" + y="337.58401" + x="223.448" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text640" + y="361.48401" + x="265.198" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan642" + y="361.48401" + x="265.198">krls or rls</tspan> + </text> + </g> + </a> + <a + xlink:href="ml.html#cca" + transform="matrix(1.0345233,0,0,1.0345233,-150.53989,74.867806)" + id="a13216"> + <g + transform="matrix(0.55825566,0,0,0.55825566,-135.48618,-105.95031)" + id="g934"> + <rect + id="rect936" + height="40" + width="45.950001" + y="-188.5" + x="727.07599" + style="fill:#ffffff" /> + <rect + id="rect938" + height="40" + width="45.950001" + y="-188.5" + x="727.07599" + style="fill:none;stroke:#000000;stroke-width:4" /> + <text + id="text940" + y="-164.60001" + x="750.05103" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan942" + y="-164.60001" + x="750.05103">cca</tspan> + </text> + </g> + </a> + <g + id="g47633" + transform="matrix(0.57462316,0,0,0.57462316,76.947787,126.27271)"> + <g + id="g45724" + transform="matrix(1.0061486,0,0,1.0061486,-466.39656,-390.38341)"> + <path + id="path45726" + d="m 715.616,-35.4285 a 69.473,69.473 0 0 0 7.031,-17.207" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon45728" + points="724.261,-59.8526 728.414,-49.472 723.639,-52.3785 718.448,-50.3021 " + style="fill:#800000" /> + <polygon + id="polygon45730" + points="724.261,-59.8526 728.414,-49.472 723.639,-52.3785 718.448,-50.3021 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g45754" + transform="matrix(1.0061486,0,0,1.0061486,-466.39656,-390.38341)"> + <path + id="path45756" + d="m 661.592,-127.143 a 223.509,223.509 0 0 0 -26.922,-5.905" + style="fill:none;stroke:#800000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon45758" + points="627.257,-134.119 637.709,-138.088 634.719,-133.365 636.704,-128.139 " + style="fill:#800000" /> + <polygon + id="polygon45760" + points="627.257,-134.119 637.709,-138.088 634.719,-133.365 636.704,-128.139 " + style="fill:none;stroke:#800000;stroke-width:4" /> + </g> + <g + id="g45828" + transform="matrix(1.0061486,0,0,1.0061486,-466.39656,-390.38341)"> + <path + id="path45830" + d="m 696.275,-165.486 a 226.188,226.188 0 0 0 5.48,24.155" + style="fill:none;stroke:#008000;stroke-width:4" + inkscape:connector-curvature="0" /> + <polygon + id="polygon45832" + points="695.1,-172.884 701.218,-163.526 695.963,-165.433 691.284,-162.374 " + style="fill:#008000" /> + <polygon + id="polygon45834" + points="695.1,-172.884 701.218,-163.526 695.963,-165.433 691.284,-162.374 " + style="fill:none;stroke:#008000;stroke-width:4" /> + </g> + <g + id="g46026" + transform="matrix(1.0061486,0,0,1.0061486,-466.39656,-390.38341)"> + <ellipse + id="ellipse46028" + ry="38.129101" + rx="68.7519" + cy="-103.14" + cx="716.5" + style="fill:#ffffff" + d="m 785.2519,-103.14 c 0,21.058122 -30.78127,38.129101 -68.7519,38.129101 -37.97063,0 -68.7519,-17.070979 -68.7519,-38.129101 0,-21.05812 30.78127,-38.1291 68.7519,-38.1291 37.97063,0 68.7519,17.07098 68.7519,38.1291 z" + sodipodi:cx="716.5" + sodipodi:cy="-103.14" + sodipodi:rx="68.7519" + sodipodi:ry="38.129101" /> + <ellipse + id="ellipse46030" + ry="38.129101" + rx="68.7519" + cy="-103.14" + cx="716.5" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 785.2519,-103.14 c 0,21.058122 -30.78127,38.129101 -68.7519,38.129101 -37.97063,0 -68.7519,-17.070979 -68.7519,-38.129101 0,-21.05812 30.78127,-38.1291 68.7519,-38.1291 37.97063,0 68.7519,17.07098 68.7519,38.1291 z" + sodipodi:cx="716.5" + sodipodi:cy="-103.14" + sodipodi:rx="68.7519" + sodipodi:ry="38.129101" /> + <text + id="text46032" + y="-107.24" + x="716.5" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan46034" + y="-107.24" + x="716.5">Learning a</tspan> + <tspan + id="tspan46036" + y="-91.239899" + x="716.5">distance metric?</tspan> + </text> + </g> + </g> + <g + id="g40380" + transform="matrix(0.57671105,0,0,0.57671105,-189.44156,-98.071115)"> + <ellipse + id="ellipse40382" + ry="34.489201" + rx="80.742897" + cy="-4.2162099" + cx="677.51202" + style="fill:#ffffff" + d="m 758.25492,-4.2162099 c 0,19.0478599 -36.14983,34.4892009 -80.7429,34.4892009 -44.59307,0 -80.74289,-15.441341 -80.74289,-34.4892009 0,-19.0478591 36.14982,-34.4892001 80.74289,-34.4892001 44.59307,0 80.7429,15.441341 80.7429,34.4892001 z" + sodipodi:cx="677.51202" + sodipodi:cy="-4.2162099" + sodipodi:rx="80.742897" + sodipodi:ry="34.489201" /> + <ellipse + id="ellipse40384" + ry="34.489201" + rx="80.742897" + cy="-4.2162099" + cx="677.51202" + style="fill:none;stroke:#000057;stroke-width:2" + d="m 758.25492,-4.2162099 c 0,19.0478599 -36.14983,34.4892009 -80.7429,34.4892009 -44.59307,0 -80.74289,-15.441341 -80.74289,-34.4892009 0,-19.0478591 36.14982,-34.4892001 80.74289,-34.4892001 44.59307,0 80.7429,15.441341 80.7429,34.4892001 z" + sodipodi:cx="677.51202" + sodipodi:cy="-4.2162099" + sodipodi:rx="80.742897" + sodipodi:ry="34.489201" /> + <text + id="text40386" + y="-16.3162" + x="677.51202" + style="font-size:12.80000019px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;font-family:sans-serif" + font-size="12.8"> + <tspan + id="tspan40388" + y="-16.3162" + x="677.51202">Do you have</tspan> + <tspan + id="tspan40390" + y="-0.31621301" + x="677.51202">two views of</tspan> + <tspan + id="tspan40392" + y="15.6838" + x="677.51202">your data?</tspan> + </text> + </g> +</svg> diff --git a/ml/dlib/docs/docs/network.xml b/ml/dlib/docs/docs/network.xml new file mode 100644 index 00000000..c632f977 --- /dev/null +++ b/ml/dlib/docs/docs/network.xml @@ -0,0 +1,259 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Networking</title> + + <!-- ************************************************************************* --> + + <body> + <p> + This page documents tools built on top of the dlib <a href="api.html#sockets">sockets API</a>. + Therefore, all these tools are focused on providing some kind of higher level networking + abstraction or service. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>Objects</name> + <item>linker</item> + <item>server</item> + <item>server_iostream</item> + <item>server_http</item> + <item>bridge</item> + <item>sockstreambuf</item> + <item>iosockstream</item> + </section> + + <section> + <name>BSP</name> + <item>bsp_connect</item> + <item>bsp_listen</item> + <item>bsp_listen_dynamic_port</item> + <item>bsp_context</item> + </section> + + </top> + + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + + <!-- ************************************************************************* --> + + <component> + <name>linker</name> + <file>dlib/linker.h</file> + <spec_file>dlib/linker/linker_kernel_abstract.h</spec_file> + <description> + This object represents something that takes two connections and lets + them talk to each other. ie. any incoming data from one connection is + passed unaltered to the other and vice versa. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bridge</name> + <file>dlib/bridge.h</file> + <spec_file link="true">dlib/bridge/bridge_abstract.h</spec_file> + <description> + This object is a tool for bridging a <a href="other.html#pipe">pipe</a> object between + two network connected applications. + + <p> + The bridge object is designed to link two pipes together as efficiently as + possible. To demonstrate its speed, I ran two experiments where a bridge was + used to connect a desktop PC to a laptop, both running Ubuntu 12.04 and + connected via gigabit ethernet. The first experiment is to test its bulk + transfer speed while the second experiment measures how many separate objects + the bridge can transfer each second. + </p> + <p> + In the first experiment, 1-megapixel images, represented with + <tt>array<rgb_pixel></tt> objects, were sent. The transfer rate was + 112 megabytes/second, saturating the gigabit ethernet link. The second + experiment used a <tt>pipe<char></tt> and <tt>bridge</tt> to send individual + <tt>char</tt> variables over the network. In this experiment, I was able to + send 3.2 million objects a second (i.e. the receiving end was getting a char + back from pipe::dequeue() 3.2 million times each second). + </p> + <p> + For reference, these experiments were carried out on a desktop with a 2.67GHz + Intel Core-i7 CPU and a laptop with a 2.20GHz Intel Core-i7 CPU. + </p> + </description> + <examples> + <example>bridge_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bsp_connect</name> + <file>dlib/bsp.h</file> + <spec_file link="true">dlib/bsp/bsp_abstract.h</spec_file> + <description> + This function spawns a BSP job consisting of a number of network hosts + as well as the local host. + </description> + <examples> + <example>bsp_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bsp_listen</name> + <file>dlib/bsp.h</file> + <spec_file link="true">dlib/bsp/bsp_abstract.h</spec_file> + <description> + This function listens for a TCP connection from the <a href="#bsp_connect">bsp_connect</a> routine. + Once this connection is established, a user supplied function will be executed and it will + then be able to participate in a BSP computation as one of the processing + nodes. + </description> + <examples> + <example>bsp_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bsp_listen_dynamic_port</name> + <file>dlib/bsp.h</file> + <spec_file link="true">dlib/bsp/bsp_abstract.h</spec_file> + <description> + This function listens for a TCP connection from the <a href="#bsp_connect">bsp_connect</a> routine. + Once this connection is established, a user supplied function will be executed and it will + then be able to participate in a BSP computation as one of the processing + nodes. This function has the additional ability to select the listening TCP port + automatically from the set of available ports. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bsp_context</name> + <file>dlib/bsp.h</file> + <spec_file link="true">dlib/bsp/bsp_abstract.h</spec_file> + <description> + This is a tool used to implement algorithms using the Bulk Synchronous + Parallel (BSP) computing model. In particular, this object defines + the API used for communication between BSP jobs. + </description> + <examples> + <example>bsp_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>server</name> + <file>dlib/server.h</file> + <spec_file>dlib/server/server_kernel_abstract.h</spec_file> + <description> + This object represents a server that listens on a port and spawns new + threads to handle each new connection. It also manages the connections + and threads for you. + </description> + + <examples> + <example>sockets_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>server_iostream</name> + <file>dlib/server.h</file> + <spec_file>dlib/server/server_iostream_abstract.h</spec_file> + <description> + This is an extension of the <a href="#server">server</a> object that redefines + the on_connect() function so that instead of giving you a connection object you + get an istream and ostream object. + </description> + <examples> + <example>server_iostream_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>server_http</name> + <file>dlib/server.h</file> + <spec_file link="true">dlib/server/server_http_abstract.h</spec_file> + <description> + This is an extension of the <a href="#server_iostream">server_iostream</a> object which + turns it into a simple HTTP server. + </description> + + <examples> + <example>server_http_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>iosockstream</name> + <file>dlib/iosockstream.h</file> + <spec_file>dlib/iosockstream/iosockstream_abstract.h</spec_file> + <description> + This is an iostream object that reads/writes from a TCP network connection. + </description> + + <examples> + <example>iosockstream_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>sockstreambuf</name> + <file>dlib/sockstreambuf.h</file> + <spec_file>dlib/sockstreambuf/sockstreambuf_abstract.h</spec_file> + <description> + This object represents a stream buffer for connection objects. If you + are considering using this object then you should also take a look at + the <a href="#iosockstream">iosockstream</a>. + </description> + + <examples> + <example>sockstreambuf_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/old_change_log.xml b/ml/dlib/docs/docs/old_change_log.xml new file mode 100644 index 00000000..bddb0b47 --- /dev/null +++ b/ml/dlib/docs/docs/old_change_log.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Old Change Logs</title> + <body from_file="old_log.txt"/> +</doc> diff --git a/ml/dlib/docs/docs/old_release_notes.xml b/ml/dlib/docs/docs/old_release_notes.xml new file mode 100644 index 00000000..e9e7c408 --- /dev/null +++ b/ml/dlib/docs/docs/old_release_notes.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Old Release Notes</title> + <body> + <old_release_notes/> + </body> +</doc> + diff --git a/ml/dlib/docs/docs/optimization.xml b/ml/dlib/docs/docs/optimization.xml new file mode 100644 index 00000000..cd04ded7 --- /dev/null +++ b/ml/dlib/docs/docs/optimization.xml @@ -0,0 +1,1338 @@ +<?xml version="1.0" encoding="utf8"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Optimization</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + This page documents library components that attempt to find the + minimum or maximum of a user supplied function. An introduction + to the general purpose non-linear optimizers in this section can be + found <a href="optimization_ex.cpp.html">here</a>. For an example + showing how to use the non-linear least squares routines look + <a href="least_squares_ex.cpp.html">here</a>. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>General Purpose Optimizers</name> + <item>find_min</item> + <item>find_min_box_constrained</item> + <item>find_min_single_variable</item> + <item>find_min_using_approximate_derivatives</item> + <item>find_min_bobyqa</item> + <item>find_min_global</item> + <item>find_max</item> + <item>find_max_box_constrained</item> + <item>find_max_single_variable</item> + <item>find_max_using_approximate_derivatives</item> + <item>find_max_bobyqa</item> + <item>find_max_global</item> + <item>global_function_search</item> + <item>find_max_trust_region</item> + <item>find_min_trust_region</item> + </section> + + <section> + <name>Special Purpose Optimizers</name> + <item>find_gap_between_convex_hulls</item> + <item>solve_qp_box_constrained</item> + <item>solve_qp_box_constrained_blockdiag</item> + <item>solve_qp_using_smo</item> + <item>solve_qp2_using_smo</item> + <item>solve_qp3_using_smo</item> + <item>solve_qp4_using_smo</item> + <item>oca</item> + <item>mpc</item> + <item>solve_least_squares</item> + <item>solve_least_squares_lm</item> + <item>solve_trust_region_subproblem</item> + <item>solve_trust_region_subproblem_bounded</item> + <item>max_cost_assignment</item> + <item>max_sum_submatrix</item> + <item>find_max_factor_graph_nmplp</item> + <item>find_max_factor_graph_viterbi</item> + <item>find_max_factor_graph_potts</item> + <item>find_max_parse_cky</item> + <item>min_cut</item> + <item>elastic_net</item> + <item>isotonic_regression</item> + </section> + + <section> + <name>Strategies</name> + <item>cg_search_strategy</item> + <item>bfgs_search_strategy</item> + <item>newton_search_strategy</item> + <item>lbfgs_search_strategy</item> + <item>objective_delta_stop_strategy</item> + <item>gradient_norm_stop_strategy</item> + </section> + + <section> + <name>Helper Routines</name> + <item>derivative</item> + <item>negate_function</item> + <item>clamp_function</item> + <item>make_line_search_function</item> + <item>poly_min_extrap</item> + <item>lagrange_poly_min_extrap</item> + <item>line_search</item> + <item>backtracking_line_search</item> + <item>graph_cut_score</item> + <item>potts_model_score</item> + <item>parse_tree_to_string</item> + <item>find_trees_not_rooted_with_tag</item> + <item>upper_bound_function</item> + <item>call_function_and_expand_args</item> + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + <!-- ************************************************************************* --> + + <component> + <name>derivative</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + This is a function that takes another function as input and returns + a function object that numerically computes the derivative of the input function. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>negate_function</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + This is a function that takes another function as input and returns + a function object that computes the negation of the input function. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>clamp_function</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + This is a function that takes another function, f(x), as input and + returns a new function object, g(x), such that + <tt>g(x) == f(clamp(x,x_lower,x_upper))</tt> where x_lower and x_upper + are vectors of box constraints which are applied to x. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>make_line_search_function</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + This is a function that takes another function f(x) as input and returns + a function object l(z) = f(start + z*direction). It is useful for + turning multi-variable functions into single-variable functions for + use with the <a href="#line_search">line_search</a> or + <a href="#backtracking_line_search">backtracking_line_search</a> routines. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>poly_min_extrap</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + This function finds the 2nd or 3rd degree polynomial that interpolates a + set of points and returns the minimum of that polynomial. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>lagrange_poly_min_extrap</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + This function finds the second order polynomial that interpolates a + set of points and returns the minimum of that polynomial. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>line_search</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + Performs a gradient based line search on a given function and returns the input + that makes the function significantly smaller. This implements the classic + line search method using the strong Wolfe conditions with a bracketing and then + sectioning phase, both using polynomial interpolation. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>backtracking_line_search</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + Performs a line search on a given function and returns the input + that makes the function significantly smaller. This implementation uses a + basic Armijo backtracking search with polynomial interpolation. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cg_search_strategy</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_search_strategies_abstract.h</spec_file> + <description> + This object represents a strategy for determining which direction + a <a href="#line_search">line search</a> should be carried out along. This particular object + is an implementation of the Polak-Ribiere conjugate gradient method + for determining this direction. + + <p> + This method uses an amount of memory that is linear in the number + of variables to be optimized. So it is capable of handling problems + with a very large number of variables. However, it is generally + not as good as the L-BFGS algorithm (see the + <a href="#lbfgs_search_strategy">lbfgs_search_strategy</a> class). + </p> + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>bfgs_search_strategy</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_search_strategies_abstract.h</spec_file> + <description> + This object represents a strategy for determining which direction + a <a href="#line_search">line search</a> should be carried out along. This particular object + is an implementation of the BFGS quasi-newton method for determining + this direction. + + <p> + This method uses an amount of memory that is quadratic in the number + of variables to be optimized. It is generally very effective but + if your problem has a very large number of variables then it isn't + appropriate. Instead, you should try the <a href="#lbfgs_search_strategy">lbfgs_search_strategy</a>. + </p> + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>newton_search_strategy</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_search_strategies_abstract.h</spec_file> + <description> + This object represents a strategy for determining which direction + a <a href="#line_search">line search</a> should be carried out along. This particular routine + is an implementation of the newton method for determining this direction. + That means using it requires you to supply a method for + creating hessian matrices for the problem you are trying to optimize. + + <p> + Note also that this is actually a helper function for creating + <a href="dlib/optimization/optimization_search_strategies_abstract.h.html#newton_search_strategy_obj" + >newton_search_strategy_obj</a> objects. + </p> + + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>lbfgs_search_strategy</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_search_strategies_abstract.h</spec_file> + <description> + This object represents a strategy for determining which direction + a <a href="#line_search">line search</a> should be carried out along. This particular object + is an implementation of the L-BFGS quasi-newton method for determining + this direction. + + <p> + This method uses an amount of memory that is linear in the number + of variables to be optimized. This makes it an excellent method + to use when an optimization problem has a large number of variables. + </p> + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>objective_delta_stop_strategy</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_stop_strategies_abstract.h</spec_file> + <description> + This object represents a strategy for deciding if an optimization + algorithm should terminate. This particular object looks at the + change in the objective function from one iteration to the next and + bases its decision on how large this change is. If the change + is below a user given threshold then the search stops. + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>gradient_norm_stop_strategy</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_stop_strategies_abstract.h</spec_file> + <description> + This object represents a strategy for deciding if an optimization + algorithm should terminate. This particular object looks at the + norm (i.e. the length) of the current gradient vector and + stops if it is smaller than a user given threshold. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_min</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + Performs an unconstrained minimization of a nonlinear function using + some search strategy (e.g. <a href="#bfgs_search_strategy">bfgs_search_strategy</a>). + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_min_box_constrained</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + Performs a box constrained minimization of a nonlinear function using + some search strategy (e.g. <a href="#bfgs_search_strategy">bfgs_search_strategy</a>). + This function uses a backtracking line search along with a gradient projection + step to handle the box constraints. + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_min_single_variable</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + Performs a bound constrained minimization of a nonlinear function. The + function must be of a single variable. Derivatives are not required. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_trust_region_subproblem_bounded</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_trust_region_abstract.h</spec_file> + <description> + This function solves the following optimization problem: +<pre> +Minimize: f(p) == 0.5*trans(p)*B*p + trans(g)*p +subject to the following constraint: + length(p) <= radius + lower(i) <= p(i) <= upper(i), for all i +</pre> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_trust_region_subproblem</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_trust_region_abstract.h</spec_file> + <description> + This function solves the following optimization problem: +<pre> +Minimize: f(p) == 0.5*trans(p)*B*p + trans(g)*p +subject to the following constraint: + length(p) <= radius +</pre> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_gap_between_convex_hulls</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp_using_smo_abstract.h</spec_file> + <description> + This function measures the position and size of the gap between two convex + polytopes. In particular, it solves the following quadratic program: +<pre> + Minimize: f(cA,cB) == length_squared(A*cA - B*cB) + subject to the following constraints on cA and cB: + - is_col_vector(cA) == true && cA.size() == A.nc() + - is_col_vector(cB) == true && cB.size() == B.nc() + - sum(cA) == 1 && min(cA) >= 0 + - sum(cB) == 1 && min(cB) >= 0 +</pre> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_qp_using_smo</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp_using_smo_abstract.h</spec_file> + <description> + This function solves the following quadratic program: +<pre> + Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha - trans(alpha)*b + subject to the following constraints: + sum(alpha) == C + min(alpha) >= 0 + Where f is convex. This means that Q should be symmetric and positive-semidefinite. +</pre> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_qp_box_constrained</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp_using_smo_abstract.h</spec_file> + <description> + This function solves the following quadratic program: +<pre> + Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + trans(b)*alpha + subject to the following box constraints on alpha: + 0 <= min(alpha-lower) + 0 <= max(upper-alpha) + Where f is convex. This means that Q should be positive-semidefinite. +</pre> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_qp_box_constrained_blockdiag</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp_using_smo_abstract.h</spec_file> + <description> + This function solves the following quadratic program: +<pre> + Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + trans(b)*alpha + subject to the following box constraints on alpha: + 0 <= min(alpha-lower) + 0 <= max(upper-alpha) + Where f is convex. This means that Q should be positive-semidefinite. +</pre> + + So it does the same thing as <a href="#solve_qp_box_constrained">solve_qp_box_constrained</a>, + except it is optimized for large Q matrices with a special block + structure. In particular, Q must be grouped into identically sized + blocks where all blocks are diagonal matrices, except those on the + main diagonal which can be dense. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_qp2_using_smo</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp2_using_smo_abstract.h</spec_file> + <description> + This function solves the following quadratic program: +<pre> + Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + subject to the following constraints: + sum(alpha) == nu*y.size() + 0 <= min(alpha) && max(alpha) <= 1 + trans(y)*alpha == 0 + + Where all elements of y must be equal to +1 or -1 and f is convex. + This means that Q should be symmetric and positive-semidefinite. +</pre> +<br/> + This object implements the strategy used by the LIBSVM tool. The following papers + can be consulted for additional details: + <ul> + <li>Chang and Lin, Training {nu}-Support Vector Classifiers: Theory and Algorithms</li> + <li>Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector + machines, 2001. Software available at + <a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a></li> + </ul> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_qp3_using_smo</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp3_using_smo_abstract.h</spec_file> + <description> + This function solves the following quadratic program: +<pre> + Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + trans(p)*alpha + subject to the following constraints: + for all i such that y(i) == +1: 0 <= alpha(i) <= Cp + for all i such that y(i) == -1: 0 <= alpha(i) <= Cn + trans(y)*alpha == B + + Where all elements of y must be equal to +1 or -1 and f is convex. + This means that Q should be symmetric and positive-semidefinite. +</pre> +<br/> + This object implements the strategy used by the LIBSVM tool. The following papers + can be consulted for additional details: + <ul> + <li>Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector + machines, 2001. Software available at + <a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a></li> + <li>Working Set Selection Using Second Order Information for Training Support Vector Machines by + Fan, Chen, and Lin. In the Journal of Machine Learning Research 2005.</li> + </ul> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_qp4_using_smo</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_solve_qp_using_smo_abstract.h</spec_file> + <description> + This function solves the following quadratic program: +<pre> + Minimize: f(alpha,lambda) == 0.5*trans(alpha)*Q*alpha - trans(alpha)*b + + 0.5*trans(lambda)*lambda - trans(lambda)*A*alpha - trans(lambda)*d + subject to the following constraints: + sum(alpha) == C + min(alpha) >= 0 + min(lambda) >= 0 + max(lambda) <= max_lambda + Where f is convex. This means that Q should be positive-semidefinite. +</pre> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>max_cost_assignment</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/max_cost_assignment_abstract.h</spec_file> + <description> + This function is an implementation of the Hungarian algorithm (also know as the Kuhn-Munkres algorithm) which + runs in O(N^3) time. + It solves the optimal assignment problem. For example, suppose you have an equal number of workers + and jobs and you need to decide which workers to assign to which jobs. Some workers are better at + certain jobs than others. So you would like to find out how to assign them all to jobs such that + overall productivity is maximized. You can use this routine to solve this problem and others like it. + <p> + Note that dlib also contains a <a href="ml.html#structural_assignment_trainer">machine learning</a> + method for learning the cost function needed to use the Hungarian algorithm. + </p> + + </description> + <examples> + <example>max_cost_assignment_ex.cpp.html</example> + <example>max_cost_assignment.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>max_sum_submatrix</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/max_sum_submatrix_abstract.h</spec_file> + <description> + This function finds the submatrix within a user supplied matrix which has the largest sum. It then + zeros out that submatrix and repeats the process until no more maximal submatrices can + be found. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_factor_graph_nmplp</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/find_max_factor_graph_nmplp_abstract.h</spec_file> + <description> + This function is a tool for approximately solving the MAP problem in a graphical + model or factor graph with pairwise potential functions. That is, it attempts + to solve a certain kind of optimization problem which can be defined as follows: +<pre> + maximize: f(X) + where X is a set of integer valued variables and f(X) can be written + as the sum of functions which each involve only two variables from X. +</pre> +If the graph is tree-structured then this routine always gives the exact solution to the MAP problem. +However, for graphs with cycles, the solution may be approximate. +<br/> +<br/> + This function is an implementation of the NMPLP algorithm introduced in the + following papers: + <blockquote> + Fixing Max-Product: Convergent Message Passing Algorithms for MAP LP-Relaxations (2008) + by Amir Globerson and Tommi Jaakkola + </blockquote> + <blockquote> + Introduction to dual decomposition for inference (2011) + by David Sontag, Amir Globerson, and Tommi Jaakkola + </blockquote> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_parse_cky</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/find_max_parse_cky_abstract.h</spec_file> + <description> + This function implements the CKY parsing algorithm. In particular, it + finds the maximum scoring binary parse tree that parses an input sequence of tokens. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>parse_tree_to_string</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/find_max_parse_cky_abstract.h</spec_file> + <description> + This is a set of functions useful for converting a parse tree output by + <a href="#find_max_parse_cky">find_max_parse_cky</a> into a bracketed string + suitable for displaying the parse tree. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_trees_not_rooted_with_tag</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/find_max_parse_cky_abstract.h</spec_file> + <description> + Finds all the largest non-overlapping <a href="#find_max_parse_cky">parse trees</a> + in tree that are not rooted with a particular tag. + <p> + This function is useful when you want to cut a parse tree + into a bunch of sub-trees and you know that the top level of the tree is all + composed of the same kind of tag. So if you want to just "slice off" the top + of the tree where this tag lives then this function is useful for doing that. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_factor_graph_viterbi</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/find_max_factor_graph_viterbi_abstract.h</spec_file> + <description> + This function is a tool for exactly solving the MAP problem in a chain-structured + graphical model or factor graph. In particular, it is an implementation of the classic Viterbi + algorithm for finding the maximizing assignment. In addition to basic first order Markov + models, this function is also capable of finding the MAP assignment for higher order + Markov models. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>potts_model_score</name> + <file>dlib/graph_cuts.h</file> + <spec_file link="true">dlib/graph_cuts/find_max_factor_graph_potts_abstract.h</spec_file> + <description> + This routine computes the model score for a Potts problem and a + candidate labeling. This score is the quantity maximised + by the <a href="#find_max_factor_graph_potts">find_max_factor_graph_potts</a> + routine. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>graph_cut_score</name> + <file>dlib/graph_cuts.h</file> + <spec_file link="true">dlib/graph_cuts/min_cut_abstract.h</spec_file> + <description> + This routine computes the score for a candidate graph cut. This is the + quantity minimized by the <a href="#min_cut">min_cut</a> algorithm. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>min_cut</name> + <file>dlib/graph_cuts.h</file> + <spec_file link="true">dlib/graph_cuts/min_cut_abstract.h</spec_file> + <description> + This is a function object which can be used to find the min cut + on a graph. + The implementation is based on the method described in the following + paper: + <blockquote> + An Experimental Comparison of Min-Cut/Max-Flow Algorithms for + Energy Minimization in Vision, by Yuri Boykov and Vladimir Kolmogorov, + in PAMI 2004. + </blockquote> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_factor_graph_potts</name> + <file>dlib/graph_cuts.h</file> + <spec_file link="true">dlib/graph_cuts/find_max_factor_graph_potts_abstract.h</spec_file> + <description> + This is a set of overloaded functions for exactly solving the MAP problem in a Potts + model. This type of model is useful when you have a problem which + can be modeled as a bunch of binary decisions on some variables, + but you have some kind of labeling consistency constraint. This + means that there is some penalty for giving certain pairs of variables + different labels. So in addition to trying to figure out how to best + label each variable on its own, you have to worry about making the + labels pairwise consistent in some sense. The find_max_factor_graph_potts() + routine can be used to find the most probable/highest scoring + labeling for this type of model. + <p>The implementation of this routine is based on the <a href="#min_cut">min_cut</a> object.</p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>oca</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_oca_abstract.h</spec_file> + <description> + This object is a tool for solving the following optimization problem: +<pre> + Minimize: f(w) == 0.5*||w||^2 + C*R(w) + + Where R(w) is a user-supplied convex function and C > 0. Optionally, + this object can also add non-negativity constraints to some or all + of the elements of w. + +Or it can alternatively solve: + Minimize: f(w) == 0.5*||w-prior||^2 + C*R(w) + + Where prior is a user supplied vector and R(w) has the same + interpretation as above. + +Or it can use the elastic net regularizer: + Minimize: f(w) == 0.5*(1-lasso_lambda)*length_squared(w) + lasso_lambda*sum(abs(w)) + C*R(w) + + Where lasso_lambda is a number in the range [0, 1) and controls + trade-off between doing L1 and L2 regularization. R(w) has the same + interpretation as above. +</pre> +<br/> +<br/> + + For a detailed discussion you should consult the following papers + from the Journal of Machine Learning Research: + <blockquote> + Optimized Cutting Plane Algorithm for Large-Scale Risk Minimization + by Vojtech Franc, Soren Sonnenburg; 10(Oct):2157--2192, 2009. + </blockquote> + <blockquote> + Bundle Methods for Regularized Risk Minimization + by Choon Hui Teo, S.V.N. Vishwanthan, Alex J. Smola, Quoc V. Le; 11(Jan):311-365, 2010. + </blockquote> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>mpc</name> + <file>dlib/control.h</file> + <spec_file link="true">dlib/control/mpc_abstract.h</spec_file> + <description> + This object implements a linear model predictive controller. + In particular, it solves a certain quadratic program using the method + described in the paper: + <blockquote> + A Fast Gradient method for embedded linear predictive control (2011) + by Markus Kogel and Rolf Findeisen + </blockquote> + </description> + <examples> + <example>mpc_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>find_min_bobyqa</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_bobyqa_abstract.h</spec_file> + <description> + This function defines the dlib interface to the BOBYQA software developed by M.J.D Powell. + BOBYQA is a method for optimizing a function in the absence of derivative information. + Powell described it as a method that seeks the least value of a function of many + variables, by applying a trust region method that forms quadratic models by + interpolation. There is usually some freedom in the interpolation conditions, + which is taken up by minimizing the Frobenius norm of the change to the second + derivative of the model, beginning with the zero matrix. The values of the variables + are constrained by upper and lower bounds. + + <p> + The following paper, published in 2009 by Powell, describes the + detailed working of the BOBYQA algorithm. + + <blockquote> + The BOBYQA algorithm for bound constrained optimization + without derivatives by M.J.D. Powell + </blockquote> + </p> + + <p> + Note that BOBYQA only works on functions of two or more variables. So if you need to perform + derivative-free optimization on a function of a single variable + then you should use the <a href="#find_min_single_variable">find_min_single_variable</a> + function. + </p> + + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_bobyqa</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_bobyqa_abstract.h</spec_file> + <description> + This function is identical to the <a href="#find_min_bobyqa">find_min_bobyqa</a> routine + except that it negates the objective function before performing optimization. + Thus this function will attempt to find the maximizer of the objective rather than + the minimizer. + <p> + Note that BOBYQA only works on functions of two or more variables. So if you need to perform + derivative-free optimization on a function of a single variable + then you should use the <a href="#find_max_single_variable">find_max_single_variable</a> + function. + </p> + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>isotonic_regression</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/isotonic_regression_abstract.h</spec_file> + <description> + This object is a tool for performing 1-D isotonic regression. That is, it + finds the least squares fit of a non-parametric curve to some user supplied + data, subject to the constraint that the fitted curve is non-decreasing. + + <p> + This is done using the fast O(n) pool adjacent violators algorithm. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>elastic_net</name> + <file>dlib/optimization/elastic_net.h</file> + <spec_file link="true">dlib/optimization/elastic_net_abstract.h</spec_file> + <description> + This object is a tool for solving the following optimization problem: + +<pre> + min_w: length_squared(X*w - Y) + ridge_lambda*length_squared(w) + such that: sum(abs(w)) <= lasso_budget +</pre> + + <p> + That is, it solves the elastic net optimization problem. This object also + has the special property that you can quickly obtain different solutions + for different settings of ridge_lambda, lasso_budget, and target Y values. + </p> + + <p> + This is because a large amount of work is precomputed in the constructor. + The solver will also remember the previous solution and will use that to + warm start subsequent invocations. Therefore, you can efficiently get + solutions for a wide range of regularization parameters. + </p> + + + The particular algorithm used to solve it is described in the paper: + <blockquote> + Zhou, Quan, et al. "A reduction of the elastic net to support vector + machines with an application to gpu computing." arXiv preprint + arXiv:1409.1976 (2014). APA + </blockquote> + + And for the SVM solver sub-component we use the algorithm from: + <blockquote> + Hsieh, Cho-Jui, et al. "A dual coordinate descent method for large-scale + linear SVM." Proceedings of the 25th international conference on Machine + learning. ACM, 2008. + </blockquote> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_min_using_approximate_derivatives</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + Performs an unconstrained minimization of a nonlinear function using + some search strategy (e.g. <a href="#bfgs_search_strategy">bfgs_search_strategy</a>). + This version doesn't take a gradient function but instead numerically approximates + the gradient. + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_least_squares</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_least_squares_abstract.h</spec_file> + <description> + This is a function for solving non-linear least squares problems. It uses a method + which combines the traditional Levenberg-Marquardt technique with a quasi-newton + approach. It is appropriate for large residual problems (i.e. problems where the + terms in the least squares function, the residuals, don't go to zero but remain + large at the solution) + </description> + + <examples> + <example>least_squares_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>solve_least_squares_lm</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_least_squares_abstract.h</spec_file> + <description> + This is a function for solving non-linear least squares problems. It uses + the traditional Levenberg-Marquardt technique. + It is appropriate for small residual problems (i.e. problems where the + terms in the least squares function, the residuals, go to zero at the solution) + </description> + + <examples> + <example>least_squares_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_min_trust_region</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_trust_region_abstract.h</spec_file> + <description> + Performs an unconstrained minimization of a nonlinear function using + a trust region method. + </description> + <examples> + <example>optimization_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_trust_region</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_trust_region_abstract.h</spec_file> + <description> + Performs an unconstrained maximization of a nonlinear function using + a trust region method. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + Performs an unconstrained maximization of a nonlinear function using + some search strategy (e.g. <a href="#bfgs_search_strategy">bfgs_search_strategy</a>). + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_box_constrained</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + Performs a box constrained maximization of a nonlinear function using + some search strategy (e.g. <a href="#bfgs_search_strategy">bfgs_search_strategy</a>). + This function uses a backtracking line search along with a gradient projection + step to handle the box constraints. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_single_variable</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_line_search_abstract.h</spec_file> + <description> + Performs a bound constrained maximization of a nonlinear function. The + function must be of a single variable. Derivatives are not required. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_using_approximate_derivatives</name> + <file>dlib/optimization.h</file> + <spec_file link="true">dlib/optimization/optimization_abstract.h</spec_file> + <description> + Performs an unconstrained maximization of a nonlinear function using + some search strategy (e.g. <a href="#bfgs_search_strategy">bfgs_search_strategy</a>). + This version doesn't take a gradient function but instead numerically approximates + the gradient. + </description> + + </component> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <component> + <name>global_function_search</name> + <file>dlib/global_optimization.h</file> + <spec_file link="true">dlib/global_optimization/global_function_search_abstract.h</spec_file> + <description> + This object performs global optimization of a set of user supplied + functions. That is, given a set of functions, each of which could take a different + number of arguments, this object allows you to find which function and which arguments + produce the maximal output. + + <p> + Importantly, the global_function_search object does not require the user to + supply derivatives. Moreover, the functions being optimized may contain discontinuities, + behave stochastically, and have many local maxima. The global_function_search + object will attempt to find the global optima in the face of these challenges. + It is also designed to use as few function evaluations as possible, making + it suitable for optimizing functions that are very expensive to evaluate. + It does this by alternating between two modes: a global exploration mode + and a local optima refinement mode. This is accomplished by building and + maintaining two models of the objective function: + </p> + <ol> + <li> + A global model that <a href="#upper_bound_function">upper bounds our objective function</a>. This is a non-parametric + piecewise linear model derived from all function evaluations ever seen by the + global_function_search object. This is based on the method described in <i>Global + Optimization of Lipschitz Functions</i> by Cédric Malherbe and Nicolas Vayatis in the + 2017 International Conference on Machine Learning. + </li> + <li> + A local quadratic model fit around the best point seen so far. This uses + a trust region method similar to what is proposed in: + <i>The NEWUOA software for unconstrained optimization without derivatives</i> By + M.J.D. Powell, 40th Workshop on Large Scale Nonlinear Optimization (Erice, + Italy, 2004) + </li> + </ol> + + The behavior of the algorithm is illustrated in the following video, which shows the solver in action. In the video, the red line + is the function to be optimized and we are looking for the maximum point. Every time + the global_function_search samples a point from the function we note it with a little + box. The state of the solver is determined by the two models discussed above. + Therefore, we draw the upper bounding model as well as the current local quadratic model + so you can see how they evolve as the optimization proceeds. We also note the location of the + best point seen so far by a little vertical line. + <p> + You can see that the optimizer is alternating between picking the maximum upper bounding + point and the maximum point according to the quadratic model. As the optimization + progresses, the upper bound becomes progressively more accurate, helping to find the + best peak to investigate, while the quadratic model quickly finds a high precision + maximizer on whatever peak it currently rests. These two things together allow the + optimizer to find the true global maximizer to high precision (within 1e-9 in this case) by the time the + video concludes. + </p> + <center> + <video src="find_max_global_example"> + Video of optimizer running + </video> + </center> + + <p> + Finally, note that the <a href="#find_max_global">find_max_global</a> routine is + essentially a simple wrapper around the global_function_search object and exists to + provide a convenient interface. Most users will therefore want to call find_max_global + rather than global_function_search. However, the API of global_function_search + is more general and allows for of a wider set of usage patterns, for example, executing + objective function evaluations in parallel. So more advanced users may want to use + global_function_search directly rather than find_max_global. But try to use find_max_global() first. + </p> + + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_max_global</name> + <file>dlib/global_optimization.h</file> + <spec_file link="true">dlib/global_optimization/find_max_global_abstract.h</spec_file> + <description> + This function performs global optimization of a function, subject + to bounds constraints. This means it attempts to find the global + maximizer, not just a local maximizer. The search is performed + using the <a href="#global_function_search">global_function_search</a> object. + See global_function_search's documentation for details of the algorithm. Importantly, + find_max_global() does not require the user to specify derivatives + or starting guesses, all while attempting to use as few calls to + the objective function as possible. It is therefore appropriate for tasks + where evaluating the objective function is time consuming or + expensive, such as in hyper parameter optimization of machine + learning models. + </description> + + <examples> + <example>optimization_ex.cpp.html</example> + <example>model_selection_ex.cpp.html</example> + <example>global_optimization.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>find_min_global</name> + <file>dlib/global_optimization.h</file> + <spec_file link="true">dlib/global_optimization/find_max_global_abstract.h</spec_file> + <description> + This function is identical to the <a href="#find_max_global">find_max_global</a> routine + except it negates the objective function before performing optimization. + Thus this function will attempt to find the minimizer of the objective rather than + the maximizer. + </description> + <examples> + <example>optimization_ex.cpp.html</example> + <example>model_selection_ex.cpp.html</example> + <example>global_optimization.py.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>upper_bound_function</name> + <file>dlib/global_optimization.h</file> + <spec_file link="true">dlib/global_optimization/upper_bound_function_abstract.h</spec_file> + <description> + This object represents a piecewise linear non-parametric function that can + be used to define an upper bound on some more complex and unknown function. + + <p> + This is based on the method described in <i>Global Optimization of Lipschitz + Functions</i> by Cédric Malherbe and Nicolas Vayatis in the 2017 International + Conference on Machine Learning. Here we have extended it to support modeling of + stochastic or discontinuous functions by adding a noise term. We also model separate + Lipschitz parameters for each dimension, allowing the model to handle functions with + widely varying sensitivities to each input variable. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>call_function_and_expand_args</name> + <file>dlib/global_optimization.h</file> + <spec_file link="true">dlib/global_optimization/find_max_global_abstract.h</spec_file> + <description> + This routine allows you to pass a <tt>dlib::matrix<double,0,1></tt> object to + a function that takes simple <tt>double</tt> arguments. It does this by automatically + expanding the matrix elements and invoking the function. For example, suppose you had + a function like this: + <code_box> +double f(double x, double y, double z); </code_box> + You could then call f() like this: + <code_box> +matrix<double,0,1> args = {3,4,5}; +call_function_and_expand_args(f, args); // calls: f(3,4,5) </code_box> + + This kind of thing is convenient when writing optimizers like <a + href="#find_max_global">find_max_global</a> since it allows a wide range of + input functions to be given to the optimizer, including functions with + explicitly named arguments like x,y,z as shown above. + </description> + + </component> + + <!-- ************************************************************************* --> + + + </components> + + <!-- ************************************************************************* --> + + +</doc> + diff --git a/ml/dlib/docs/docs/other.xml b/ml/dlib/docs/docs/other.xml new file mode 100644 index 00000000..d8d151d8 --- /dev/null +++ b/ml/dlib/docs/docs/other.xml @@ -0,0 +1,1166 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Miscellaneous</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + + This page documents library components that don't really fit in anywhere else. + They all follow the same conventions as the rest of the library. + </p> + + </body> + + <!-- ************************************************************************* --> + + <menu width="200"> + <top> + <section> + <name>Objects</name> + <item>bit_stream</item> + <item>byte_orderer</item> + <item>std_allocator</item> + <item>memory_manager</item> + <item>memory_manager_global</item> + <item>memory_manager_stateless</item> + <item>default_memory_manager</item> + <item>sync_extension</item> + <item>timer</item> + <item>timeout</item> + <item>member_function_pointer</item> + <item>vectorstream</item> + <item>unserialize</item> + <item>bound_function_pointer</item> + <item>error</item> + <item>console_progress_indicator</item> + <item>pipe</item> + <item>copy_functor</item> + <item>logger</item> + <item nolink="true"> + <name>Fixed_width_integers</name> + <sub> + <item>uint64</item> + <item>uint32</item> + <item>uint16</item> + <item>uint8</item> + <item>int64</item> + <item>int32</item> + <item>int16</item> + <item>int8</item> + </sub> + </item> + </section> + + <section> + <name>Global Functions</name> + <item>ramdump</item> + <item>check_serialized_version</item> + <item>deserialize</item> + <item>serialize</item> + <item>zero_extend_cast</item> + <item>make_mfp</item> + <item>TIME_THIS</item> + <item>timing code blocks</item> + </section> + + <section> + <name>SQLite</name> + <item>database</item> + <item>statement</item> + <item>transaction</item> + <item nolink="true"> + <name>simple_queries</name> + <sub> + <item> + <name>query_object</name> + <link>dlib/sqlite/sqlite_tools_abstract.h.html#query_object</link> + </item> + <item> + <name>query_text</name> + <link>dlib/sqlite/sqlite_tools_abstract.h.html#query_text</link> + </item> + <item> + <name>query_double</name> + <link>dlib/sqlite/sqlite_tools_abstract.h.html#query_double</link> + </item> + <item> + <name>query_int</name> + <link>dlib/sqlite/sqlite_tools_abstract.h.html#query_int</link> + </item> + <item> + <name>query_int64</name> + <link>dlib/sqlite/sqlite_tools_abstract.h.html#query_int64</link> + </item> + <item> + <name>query_blob</name> + <link>dlib/sqlite/sqlite_tools_abstract.h.html#query_blob</link> + </item> + </sub> + </item> + </section> + + <section> + <name>Other</name> + <item>dlib_testing_suite</item> + <item>MATLAB</item> + <item>Java</item> + </section> + + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + + <!-- ************************************************************************* --> + + <component> + <name>zero_extend_cast</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is a global function that performs a zero extending cast + from one integral type to another integral type. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>uint32</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for a 32 bit unsigned integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>uint8</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for an 8 bit unsigned integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + + <component> + <name>uint16</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for a 16 bit unsigned integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>int8</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for an 8 bit integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>int16</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for a 16 bit integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>int32</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for a 32 bit integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>int64</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for a 64 bit integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>std_allocator</name> + <file>dlib/std_allocator.h</file> + <spec_file>dlib/std_allocator.h</spec_file> + <description> + This object is an implementation of an allocator that conforms to the C++ standard + requirements for allocator objects. The M template argument is one of the dlib + memory manager objects and this allocator implementation will do all of its memory allocations + using whatever dlib memory manager you supply. + + <p> + Thus, using this allocator object you can use any of the dlib memory manager objects with + the containers in the STL or with any other object that requires an STL style allocator object. + </p> + </description> + + <examples> + <example>std_allocator_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>uint64</name> + <file>dlib/uintn.h</file> + <spec_file link="true">dlib/uintn.h</spec_file> + <description> + This is just a typedef for a 64 bit unsigned integer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>copy_functor</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a templated function object that makes copies of something. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>logger</name> + <file>dlib/logger.h</file> + <spec_file>dlib/logger/logger_kernel_abstract.h</spec_file> + <description> + This component is a logging output stream in the style of the log4j + logger available for Java. + </description> + + <examples> + <example>logger_ex.cpp.html</example> + <example>logger_ex_2.cpp.html</example> + <example>logger_custom_output_ex.cpp.html</example> + <example>pipe_ex.cpp.html</example> + </examples> + + <extensions> + <extension> + <name>extra_logger_headers</name> + <spec_file>dlib/logger/extra_logger_headers.h</spec_file> + <description>This extension contains additional logger headers you may chose to use instead of the + default one. </description> + </extension> + <extension> + <name>config_file</name> + <spec_file>dlib/logger/logger_config_file.h</spec_file> + <description>This extension provides the configure_loggers_from_file() function + which reads a configuration file from disk that sets up all your loggers.</description> + </extension> + </extensions> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>error</name> + <file>dlib/error.h</file> + <spec_file link="true">dlib/error.h</spec_file> + <description> + This is the base exception class from which all exceptions in this + library inherit. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>console_progress_indicator</name> + <file>dlib/console_progress_indicator.h</file> + <spec_file link="true">dlib/console_progress_indicator.h</spec_file> + <description> + This object is a tool for reporting how long a task will take + to complete. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pipe</name> + <file>dlib/pipe.h</file> + <spec_file>dlib/pipe/pipe_kernel_abstract.h</spec_file> + <description> + This is a first in first out queue with a fixed maximum size. + It is suitable for passing objects between threads. + + <p> + This object is optimized for speed, therefore, it uses + global <tt>swap()</tt> to create a zero-copy method for moving objects + around. For example, on a computer running Ubuntu 12.04 with + a 2.67GHz Intel i7 920 CPU it is possible to pass over 4.4 + million <tt>std::vector<int></tt> objects a second between two + threads. This is regardless of the number of ints in the <tt>std::vector</tt> + objects. In particular, this test was done with 100,000 + ints in each <tt>std::vector</tt>. + </p> + <p> + Finally, note that you can use the pipe as an efficient method to pass + messages between two networked computers by using the <a href="network.html#bridge">bridge</a>. + </p> + </description> + + <examples> + <example>pipe_ex.cpp.html</example> + <example>pipe_ex_2.cpp.html</example> + <example>bridge_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>bound_function_pointer</name> + <file>dlib/bound_function_pointer.h</file> + <spec_file>dlib/bound_function_pointer/bound_function_pointer_kernel_abstract.h</spec_file> + <description> + This object represents a function with all its arguments bound to specific objects. + + <p> + This implementation is done using type erasure and placement new. This + means that it never allocates memory on the heap and instead stores everything + on the stack. + </p> + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>vectorstream</name> + <file>dlib/vectorstream.h</file> + <spec_file>dlib/vectorstream/vectorstream_abstract.h</spec_file> + <description> + This is an iostream object that reads and writes from an in-memory buffer. + It functions very much the same way as the std::stringstream object. + However, while the std::stringstream holds its buffer internally and it can + only be accessed by copying it out, the vectorstream uses an external + std::vector<char> as its buffer. That is, it holds a reference to an + external vector and does not contain any internal buffers of its own. + + <p> + This object is useful as a slightly more efficient alternative to the + std::stringstream since you can avoid the overhead of copying buffer + contents to and from the stream. This is particularly useful when used as + a source or target for <a href="#serialize">serialization</a> routines. + </p> + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>unserialize</name> + <file>dlib/vectorstream.h</file> + <spec_file>dlib/vectorstream/unserialize_abstract.h</spec_file> + <description> + This object effectively allows you to peek at the next serialized + object in an istream. It does this by allowing you to read an object + and then put it back. + </description> + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>member_function_pointer</name> + <file>dlib/member_function_pointer.h</file> + <spec_file>dlib/member_function_pointer/member_function_pointer_kernel_abstract.h</spec_file> + <description> + This object represents a member function pointer. It is useful because + instances of this object can be created without needing to know the type + of object whose member function we will be calling. + <p> + The implementation of this object is done using type erasure and placement new. This + means that it never allocates memory on the heap and instead stores everything + on the stack. + </p> + </description> + + <examples> + <example>member_function_pointer_ex.cpp.html</example> + </examples> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>make_mfp</name> + <file>dlib/member_function_pointer.h</file> + <spec_file>dlib/member_function_pointer/make_mfp_abstract.h</spec_file> + <description> + This function is a simple factory for creating <a href="#member_function_pointer">member_function_pointer</a> + objects without needing to know the necessary template arguments for the member_function_pointer. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>bit_stream</name> + <file>dlib/bit_stream.h</file> + <spec_file>dlib/bit_stream/bit_stream_kernel_abstract.h</spec_file> + <description> + This object represents a middle man between a user and the iostream classes that allows single + bits to be read/written easily from/to the iostream classes + </description> + + <implementations> + <implementation> + <name>bit_stream_kernel_1</name> + <file>dlib/bit_stream/bit_stream_kernel_1.h</file> + <description> + This implementation is done by buffering single bits in the obvious way. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for bit_stream_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + + <extensions> + <extension> + <name>bit_stream_multi</name> + <spec_file>dlib/bit_stream/bit_stream_multi_abstract.h</spec_file> + <description>This extension gives a bit_stream object the ability to read/write multiple bits at a time.</description> + <implementations> + <implementation> + <name>bit_stream_multi_1</name> + <file>dlib/bit_stream/bit_stream_multi_1.h</file> + <description>This implementation is done by calling the read/write functions in the bit_stream kernel.</description> + <typedefs> + <typedef> + <name>multi_1a</name> + <description>is a typedef for bit_stream_kernel_1 extended by bit_stream_multi_1</description> + </typedef> + </typedefs> + </implementation> + </implementations> + </extension> + </extensions> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>byte_orderer</name> + <file>dlib/byte_orderer.h</file> + <spec_file>dlib/byte_orderer/byte_orderer_kernel_abstract.h</spec_file> + <description> + This object provides a simple type safe mechanism to convert data + to and from network and host byte orders. I.e. to convert things + between big and little endian byte ordering. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>default_memory_manager</name> + <file>dlib/algs.h</file> + <spec_file link="true">dlib/algs.h</spec_file> + <description> + This is a memory manager object which simply calls new and delete directly (i.e. + it doesn't really do anything). It is the default memory manager used by most + of the objects in dlib. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>memory_manager_stateless</name> + <file>dlib/memory_manager_stateless.h</file> + <spec_file>dlib/memory_manager_stateless/memory_manager_stateless_kernel_abstract.h</spec_file> + <description> + This object represents some kind of stateless memory manager or memory pool. + Stateless means that all instances (instances of the same type that is) + of this object are identical and can be used interchangeably. Note that + implementations are allowed to have some shared global state such as a + global memory pool. This object is also thread safe. + </description> + + <implementations> + <implementation> + <name>memory_manager_stateless_kernel_1</name> + <file>dlib/memory_manager_stateless/memory_manager_stateless_kernel_1.h</file> + <description> + This implementation just calls new and delete. So it doesn't do anything special. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for memory_manager_stateless_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>memory_manager_stateless_kernel_2</name> + <file>dlib/memory_manager_stateless/memory_manager_stateless_kernel_2.h</file> + <description> + This implementation uses a global instance of a <a href="#memory_manager">memory_manager</a> object + guarded by a mutex as its implementation. + </description> + + <typedefs> + <typedef> + <name>kernel_2_1a</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1a</description> + </typedef> + <typedef> + <name>kernel_2_1b</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1b</description> + </typedef> + <typedef> + <name>kernel_2_1c</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1c</description> + </typedef> + <typedef> + <name>kernel_2_1d</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1d</description> + </typedef> + <typedef> + <name>kernel_2_1e</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1e</description> + </typedef> + <typedef> + <name>kernel_2_1f</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1f</description> + </typedef> + <typedef> + <name>kernel_2_2a</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2a</description> + </typedef> + <typedef> + <name>kernel_2_2b</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2b</description> + </typedef> + <typedef> + <name>kernel_2_2c</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2c</description> + </typedef> + <typedef> + <name>kernel_2_2d</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2d</description> + </typedef> + <typedef> + <name>kernel_2_2e</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2e</description> + </typedef> + + <typedef> + <name>kernel_2_3a</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3a</description> + </typedef> + <typedef> + <name>kernel_2_3b</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3b</description> + </typedef> + <typedef> + <name>kernel_2_3c</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3c</description> + </typedef> + <typedef> + <name>kernel_2_3d</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3d</description> + </typedef> + <typedef> + <name>kernel_2_3e</name> + <description>is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3e</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>memory_manager_global</name> + <file>dlib/memory_manager_global.h</file> + <spec_file>dlib/memory_manager_global/memory_manager_global_kernel_abstract.h</spec_file> + <description> + This object represents some kind of global memory manager or memory pool. + </description> + + <implementations> + <implementation> + <name>memory_manager_global_kernel_1</name> + <file>dlib/memory_manager_global/memory_manager_global_kernel_1.h</file> + <description> + This is implemented in the obvious way. See the code for details. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for memory_manager_global_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>memory_manager</name> + <file>dlib/memory_manager.h</file> + <spec_file>dlib/memory_manager/memory_manager_kernel_abstract.h</spec_file> + <description> + This object represents a memory pool. + </description> + + <implementations> + <implementation> + <name>memory_manager_kernel_1</name> + <file>dlib/memory_manager/memory_manager_kernel_1.h</file> + <description> + This memory manager implementation allocates objects one at a time when there are + allocation requests. Then when there is a deallocate request the returning object + is placed into a list of free blocks if that list has less than max_pool_size + blocks in it. Subsequent allocation requests will be serviced by drawing from the + free list whenever it isn't empty. Array allocations, on the other hand, are not + managed at all but are passed directly on to new and delete. + <p> + When this object's max_pool_size template parameter is set to 0 it simply calls + new and delete directly and doesn't function as a memory pool. + </p> + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for memory_manager_kernel_1 with a max_pool_size of 0</description> + </typedef> + <typedef> + <name>kernel_1b</name> + <description>is a typedef for memory_manager_kernel_1 with a max_pool_size of 10</description> + </typedef> + <typedef> + <name>kernel_1c</name> + <description>is a typedef for memory_manager_kernel_1 with a max_pool_size of 100</description> + </typedef> + <typedef> + <name>kernel_1d</name> + <description>is a typedef for memory_manager_kernel_1 with a max_pool_size of 1000</description> + </typedef> + <typedef> + <name>kernel_1e</name> + <description>is a typedef for memory_manager_kernel_1 with a max_pool_size of 10000</description> + </typedef> + <typedef> + <name>kernel_1f</name> + <description>is a typedef for memory_manager_kernel_1 with a max_pool_size of 100000</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>memory_manager_kernel_2</name> + <file>dlib/memory_manager/memory_manager_kernel_2.h</file> + <description> + This memory manager implementation allocates memory in blocks of chunk_size*sizeof(T) + bytes. All the sizeof(T) sub-blocks are kept in a linked list of free memory blocks + and are given out whenever an allocation request occurs. Also, memory is not freed + until this object is destructed. + Also note that array allocations are not managed at all but are passed directly + on to new and delete. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for memory_manager_kernel_2 with a chunk_size of 10</description> + </typedef> + <typedef> + <name>kernel_2b</name> + <description>is a typedef for memory_manager_kernel_2 with a chunk_size of 100</description> + </typedef> + <typedef> + <name>kernel_2c</name> + <description>is a typedef for memory_manager_kernel_2 with a chunk_size of 1000</description> + </typedef> + <typedef> + <name>kernel_2d</name> + <description>is a typedef for memory_manager_kernel_2 with a chunk_size of 10000</description> + </typedef> + <typedef> + <name>kernel_2e</name> + <description>is a typedef for memory_manager_kernel_2 with a chunk_size of 100000</description> + </typedef> + </typedefs> + + </implementation> + + <implementation> + <name>memory_manager_kernel_3</name> + <file>dlib/memory_manager/memory_manager_kernel_3.h</file> + <description> + This memory manager implementation allocates memory in blocks of chunk_size*sizeof(T) + bytes. All the sizeof(T) sub-blocks are kept in a linked list of free memory blocks + and are given out whenever an allocation request occurs. Note that array allocations + are managed. So this object is just like kernel_2 but it also pools memory from + array allocations (chunk_size has no effect with respect to array allocations, each array + is allocated one at a time). + Also, memory is not freed until this object is destructed. + </description> + + <typedefs> + <typedef> + <name>kernel_3a</name> + <description>is a typedef for memory_manager_kernel_3 with a chunk_size of 10</description> + </typedef> + <typedef> + <name>kernel_3b</name> + <description>is a typedef for memory_manager_kernel_3 with a chunk_size of 100</description> + </typedef> + <typedef> + <name>kernel_3c</name> + <description>is a typedef for memory_manager_kernel_3 with a chunk_size of 1000</description> + </typedef> + <typedef> + <name>kernel_3d</name> + <description>is a typedef for memory_manager_kernel_3 with a chunk_size of 10000</description> + </typedef> + <typedef> + <name>kernel_3e</name> + <description>is a typedef for memory_manager_kernel_3 with a chunk_size of 100000</description> + </typedef> + </typedefs> + + </implementation> + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>sync_extension</name> + <file>dlib/sync_extension.h</file> + <spec_file>dlib/sync_extension/sync_extension_kernel_abstract.h</spec_file> + <description> + + This object represents a general extension to any object. This object gives any object which it extends + an integrated rmutex and rsignaler object. The extended object will + then be able to be treated as if it was also a <a href="dlib/threads/rmutex_extension_abstract.h.html#rmutex">rmutex</a> and + <a href="dlib/threads/rsignaler_extension_abstract.h.html#rsignaler">rsignaler</a>. + + </description> + + <implementations> + <implementation> + <name>sync_extension_kernel_1</name> + <file>dlib/sync_extension/sync_extension_kernel_1.h</file> + <description> + This is implemented using a <a href="dlib/threads/rmutex_extension_abstract.h.html#rmutex">rmutex</a> + and <a href="dlib/threads/rsignaler_extension_abstract.h.html#rsignaler">rsignaler</a> in the obvious way. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for sync_extension_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>timeout</name> + <file>dlib/timeout.h</file> + <spec_file>dlib/timeout/timeout_abstract.h</spec_file> + <description> + This object provides a simple way to implement a timeout. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>timer</name> + <file>dlib/timer.h</file> + <spec_file>dlib/timer/timer_abstract.h</spec_file> + <description> + This object represents a timer that will call a given member function + repeatedly at regular intervals. + <p> + The implementation of this object has a single master thread + that does all the waiting. This master thread creates and + dispatches threads to specific timer objects when they need + to run their action functions. When a timer object isn't + executing its action function then it doesn't have any thread + allocated to it at all. So it is fairly efficient. + </p> + </description> + + <examples> + <example>timer_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>database</name> + <file>dlib/sqlite.h</file> + <spec_file link="true">dlib/sqlite/sqlite_abstract.h</spec_file> + <description> + This object is a C++ wrapper around a SQLite database connection + handle and therefore represents a <a href="http://www.sqlite.org">SQLite</a> database file. + + <p> + Note that this wrapper is targeted at SQLite Version 3. To use it + you must make sure you link your application with SQLite. However, + if you use CMake and dlib's default CMakeLists.txt file then it will get setup + automatically. This is assuming sqlite3 is properly installed on your system. + On ubuntu you can get it by installing the libsqlite3-dev package. Or you can always + download the <a href="http://www.sqlite.org/download.html">SQLite source</a> + and compile it straight into your application (download the amalgamation). + </p> + </description> + <examples> + <example>sqlite_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>statement</name> + <file>dlib/sqlite.h</file> + <spec_file link="true">dlib/sqlite/sqlite_abstract.h</spec_file> + <description> + This object represents a SQL statement which can be executed + against a <a href="#database">database</a> object. In particular, this object is a + C++ wrapper around a <a href="http://www.sqlite.org">SQLite</a> prepared statement. + <p> + Note that this wrapper is targeted at SQLite Version 3. To use it + you must make sure you link your application with SQLite. + </p> + </description> + <examples> + <example>sqlite_ex.cpp.html</example> + </examples> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>transaction</name> + <file>dlib/sqlite.h</file> + <spec_file link="true">dlib/sqlite/sqlite_tools_abstract.h</spec_file> + <description> + This object is a tool for creating exception safe + <a href="#database">database</a> transactions. + </description> + <examples> + <example>sqlite_ex.cpp.html</example> + </examples> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>deserialize</name> + <file>dlib/serialize.h</file> + <spec_file>dlib/serialize.h</spec_file> + <description> + This is actually a set of overloaded functions which provide the ability to restore an object's state + from an input stream. Currently all dlib container classes, non pointer C++ intrinsics, std::string, + std::vector, std::map, std::set, std::complex, dlib::bigint, dlib::uint64, dlib::int64, C style arrays, and dlib::vector objects are serializable. + <p> + You can also use serialize() and deserialize() to read/write Google protocol buffer objects. However, + note that dlib::serialize() writes additional delimiting bytes at the start of each protocol buffer message. + We do this because Google protocol buffers are not + <a href="https://developers.google.com/protocol-buffers/docs/techniques#streaming">self-delimiting</a> + on their own. This means that you can't write more than one protocol buffer object to an output stream + unless you include some kind of delimiter between the messages. + So dlib takes care of this for you by prefixing each message with its length in bytes. In particular, + the number of bytes is encoded as a 32bit little endian integer. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>serialize</name> + <file>dlib/serialize.h</file> + <spec_file>dlib/serialize.h</spec_file> + <description> + This is actually a set of overloaded functions which provide the ability to save an object's state + to an output stream. Currently all dlib container classes, non pointer C++ intrinsics, std::string, + std::vector, std::map, std::set, std::complex, dlib::bigint, dlib::uint64, dlib::int64, C style arrays, and dlib::vector objects are serializable. + <p> + You can also use serialize() and deserialize() to read/write Google protocol buffer objects. However, + note that dlib::serialize() writes additional delimiting bytes at the start of each protocol buffer message. + We do this because Google protocol buffers are not + <a href="https://developers.google.com/protocol-buffers/docs/techniques#streaming">self-delimiting</a> + on their own. This means that you can't write more than one protocol buffer object to an output stream + unless you include some kind of delimiter between the messages. + So dlib takes care of this for you by prefixing each message with its length in bytes. In particular, + the number of bytes is encoded as a 32bit little endian integer. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>ramdump</name> + <file>dlib/serialize.h</file> + <spec_file link="true">dlib/serialize.h</spec_file> + <description> + This is a type decoration used to indicate that serialization should be + done by simply dumping the memory of some object to disk as fast as + possible without any sort of conversions. This means that the data written + will be "non-portable" in the sense that the format output by a RAM dump + may depend on things like the endianness of your CPU or settings of certain + compiler switches. + + <p> + You use this object like this: + <code_box> +serialize("yourfile.dat") << ramdump(yourobject); +deserialize("yourfile.dat") >> ramdump(yourobject); </code_box> + or + <code_box> +serialize(ramdump(yourobject), out); +deserialize(ramdump(yourobject), in); </code_box> + + Also, not all objects have a ramdump mode. If you try to use ramdump on an + object that does not define a serialization dump for ramdump you will get a + compiler error. + </p> + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>check_serialized_version</name> + <file>dlib/serialize.h</file> + <spec_file link="true">dlib/serialize.h</spec_file> + <description> + This function deserializes a string and checks if it matches a user supplied + string (the version). If they don't match then dlib::serialization_error is + thrown. The point of this function is to make checking version strings in + serialized files a little more convenient. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>dlib_testing_suite</name> + <description> + <p> + This library comes with a command line driven regression test suite. All the testing code + is located in the <chm>dlib/test</chm><web><a href="dlib/test">dlib/test</a></web> folder. If you want to build it and test the library on your + system you can use the makefile at <a href="dlib/test/makefile">dlib/test/makefile</a> (you may + have to edit it to make it work on your system) or use the CMake CMakeLists.txt file at + <a href="dlib/test/CMakeLists.txt.html">dlib/test/CMakeLists.txt</a> to build it. + </p> + <p> + What you may find more useful however is the testing framework itself. It uses a fairly simple + and modular design. Each test is contained in its own cpp file and when compiled into the + program it automatically shows up in the list of tests to run. If you want to use the + testing framework all you need to do is add the files <a href="dlib/test/tester.h.html">dlib/test/tester.h</a>, + <a href="dlib/test/tester.cpp.html">dlib/test/tester.cpp</a>, and <a href="dlib/test/main.cpp.html">dlib/test/main.cpp</a> + to your project and then add cpp files that contain your tests (see + <a href="dlib/test/example.cpp.html">dlib/test/example.cpp</a> and + <a href="dlib/test/example_args.cpp.html">dlib/test/example_args.cpp</a> + for some examples). + </p> + <p> + From the command line you can choose to run all the installed tests, enable or disable the loggers, + set various logging levels, specify how many times to run the tests, or pick just one or two tests + to run at a time rather than the entire suite. + The output of the program, that is, its return value from main() is the number of + failed tests. So if every test succeeds then it returns 0. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>MATLAB</name> + <description> + dlib contains a tool that makes it easy to call C++ code from MATLAB. It's + documented in the examples in the dlib/matlab folder. In particular, the + <a href="dlib/matlab/example_mex_function.cpp.html">dlib/matlab/example_mex_function.cpp</a>, + <a href="dlib/matlab/example_mex_callback.cpp.html">dlib/matlab/example_mex_callback.cpp</a>, and + <a href="dlib/matlab/example_mex_struct.cpp.html">dlib/matlab/example_mex_struct.cpp</a> + examples. + You can also easily compile these files using CMake. See the instructions in the README file + in the dlib/matlab folder for further details. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>Java</name> + <description> + dlib contains some CMake scripts and related tools that make calling C++ code + from Java easy. If you look in the <a href="https://github.com/davisking/dlib/tree/master/dlib/java">dlib/java</a> folder you can find a CMake + project that uses SWIG to build some C++ code and then call it from Java. In + particular, if you run the run_test.sh script it will build and run the code, + calling it from java. + + <p> + The dlib/java folder also contains some SWIG aware C++ classes that make + interacting with java arrays (e.g. double[]) from C++ efficient and easy. + See the documentation at the top of the <a href="dlib/java/java_array.h.html">java_array.h</a> file for details. + </p> + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>TIME_THIS</name> + <file>dlib/time_this.h</file> + <spec_file>dlib/time_this.h</spec_file> + <description> + <p> + This is a macro function for timing blocks of code. Its form is <tt>TIME_THIS(whatever you want to time)</tt> + It's pretty straight forward. It just prints the time it took to std::cout. + </p> + <p> + There is another version of this function called TIME_THIS_TO which takes as a parameter an ostream + object to write its output to. Its form is <tt>TIME_THIS_TO(what you want to time, the output stream)</tt>; + </p> + + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>timing code blocks</name> + <file>dlib/timing.h</file> + <spec_file>dlib/timing.h</spec_file> + <description> + This is a set of set of functions for timing blocks of code. Unlike + <a href="#TIME_THIS">TIME_THIS</a>, it can be used to find the cumulative + time spent on a block which is executed multiple times. + </description> + + </component> + + + <!-- ************************************************************************* --> + + + </components> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/parsing.xml b/ml/dlib/docs/docs/parsing.xml new file mode 100644 index 00000000..b993acaa --- /dev/null +++ b/ml/dlib/docs/docs/parsing.xml @@ -0,0 +1,652 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Parsing</title> + + <!-- ************************************************************************* --> + + <body> + + <p> + This page documents the objects and functions that in some way deal with parsing or otherwise + manipulating text. + Everything here follows the same conventions as the rest of the library. + </p> + + + + </body> + + <!-- ************************************************************************* --> + + <menu width="150"> + <top> + <section> + <name>Objects</name> + <item>cmd_line_parser</item> + <item>config_reader</item> + <item>cpp_pretty_printer</item> + <item>cpp_tokenizer</item> + <item>tokenizer</item> + <item>xml_parser</item> + <item>base64</item> + <item>unichar</item> + <item>ustring</item> + <item>basic_utf8_ifstream</item> + + </section> + + <section> + <name>Global Functions</name> + <item>string_cast</item> + <item>string_assign</item> + <item>cast_to_string</item> + <item>pad_int_with_zeros</item> + <item>cast_to_wstring</item> + <item>wrap_string</item> + <item>narrow</item> + <item>trim</item> + <item>ltrim</item> + <item>rtrim</item> + <item>pad</item> + <item>lpad</item> + <item>rpad</item> + <item>split_on_first</item> + <item>split_on_last</item> + <item>left_substr</item> + <item>right_substr</item> + <item>split</item> + <item>tolower</item> + <item>toupper</item> + <item>convert_utf8_to_utf32</item> + <item>is_combining_char</item> + <item>strings_equal_ignore_case</item> + </section> + </top> + </menu> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <components> + + + + <!-- ************************************************************************* --> + + <component> + <name>toupper</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to convert a string to all uppercase. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>tolower</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to convert a string to all lowercase. + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>split_on_first</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + Breaks a string into two parts. The split point is selected based + on the first occurrence of a delimiter character. + </description> + + </component> + + <!-- ************************************************************************* --> + <component> + <name>split_on_last</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + Breaks a string into two parts. The split point is selected based + on the last occurrence of a delimiter character. + </description> + + </component> + + <!-- ************************************************************************* --> + <component> + <name>split</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + Breaks a string into a sequence of substrings delimited + by a user specified set of characters. + </description> + + </component> + + <!-- ************************************************************************* --> + <component> + <name>right_substr</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to return the part of a string to the right of a user supplied delimiter. + </description> + + </component> + + <!-- ************************************************************************* --> + <component> + <name>left_substr</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to return the part of a string to the left of a user supplied delimiter. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rpad</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to pad whitespace (or user specified characters) onto the right most end of a string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>lpad</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to pad whitespace (or user specified characters) onto the left most end of a string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pad</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to pad whitespace (or user specified characters) onto the ends of a string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>rtrim</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to remove the whitespace (or user specified characters) from the right most end of a string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>ltrim</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to remove the whitespace (or user specified characters) from the left most end of a string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>trim</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function to remove the whitespace (or user specified characters) from the ends of a string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>narrow</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a function for converting a string of type std::string or std::wstring + to a plain std::string. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>wrap_string</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + wrap_string is a function that takes a string and breaks it into a number of + lines of a given length. You can use this to make a string + fit nicely into a command prompt window for example. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>strings_equal_ignore_case</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + This is a pair of functions to do a case insensitive comparison between strings. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cast_to_wstring</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + cast_to_string is a templated function which makes it easy to convert arbitrary objects to + std::wstring strings. The types supported are any types that can be written to std::wostream via + operator<<. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cast_to_string</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + cast_to_string is a templated function which makes it easy to convert arbitrary objects to + std::string strings. The types supported are any types that can be written to std::ostream via + operator<<. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>pad_int_with_zeros</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + Converts an integer into a string and pads it with leading zeros. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>string_cast</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + string_cast is a templated function which makes it easy to convert strings to + other types. The types supported are any types that can be read by the basic_istream operator>>. It + also supports casting between wstring, string, and ustring objects. + </description> + </component> + + <!-- ************************************************************************* --> + + <component> + <name>string_assign</name> + <file>dlib/string.h</file> + <spec_file link="true">dlib/string/string_abstract.h</spec_file> + <description> + string_assign is an object which makes it easy to convert strings to + other types. The types supported are any types that can be read by the basic_istream operator>>. It + also supports casting between wstring, string, and ustring objects. Since + string_assign is a simple stateless object there is a global instance of it + called dlib::sa. + </description> + <examples> + <example>config_reader_ex.cpp.html</example> + </examples> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>unichar</name> + <file>dlib/unicode.h</file> + <spec_file link="true">dlib/unicode/unicode_abstract.h</spec_file> + <description> + This is a typedef for an unsigned 32bit integer which we use to store + Unicode values. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>basic_utf8_ifstream</name> + <file>dlib/unicode.h</file> + <spec_file link="true">dlib/unicode/unicode_abstract.h</spec_file> + <description> + This object represents an input file stream much like the + normal std::ifstream except that it knows how to read UTF-8 + data. So when you read characters out of this stream it will + automatically convert them from the UTF-8 multibyte encoding + into a fixed width wide character encoding. + + <p> + There are also two typedefs of this object. The first is utf8_wifstream which is a + typedef for wchar_t as the wide character to read into. The second is utf8_uifstream + which uses unichar instead of wchar_t. + </p> + </description> + + </component> + + + <!-- ************************************************************************* --> + + <component> + <name>ustring</name> + <file>dlib/unicode.h</file> + <spec_file link="true">dlib/unicode/unicode_abstract.h</spec_file> + <description> + This is a typedef for a std::basic_string<unichar>. That is, it is a typedef + for a string object that stores unichar Unicode characters. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>is_combining_char</name> + <file>dlib/unicode.h</file> + <spec_file link="true">dlib/unicode/unicode_abstract.h</spec_file> + <description> + This is a global function that can tell you if a character is a Unicode + combining character or not. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>convert_utf8_to_utf32</name> + <file>dlib/unicode.h</file> + <spec_file link="true">dlib/unicode/unicode_abstract.h</spec_file> + <description> + This is a global function that can convert UTF-8 strings into strings + of 32bit unichar characters. + </description> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>base64</name> + <file>dlib/base64.h</file> + <spec_file>dlib/base64/base64_kernel_abstract.h</spec_file> + <description> + This object allows you to encode and decode data to and from + the Base64 Content-Transfer-Encoding defined in section 6.8 of + rfc2045. + </description> + + <examples> + <example>file_to_code_ex.cpp.html</example> + </examples> + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>cmd_line_parser</name> + <file>dlib/cmd_line_parser.h</file> + <spec_file>dlib/cmd_line_parser/cmd_line_parser_kernel_abstract.h</spec_file> + <description> + This object allows you to easily parse a command line. Note that the + documentation for the <a href="dlib/interfaces/cmd_line_parser_option.h.html">cmd_line_parser_option</a> + (the object returned by the parser's .option() function) is in a separate file. + <p> + Note also that there are standard typedefs for the ASCII and wide character versions of the + cmd_line_parser template. These are the <tt>command_line_parser</tt> and <tt>wcommand_line_parser</tt> + types respectively. + </p> + </description> + + <examples> + <example>compress_stream_ex.cpp.html</example> + <example>train_object_detector.cpp.html</example> + </examples> + + <extensions> + <extension> + <name>get_option</name> + <spec_file>dlib/cmd_line_parser/get_option_abstract.h</spec_file> + <description>This extension provides a convenience function for accessing the + options to a command line argument or a <a href="#config_reader">config_reader</a>. It + is automatically #included when using the command line parser or config reader. + </description> + </extension> + </extensions> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>config_reader</name> + <file>dlib/config_reader.h</file> + <spec_file>dlib/config_reader/config_reader_kernel_abstract.h</spec_file> + <description> + This object represents something which is intended to be used to read + text configuration files. + </description> + + <examples> + <example>config_reader_ex.cpp.html</example> + </examples> + + <extensions> + <extension> + <name>config_reader_thread_safe</name> + <spec_file>dlib/config_reader/config_reader_thread_safe_abstract.h</spec_file> + <description> + This object extends a normal config_reader by simply wrapping all + its member functions inside mutex locks to make it safe to use + in a threaded program. + </description> + </extension> + </extensions> + + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>cpp_pretty_printer</name> + <file>dlib/cpp_pretty_printer.h</file> + <spec_file>dlib/cpp_pretty_printer/cpp_pretty_printer_kernel_abstract.h</spec_file> + <description> + This object represents an HTML pretty printer for C++ source code. + </description> + + <implementations> + <implementation> + <name>cpp_pretty_printer_kernel_1</name> + <file>dlib/cpp_pretty_printer/cpp_pretty_printer_kernel_1.h</file> + <description> + This is implemented by using the <a href="#cpp_tokenizer">cpp_tokenizer</a> object. + This is the pretty printer I use on all the source in this library. It applies a color scheme, turns + include directives such as #include "file.h" into links to file.h.html and puts HTML anchor points + on function and class declarations. It also looks for comments starting with /*!A and puts an anchor + before the comment using the word following the A as the name of the anchor. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for cpp_pretty_printer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + <implementation> + <name>cpp_pretty_printer_kernel_2</name> + <file>dlib/cpp_pretty_printer/cpp_pretty_printer_kernel_2.h</file> + <description> + This is implemented by using the <a href="#cpp_tokenizer">cpp_tokenizer</a> object. + It applies a black and white color scheme suitable + for printing on a black and white printer. It also places the document title + prominently at the top of the pretty printed source file. + </description> + + <typedefs> + <typedef> + <name>kernel_2a</name> + <description>is a typedef for cpp_pretty_printer_kernel_2</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>cpp_tokenizer</name> + <file>dlib/cpp_tokenizer.h</file> + <spec_file>dlib/cpp_tokenizer/cpp_tokenizer_kernel_abstract.h</spec_file> + <description> + This object represents a simple tokenizer for C++ source code. + </description> + + <implementations> + <implementation> + <name>cpp_tokenizer_kernel_1</name> + <file>dlib/cpp_tokenizer/cpp_tokenizer_kernel_1.h</file> + <description> + This is implemented by using the <a href="#tokenizer">tokenizer</a> object in the obvious way. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for cpp_tokenizer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component checked="true"> + <name>tokenizer</name> + <file>dlib/tokenizer.h</file> + <spec_file>dlib/tokenizer/tokenizer_kernel_abstract.h</spec_file> + <description> + This object represents a simple tokenizer for textual data. + </description> + + <implementations> + <implementation> + <name>tokenizer_kernel_1</name> + <file>dlib/tokenizer/tokenizer_kernel_1.h</file> + <description> + This is implemented in the obvious way. + </description> + + <typedefs> + <typedef> + <name>kernel_1a</name> + <description>is a typedef for tokenizer_kernel_1</description> + </typedef> + </typedefs> + + </implementation> + + </implementations> + + </component> + + <!-- ************************************************************************* --> + + <component> + <name>xml_parser</name> + <file>dlib/xml_parser.h</file> + <spec_file>dlib/xml_parser/xml_parser_kernel_abstract.h</spec_file> + <description> + + This object represents a simple SAX style event driven XML parser. + It takes its input from an input stream object and sends events to all + registered document_handler and error_handler objects. + <br/><br/> + + The xml_parser object also uses the interface classes + <a href="dlib/xml_parser/xml_parser_kernel_interfaces.h.html#document_handler">document_handler</a> + and + <a href="dlib/xml_parser/xml_parser_kernel_interfaces.h.html#error_handler">error_handler</a>. + Subclasses of these classes are passed to the xml_parser which generates events while it's + parsing and sends them to the appropriate handler. + + </description> + + <examples> + <example>xml_parser_ex.cpp.html</example> + </examples> + </component> + + + <!-- ************************************************************************* --> + + </components> + + <!-- ************************************************************************* --> + + +</doc> diff --git a/ml/dlib/docs/docs/plus.gif b/ml/dlib/docs/docs/plus.gif Binary files differnew file mode 100644 index 00000000..2d15c141 --- /dev/null +++ b/ml/dlib/docs/docs/plus.gif diff --git a/ml/dlib/docs/docs/python/conf.py b/ml/dlib/docs/docs/python/conf.py new file mode 100644 index 00000000..c8a2a963 --- /dev/null +++ b/ml/dlib/docs/docs/python/conf.py @@ -0,0 +1,246 @@ +# -*- coding: utf-8 -*- +# +# dlib documentation build configuration file, created by +# sphinx-quickstart on Wed Jun 12 18:29:29 2013. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('../../../build/lib.linux-x86_64-2.7')) + +import generate_dlib_listing +generate_dlib_listing.make_listing_files() + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'dlib' +copyright = u'2013, Davis E. King' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +#version = '18.3' +# The full version, including alpha/beta/rc tags. +#release = '18.3' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# "<project> v<release> documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a <link> tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'dlibdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'dlib.tex', u'dlib Documentation', + u'Davis', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'dlib', u'dlib Documentation', + [u'Davis'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------------ + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'dlib', u'dlib Documentation', + u'Davis', 'dlib', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' diff --git a/ml/dlib/docs/docs/python/generate_dlib_listing.py b/ml/dlib/docs/docs/python/generate_dlib_listing.py new file mode 100644 index 00000000..2aaff245 --- /dev/null +++ b/ml/dlib/docs/docs/python/generate_dlib_listing.py @@ -0,0 +1,32 @@ +from __future__ import print_function +import dlib +import inspect + +def print_element(name, fc, ff): + isclass = inspect.isclass(eval(name)) + ismodule = inspect.ismodule(eval(name)) + if (isclass): + print("* :class:`{0}`".format(name), file=fc) + elif (not ismodule): + print("* :func:`{0}`".format(name), file=ff) + +def make_listing_files(): + + fc = open('classes.txt', 'w') + ff = open('functions.txt', 'w') + + for obj in dir(dlib): + if obj[0] == '_': + continue + print_element('dlib.'+obj, fc, ff) + + for obj in dir(dlib.cuda): + if obj[0] == '_': + continue + print_element('dlib.cuda.'+obj, fc, ff) + + for obj in dir(dlib.image_dataset_metadata): + if obj[0] == '_': + continue + print_element('dlib.image_dataset_metadata.'+obj, fc, ff) + diff --git a/ml/dlib/docs/docs/python/index.rst b/ml/dlib/docs/docs/python/index.rst new file mode 100644 index 00000000..6ad2d3d5 --- /dev/null +++ b/ml/dlib/docs/docs/python/index.rst @@ -0,0 +1,45 @@ + +.. image:: ../dlib-logo.png + :alt: Dlib C++ Library + :target: http://dlib.net + +Dlib is principally a C++ library, however, you can use a number of its tools +from python applications. This page documents the python API for working with +these dlib tools. If you haven't done so already, you should probably look at +the python example programs first before consulting this reference. These +example programs are little mini-tutorials for using dlib from python. They +are listed on the left of the main dlib web page. + +Classes +============================================== + +.. include:: classes.txt + +Functions +============================================== + +.. include:: functions.txt + + +Detailed API Listing +============================================== + +.. toctree:: + :maxdepth: 2 + +.. automodule:: dlib + :members: + :undoc-members: + +.. automodule:: dlib.cuda + :members: + :undoc-members: + +.. automodule:: dlib.image_dataset_metadata + :members: + :undoc-members: + + + + + diff --git a/ml/dlib/docs/docs/rbf_big_gamma.gif b/ml/dlib/docs/docs/rbf_big_gamma.gif Binary files differnew file mode 100644 index 00000000..7885d655 --- /dev/null +++ b/ml/dlib/docs/docs/rbf_big_gamma.gif diff --git a/ml/dlib/docs/docs/rbf_normal.gif b/ml/dlib/docs/docs/rbf_normal.gif Binary files differnew file mode 100644 index 00000000..810fd52a --- /dev/null +++ b/ml/dlib/docs/docs/rbf_normal.gif diff --git a/ml/dlib/docs/docs/rbf_small_gamma.gif b/ml/dlib/docs/docs/rbf_small_gamma.gif Binary files differnew file mode 100644 index 00000000..24baaff6 --- /dev/null +++ b/ml/dlib/docs/docs/rbf_small_gamma.gif diff --git a/ml/dlib/docs/docs/release_notes.xml b/ml/dlib/docs/docs/release_notes.xml new file mode 100644 index 00000000..2bb03580 --- /dev/null +++ b/ml/dlib/docs/docs/release_notes.xml @@ -0,0 +1,4437 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Release notes</title> + <body> + + +<release_notes> + +<!-- ************************************************************************************** --> + +<current> +New Features and Improvements: + - Deep Learning: + - Added scale_ layer, allowing implementation of squeeze-and-excitation networks. + - Added loss_multimulticlass_log: used for learning a collection of multi-class classifiers. + - Added a random forest regression tool. See random_forest_regression_trainer. + - Added make_bounding_box_regression_training_data() + - Added isotonic_regression + - Added momentum_filter, rect_filter, find_optimal_momentum_filter(), and + find_optimal_rect_filter(). + - Added binomial_random_vars_are_different() and event_correlation(). + - Added xcorr_fft(), a routine for efficiently performing large cross-correlations using the FFT. + - Added the ramdump type decorator for invoking faster serialization routines. + - Added check_serialized_version() + - Added max_scoring_element() and min_scoring_element() + - Made orthogonalize() faster. + - Updates to the Python API: + - Added interface to the global_function_search object. This is a more general + interface to the solver used by find_max_global(). + - Added support for variadic Python functions in find_max_global(). + - Added rect_filter and find_optimal_rect_filter(). + - Added make_bounding_box_regression_training_data() + - Added the image_dataset_metadata routines for parsing XML datasets. + - Added rvm_trainer + - Added probability_that_sequence_is_increasing() + - Added dlib.__time_compiled__ field + - Added num_threads to shape_predictor_training_options. + - Added CUDA controlling routines such as set_device() and + set_dnn_prefer_smallest_algorithms(). + +Non-Backwards Compatible Changes: + - Changed CMake so that there is only the dlib target and it isn't forced to + be static. Instead, the build type will toggle based on the state of CMake's + BUILD_SHARED_LIBS variable. So there is no longer a dlib_shared target. + - Changed the integer types used to represent sizes from 32bits to 64bits in numerous + places, such as in the tensor object. This should be a backwards compatible change + for nearly all client code. + +Bug fixes: + - Fixed memory leak in java swig array binding tool. + - Fixed windows include order problem in all/source.cpp file. + - Fixed cont_ layers not printing the correct num_filters parameter when they were + printed to std::cout or to XML. + - Fixed some code not handling OBJECT_PART_NOT_PRESENT values correctly. + - Fixed fft_inplace() not compiling for compile time sized matrices. + - The shape_predictor_trainer could have very bad runtime for some really + bad parameter settings. This has been fixed and also warning messages about + really bad training data or parameters have been added. + - Fixed the decayed running stats objects so they use unbiased estimators. + +</current> + +<!-- ************************************************************************************** --> + +<old name="19.9" date="Jan 22, 2018"> +New Features and Improvements: + - Switched the Python API from Boost.Python to pybind11. This means Python + users don't need to install Boost anymore, making building dlib's Python API + much easier. + - Made the sparse version of svd_fast() use multiple CPU cores. + - Changed the behavior of imglab's --flip option. It will now attempt to + adjust any object part labels so that the flipped dataset has the same + average part layout as the source dataset. There is also a new --flip-basic + option that behaves like the old --flip. However, most people flipping a + dataset with part annotations will want to use --flip. For more details + see: http://blog.dlib.net/2018/01/correctly-mirroring-datasets.html + +Non-Backwards Compatible Changes: + - Removed std::auto_ptr from dlib's old (and depreciated) smart pointers. + +Bug fixes: + - Fixed global_optimization.py not working in Python 3. + +</old> + +<!-- ************************************************************************************** --> + +<old name="19.8" date="Dec 19, 2017"> +New Features and Improvements: + - Added a global optimizer, find_max_global(), which is suitable for + optimizing expensive functions with many local optima. For example, you + can use it for hyperparameter optimization. See model_selection_ex.cpp + for an example. + - Updates to the deep learning tooling: + - Added semantic segmentation examples: dnn_semantic_segmentation_ex.cpp + and dnn_semantic_segmentation_train_ex.cpp + - New layers: loss_ranking, loss_epsilon_insensitive, softmax_all, and loss_dot. + - Made log loss layers more numerically stable. + - Upgraded the con layer so you can set the number of rows or columns to + 0 in the layer specification. Doing this means "make the filter cover + the whole input image dimension". This provides an easy way to make a + filter sized so it will have one output along that dimension, + effectively making it like a fully connected layer operating on a row + or column. + - Added support for non-scale-invariant MMOD. + - Added an optional parameter to dnn_trainer::get_net() that allows you + to call the function without forcing a state flush to disk. + - Sometimes the loss_mmod layer could experience excessively long runtime + during early training iterations. This has been optimized and is now + much faster. + - Optimized the tensor's management of GPU memory. It now uses less memory + in some cases. It will also not perform a reallocation if resized to a + smaller size. Instead, tensors now behave like std::vector in that + they just change their nominal size but keep the same memory, only + reallocating if they are resized to something larger than their + underlying memory block. This change makes some uses of dlib faster, in + particular, running networks on a large set of images of differing + sizes will now run faster since there won't be any GPU reallocations, + which are notoriously slow. + - Upgraded the input layer so you can give + input<std::array<matrix<T>,K>> types as input. Doing + this will create input tensors with K channels. + - Added disjoint_subsets_sized + - Added Python APIs: get_face_chips(), count_steps_without_decrease(), + count_steps_without_decrease_robust(), and jitter_image(). + - Various improvements to CMake scripts: e.g. improved warning and error + messages, added USE_NEON_INSTRUCTIONS option. + - chol() will use a banded Cholesky algorithm for banded matrices, making it + much faster in these cases. + - Changed the timing code to use the C++11 high resolution clock and + atomics. This makes the timing code a lot more precise. + +Non-Backwards Compatible Changes: + - Changed the random_cropper's set_min_object_size() routine to take min box + dimensions in the same format as the mmod_options object (i.e. two lengths + measured in pixels). This should make defining random_cropping strategies + that are consistent with MMOD settings more straightforward since you can + simply take the mmod_options settings and give them to the random_cropper + and it will do the right thing. + - Changed the mean squared loss layers to return a loss that's the MSE, not + 0.5*MSE. The only thing this effects is the logging messages that print + during training, which were confusing since the reported loss was half the + size you might naively expect. + - Changed the outputs of test_regression_function() and cross_validate_regression_trainer(). + These functions now output 4D rather than 2D vectors. The new output is: + mean squared error, correlation, mean absolute error, and standard + deviation of absolute error. I also made test_regression_function() take + a non-const reference to the regression function so that DNN objects can + be tested. + - Fixed shape_predictor_trainer padding so it behaves as it used to. In + dlib 19.7 the padding code was changed and accidentally doubled the size + of the applied padding in some cases. It's not a huge deal either way, but + this change reverts back to the previous behavior. + +Bug fixes: + - Fixed toMat() not compiling in some cases. + - Significantly reduced the compile time of the DNN example programs in + visual studio. + - Fixed a few image processing functions that weren't using the generic + image interface. + - Fixed a bug in the random_cropper where it might crash due to division by + 0 if small images were given as input. + - Fixed a bug in how the mmod_options automatically determines detection + window sizes. It would pick a bad size in some cases. + - Fixed load_image_dataset()'s skip_empty_images() option. It wasn't + skipping images that only have ignore boxes when you load into mmod_rect + objects. + - Fixed a bug where chinese_whispers(), when called from python, would + sometimes return a labels array that didn't include labels for all the + inputs. + - Fixed a bug in dlib's MS Windows GUI code that was introduced a little + while back when we switched everything to std::shared_ptr. This change + fixes a bug where the program crashes or hangs sometimes during program + shutdown. + - Fixed error in TIME_THIS() introduced in dlib 19.7. It was printing + seconds when it said minutes in the output. + - Adding missing implementation of tabbed_display::selected_tab. + - Changed the windows signaler and mutex code to use the C++11 thread + library instead of the old win32 functions. I did this to work around how + windows unloads dlls. In particular, during dll unload windows will kill + all threads, THEN it will destruct global objects. So this can lead to + problems when a global object that owns threads tries to tell them to + shutdown, since the threads have already vanished. The new code mitigates + some of these problems, in particular, there were some cases where + unloading dlib's python extension would deadlock. This should now be + fixed. + - Fixed compile time errors when either of these macros were enabled: + DLIB_STACK_TRACE, DLIB_ISO_CPP_ONLY. + +</old> + +<!-- ************************************************************************************** --> + +<old name="19.7" date="Sep 17, 2017"> +New Features and Improvements: + - Deep Learning: + - The CNN+MMOD detector is now a multi-class detector. In particular, + the mmod_rect object now has a string label field which you can use to + label objects, and the loss_mmod_ layer will learn to label objects with + those labels. For an example, see: https://www.youtube.com/watch?v=OHbJ7HhbG74 + - CNN+MMOD detectors are now 2.5x faster. For instance, this example program + http://dlib.net/dnn_mmod_find_cars_ex.cpp.html now runs at 98fps instead + of 39fps. + - Added a 5 point face landmarking model that is over 10x smaller than the + 68 point model, runs faster, and works with both HOG and CNN generated + face detections. It is now the recommended landmarking model to use for + face alignment. render_face_detections() and get_face_chip_details() have been + updated to work with both 5 and 68 point models, so the new 5 point model is + a drop in replacement for the 68 point model. + - The imglab tool is slightly improved. It will display box labels with + higher relative contrast. You can also now press END or i to ignore boxes + in imglab. This is useful because it's a much less stressing hand motion + to hit END that i in most cases. + - Added overloads of sub_image() that take raw pointers so you can make + sub_images of anything. + - Changed TIME_THIS() to use std::chrono::high_resolution_clock, so now it's + much higher precision. + - Exposed Chinese whispers clustering to Python, added face clustering example. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed an error in input_rgb_image_pyramid::image_contained_point(). The + function might erroneously indicate that a point wasn't inside the original + image when really it was, causing spurious error messages. + - mmod_options would pick bad window sizes in some corner cases. This has been fixed. + - Fixed a bug in the extract layer that trigged when a tensor with a + different number of samples than the tensor used to initialize the network + was passed through the layer. + - The loss_per_missed_target parameter of the loss_mmod_ wasn't being used + exactly right when boxes were auto-ignored. There weren't any practical + user facing problems due to this, but it has nevertheless been fixed. + +</old> + +<!-- ************************************************************************************** --> + +<old name="19.6" date="Aug 28, 2017"> +New Features and Improvements: + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fix build error in Visual Studio when CUDA is enabled. + +</old> + +<!-- ************************************************************************************** --> + +<old name="19.5" date="Aug 27, 2017"> +New Features and Improvements: + - Deep Learning + - Added a python wrapper for using the CNN face detector. + - Added support for cuDNN v6 and v7. + - Added a simple tool to convert dlib model files to caffe models. + See the tools/convert_dlib_nets_to_caffe folder for details. + - New DNN layers + - loss_multiclass_log_per_pixel_ + - loss_multiclass_log_per_pixel_weighted_ + - loss_mean_squared_per_pixel_ + - cont_ (transpose convolution, sometimes called "deconvolution") + - mult_prev_ (like add_prev_ but multiplies instead of adds) + - extract_ (sort of like caffe's slice layer) + - upsample_ (upsamples a tensor using bilinear interpolation) + - Object Detection + - Upgraded loss_mmod_ to support objects of varying aspect ratio. This + changes the API for the mmod_options struct slightly. + - Relaxed the default non-max suppression parameters used by the + mmod_options object so that users of the deep learning MMOD tool don't + get spurious errors about impossibly labeled objects during training. + - Added missing input validation to loss_mmod_. Specifically, the loss + layer now checks if the user is giving truth boxes that can't be detected + because the non-max suppression settings would prevent them from being + output at the same time. If this happens then we print a warning message + and set one of the offending boxes to "ignore". I also changed all + the input validation errors to warning messages with auto conversion + to ignore boxes rather than exceptions. + - Changed the random_cropper's interface so that instead of talking in + terms of min and max object height, it's now min and max object size. + This way, if you have objects that are short and wide (i.e. objects where + the relevant dimension is width rather than height) you will get sensible + behavior out of the random cropper. + - Added options to input_rgb_image_pyramid that let the user set + create_tiled_pyramid()'s padding parameters. Also changed the default + outer border padding from 0 to 11. This effects even previously trained + models. So any model that doesn't explicitly set the outer patting to + something else will have a padding of 11. This should be a more + reasonable value for most networks. + - Added process() and process_batch() to add_loss_layer. These routines + let you easily pass arguments to any optional parameters of a loss + layer's to_tensor() routine. For instance, it makes it more convenient to + set loss_mmod_'s adjust_threshold parameter. + - Added visit_layers_until_tag() + - Improved how dnn_trainer synchronizes its state to disk. It now uses + two files and alternates between them. This should be more robust in + the face of random hardware failure during synchronization than the + previous synchronization method. + - Made it so you can set the number of output filters for con_ layers at runtime. + - The way cuDNN work buffers are managed has been improved, leading to + less GPU RAM usage. Therefore, users should not need to call + set_dnn_prefer_smallest_algorithms() anymore. + - Added operator<< for random_cropper and dnn_trainer to allow + easy logging of training parameters. + - Made concat_ layer a lot faster. + - Made the dnn_trainer not forget all the previous loss values it knows + about when it determines that there have been a lot of steps without + progress and shrinks the learning rate. Instead, it removes only a + small amount of the oldest values. The problem with the old way of + removing all the loss values in the history was that if you set the + steps without progress threshold to a really high number you would + often observe that the last few learning rate values were obviously not + making progress, however, since all the previous loss values were + forgotten the trainer needed to fully populate its loss history from + scratch before it would figure this out. This new style makes the + trainer not waste time running this excessive optimization of obviously + useless mini-batches. I also changed the default + get_test_iterations_without_progress_threshold() from 200 to 500. Now + that we have a better history management of loss values in the trainer + it's much more sensible to have a larger value here. + - Dlib's simd classes will now use ARM NEON instructions. This makes the + HOG based object detector faster on mobile devices running ARM processors. + - Added last_modified() method to dlib::file. Also, added + select_oldest_file() and select_newest_file(). + - Added solve_qp_box_constrained_blockdiag() + - Added an overload of mat() that takes a row stride value. + - Added cmake scripts and some related tooling that makes it easy to call + C++ code from java. See dlib/java/ folder. + - MATLAB MEX wrapper API + - Made the mex wrapper deal with cell arrays that have null elements. + - Made ctrl+c detection in a mex file work more reliably in newer versions of matlab. + - Added set_rect_area() + - Gave test_object_detection_function() an option to set how ignore box + overlap is tested. + - Added serialization support for the running_stats_decayed object. + - Additions to imglab + - Added --sort and also the ability to propagate boxes from one image to + the next using dlib::correlation_tracker. + - Made it so you can remove images by pressing alt+d. + - Made is so pressing e in imglab toggles between views of the image + where the histogram is equalized or unmodified. This way, if you are + looking at particularly dark or badly contrasted images you can toggle + this mode and maybe get a better view of what you are labeling. + - Made the attribute_list of the xml parser a little more friendly by + allowing you to ask for attributes that don't exist and get a defined + behavior (an exception being thrown) rather than it being a contract + violation. + +Non-Backwards Compatible Changes: + - DNN solver objects are now required to declare operator<<. + - Broke backwards compatibility with previous dnn_trainer serialization + format. The network serialization format has not changed however. So old + model files will still load properly. + - Changed random_cropper interface. + - Changed the XML format output by net_to_xml(). Specifically, the XML tag + for affine layers was changed to use the same conventions as other layers + that support convolutional vs fully connected modes. + - Dlib's smart pointers have been deprecated and all of dlib's code has been + changed to use the std:: version of these smart pointers. The old dlib + smart pointers are still present, allowing users to explicitly include + them if needed, but users should migrate to the C++11 standard version of + these tools. + - Changed the functions that transform between input tensor coordinates and + output tensor coordinates to use dpoint instead of point. This way, we can + obtain sub-pixel coordinates if we need them. + - Upgraded loss_mmod_ to support objects of varying aspect ratio. This + changes the API for the mmod_options struct slightly. + +Bug fixes: + - Made resize_image() and functions that use it like the pyramid objects + produce better results when run on float and double images. There was + needless rounding to integers happening in the bilinear interpolation. Now + if you work with a float image the entire process will run without integer + rounding. + - Made the input_tensor_to_output_tensor() and output_tensor_to_input_tensor() + coordinate mappings work on networks that contain skip layers. + - The input_rgb_image_sized is supposed to be convertible to + input_rgb_image, which it was in all ways except you couldn't deserialize + directly like you would expect. This has now been fixed. + - There was a bug in the concat_ layer's backward() method. It was assigning + the gradient to previous layers instead of adding the gradient, as required + by the layer interface specification. Probably no-one has been impacted + by this bug, but it's still a bug and has been fixed. + - Changed the random_cropper so that it samples background patches uniformly + across scales regardless of the input image size. Previously, if you gave + really large images or really small images it had a bias towards giving only + large patches or small patches respectively. + - Fixed name lookup problem for calls to serialize() on network objects. + - Fixed double delete in tokenizer_kernel_1. + - Fixed error in pyramid_down<2> that caused the output image to be a + little funny looking in some cases. + - Fixed the visit_layers_backwards() and visit_layers_backwards_range() + routines so they visit layers in the correct order. + - Made build scripts work on a wider range of platforms and configurations. + - Worked around global timer cleanup issues that occur on windows when dlib + is used in a dll in some situations. + - Fixed various compiler errors in obscure environments. + +</old> + +<!-- ************************************************************************************** --> + +<old name="19.4" date="Mar 07, 2017"> +New Features: + +Non-Backwards Compatible Changes: + - CMake 2.8.12 is now required to build dlib (but only if you use CMake). + +Bug fixes: + - Fixed a slow memory leak that could occur when using cuDNN. + +Other: +</old> + +<!-- ************************************************************************************** --> + +<old name="19.3" date="Feb 21, 2017"> +New Features: + - Deep Learning + - Added a state-of-the-art face recognition tool (99.38% accuracy on the + LFW benchmark) with C++ and Python example programs. + - Added these new loss layer types: loss_metric_, loss_mean_squared_, and + loss_mean_squared_multioutput_. + - Added the l2normalize_ computational layer. + - Added test_one_step() to the dnn_trainer. This allows you to do + automatic early stopping based on observing the loss on held out data. + - Made the dnn_trainer automatically reload from the last good state if a + loss of NaN is encountered. + - Made alias_tensor usable when it is const. + - Dlib's simd classes will now use PowerPC VSX instructions. This makes the + HOG based object detector faster on PowerPC machines. + - Added compute_roc_curve() + - Added find_gap_between_convex_hulls() + - Added serialization support for std::array. + - Added running_scalar_covariance_decayed object + - Added running_stats_decayed object + - Added min_pointwise() and max_pointwise(). + - Added a 1D clustering routine: segment_number_line(). + - Added Intel MKL FFT bindings. + - Added matlab_object to the mex wrapper. Now you can have parameters that + are arbitrary matlab objects. + - Added support for loading of RGBA JPEG images + +Non-Backwards Compatible Changes: + - Changed the loss layer interface to use two typedefs, output_label_type + and training_label_type instead of a single label_type. This way, the label + type used for training can be distinct from the type output by the network. + This change breaks backwards compatibility with the previous API. + +Bug fixes: + - Fixed compiler warnings and errors on newer compilers. + - Fixed a bug in the repeat layer that caused it to throw exceptions in some + cases. + - Fixed matlab crashing if an error message from a mex file used the % + character, since that is interpreted by matlab as part of an eventual + printf() code. + - Fixed compile time error in random_subset_selector::swap() + - Fixed missing implementation of map_input_to_output() and + map_output_to_input() in the concat_ layer. + - Made the dnn_trainer's detection and backtracking from situations with + increasing loss more robust. Now it will never get into a situation where it + backtracks over and over. Instead, it will only backtrack a few times in a + row before just letting SGD run unimpeded. + +Other: + - Usability improvements to DNN API. + - Improved C++11 detection, especially on OS X. + - Made dlib::thread_pool use std::thread and join on the threads in + thread_pool's destructor. The previous implementation used dlib's global + thread pooling to allocate threads to dlib::thread_pool, however, this + sometimes caused annoying behavior when used as part of a MATLAB mex file, + very occasionally leading to matlab crashes when mex files were unloaded. + This also means that dlib::thread_pool construction is a little bit slower + than it used to be. +</old> + +<!-- ************************************************************************************** --> + +<old name="19.2" date="Oct 10, 2016"> +New Features: + - Updates to the deep learning API: + - Added tools for making convolutional neural network based object detectors. See + dnn_mmod_ex.cpp example program. + - Added annotation() to tensor so you can associate any object you want with a tensor. + - Made layer_details() part of the SUBNET interface so that user defined layer + details objects can access each other. Also added the input_layer() global function + for accessing the input layer specifically. + - alias_tensor can now create aliases of const tensors. + - Added set_all_bn_running_stats_window_sizes(). + - Added visit_layers_backwards(), visit_layers_backwards_range(), and + visit_layers_range(). + - Computational layers can now optionally define map_input_to_output() and + map_output_to_input() member functions. If all layers of a network provide these + functions then the new global functions input_tensor_to_output_tensor() and + output_tensor_to_input_tensor() can be used to map between the network's input and + output tensor coordinates. This is important for fully convolutional object + detectors since they need to map between the image space and final feature space. + These new functions are important for tools like the new MMOD detector. + - Added input_rgb_image_pyramid. + - Image Processing + - The imglab command line tool has these new options: --min-object-size, --rmempty, + --rmlabel, --rm-if-overlaps, and --sort-num-objects. I also changed the behavior of + --split so that it simply partitions the data and is an invertible operation. + - Added mmod_rect + - Added an overload of load_image_dataset() that outputs directly to mmod_rect + instead of rectangle. + - Added image_dataset_file::shrink_big_images(). So now load_image_dataset() can load + a dataset of high resolution files at a user requested lower resolution. + - Added box_intersection_over_union(). + - Added create_tiled_pyramid(), image_to_tiled_pyramid(), and tiled_pyramid_to_image(). + - Added random_cropper + - Upgraded dlib's mex wrapper tooling to enable easy binding of C++ classes to MATLAB + objects. + - Added nearest_rect() + - Added find_upper_quantile() + - Added count_steps_without_decrease_robust(). + - Added get_double_in_range() to dlib::rand. + +Non-Backwards Compatible Changes: + - C++11 is now required to use dlib. + - Changed pinv() so it interprets its tol argument relative to the largest singular + value of the input matrix rather than as an absolute tolerance. This should generally + improve results, but could change the output in some cases. + - Renamed the class members of test_box_overlap so they are less confusing. + - Updates to the deep learning API: + - Changed the DNN API so that sample_expansion_factor is a runtime variable rather + than a compile time constant. This also removes it from the input layer interface + since the DNN core now infers its value at runtime. Therefore, users that define their + own input layers don't need to specify it anymore. + - Changed DEFAULT_BATCH_NORM_EPS from 1e-5 to 1e-4. + - Changed the default batch normalization running stats window from 1000 to 100. + +Bug fixes: + - Made the relational operators constexpr so they don't accidentally cause compilation + errors when they get pulled into the scope of template metaprogramming expressions. + - Fixed all/source.cpp not compiling in some instances. + - CMake scripts now do a better job detecting things like C++11 support, the presence of + CUDA, and other system specific details that could cause the build to fail if not + properly configured. + - Fixed a bug in imglab's --cluster option where it would output xml files with empty + entries if the input xml file contained unannotated images. + - Fixed imglab's --cluster option not working with relative paths. + +Other: + - Made the thread local variables that hold the cudnn and cublas context objects not + destruct and recreate themselves when you switch devices. Instead, they keep a table + of context objects, for each thread and device, reusing as necessary. This prevents + churn in the context objects when you are switching back and forth between devices + inside a single thread, making things run more efficiently for some CUDA based + workflows. + - Made the message argument of the DLIB_ASSERT and DLIB_CASSERT macros optional. + - Made thread_pool and parallel_for propagate exceptions from task threads to calling + code rather than killing the application if a task thread throws. + - Changed imglab --resample so that it never changes the aspect ratio of an image. + - Made the check in dnn_trainer for convergence more robust. Previously, if we + encountered a bad mini-batch that made the loss value suddenly jump up by a larger than + normal value it could make the trainer think we converged. Now the test is robust to + transient spikes in loss value. Additionally, the dnn_trainer will now check if the + loss has been increasing before it saves the state to disk. If it detects that the loss + has been going up then instead of saving to disk it recalls the previously good state. + This way, if we hit a really bad mini-batch during training which negatively effects + the model in a significant way, the dnn_trainer will automatically revert back to an + earlier good state. +</old> + +<!-- ************************************************************************************** --> + +<old name="19.1" date="Aug 13, 2016"> +New Features: + - Support for cuDNN 5.1 + - dlib::async() and dlib::default_thread_pool(). + - rectangle_transform + - imglab tool: added --resample, --ignore, --files, and --extract-chips + command line options. Also added convert_imglab_paths_to_relative and + copy_imglab_dataset scripts. + - Evgeniy Fominov made the shape_predictor trainer multi-threaded and faster. + - sutr90 contributed support for the CIELab color space. See the new lab_pixel. + +Non-Backwards Compatible Changes: + - All the cmake utility scripts were moved to dlib/cmake_utils. + - Code that #includes the shape_predictor can now only be compiled with + compilers that support C++11 lambda functions. + +Bug fixes: + - Made CMake scripts work in a wider range of environments. + - Fixed compile time errors on various platforms. + - Fixed bad multi-threading support in the MATLAB mex wrapper. + - Fixed bug in cuDNN binding that could sometimes cause NaN outputs. + - Fixed bad convergence testing in DNN tooling for very small datasets. + +Other: +</old> + +<!-- ************************************************************************************** --> + +<old name="19.0" date="Jun 25, 2016"> +New Features: + - A deep learning toolkit using CPU and/or GPU hardware. Some major elements + of this are: + - Clean and fully documented C++11 API + - Clean tutorials: see dnn_introduction_ex.cpp and dnn_introduction2_ex.cpp + - Uses cuDNN v5.0 + - Multi-GPU support + - Automatic learning rate adjustment + - A pretrained 1000 class Imagenet classifier (see dnn_imagenet_ex.cpp) + - Optimization Tools + - Added find_optimal_parameters() + - Added elastic_net class + - Added the option to use the elastic net regularizer to the OCA solver. + - Added an option to solve the L2-loss version of the SVM objective function to svm_c_linear_dcd_trainer. + - Added solve_qp_box_constrained() + - Image Processing + - Added random_color_transform, disturb_colors(), and apply_random_color_offset(). + - load_image() now supports loading GIF files. + - Many improvements to the MATLAB binding API + - Automatically link to MATLAB's Intel MKL when used on linux. + - struct support + - mex functions can have up to 20 arguments instead of 10. + - In place operation. Made column major matrices directly wrap MATLAB + matrix objects when used inside mex files. This way, if you use + matrix_colmajor or fmatrix_colmajor in a mex file it will not do any + unnecessary copying or transposing. + - Catch ctrl+c presses in MATLAB console. Allowing early termination of mex functions. + - When used inside mex files, DLIB_ASSERTS won't kill the MATLAB process, + just throw an exception. + - Made cerr print in MATLAB as a red warning message. + - load_mnist_dataset() + - Added a constructor for seeding rand with a time_t. + - Added subm_clipped() + - Added unserialize. + - Added running_gradient + +Non-Backwards Compatible Changes: + - Everything in dlib/matlab/call_matlab.h is now in the dlib namespace. + - DLIB_TEST() and DLIB_TEST_MSG() macros now require you to terminate them with a ; + +Bug fixes: + - Fixed bug in 10 argument version of call_matlab() and also cleaned up a few + minor things. + - setup.py and CMake scripts work in a few more contexts. + - Fixed compiler errors in visual studio 2015. + - Fixed a bug in gaussian_blur() that caused messed up outputs when big + sigma values were used on some pixel types. + - Fixed minor bugs in join_rows() and join_cols(). They didn't work when one + of the matrices was empty. + +Other: + - Made CMake scripts uniformly require CMake version 2.8.4. + - Faster fHOG feature extraction / face detection + - CMake scripts now enable C++11 by default + - Gave array2d and matrix move constructors and move assignment operators. Matrix + can also now be created from initializer lists. +</old> + +<!-- ************************************************************************************** --> + +<old name="18.18" date="Oct 28, 2015"> +New Features: + - Added the set_ptrm() routine for assigning dlib::matrix objects to arbitrary + memory blocks. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug that caused cmake to not provide the correct preprocessor + definitions until cmake was run twice. This was causing some projects to + not build properly. + +Other: + - Improvements to build system: + - Ehsan Azarnasab contributed a setup.py so the dlib Python API can be + installed via the usual 'python setup.py install' command. + - Séverin Lemaignan upgraded dlib's CMake scripts so they include an + install target. Now dlib can be installed system wide by executing + 'cmake PATH_TO_DLIB; make install'. This also includes installing the + appropriate scripts for CMake's find_package(dlib) to work. +</old> + +<!-- ************************************************************************************** --> + +<old name="18.17" date="Aug 15, 2015"> +New Features: + - More clustering tools: + - Added bottom_up_cluster() and find_clusters_using_angular_kmeans() + routines. + - Added a --cluster option to the imglab tool. This lets you cluster + objects into groups of similar appearance/pose. + - Improved the shape_predictor. In particular, it can now be learned from + datasets where some landmarks are missing. The shape_predictor also now + outputs a sparse feature vector that encodes which leafs are used on each + tree to make a prediction. + +Non-Backwards Compatible Changes: + - extract_highdim_face_lbp_descriptors() produces slightly different output. + +Bug fixes: + - Fixed a minor bug in extract_highdim_face_lbp_descriptors() which was + pointed out by Yan Xu. One of the face locations was mistakenly used twice + while another was skipped. This change breaks backwards compatibility with + the previous feature extraction output but should slightly improve + accuracy of classifiers trained using these features. + - Fixed jet() and heatmap() so they work on empty images. + - The SQLite transaction object did not function correctly when compiled + in a C++11 program. Since its destructor can throw, an exception + specification needed to be added indicating that this was possible since + destructors are now noexcept by default in C++11. + - Fixed a bug pointed out by Ernesto Tapia that could cause matrix + expressions that involve sub matrix views (e.g. colm) to produce the wrong + results when the BLAS bindings were enabled. + - Added an if to avoid a possible division by zero inside spectral_cluster(). + - Fixed a bug in parse_xml(). It failed to check if the given input stream + was valid before trying to parse it. + +Other: + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.16" date="Jun 3, 2015"> +New Features: + - Added a linear model predictive control solver. See the mpc_ex.cpp example + program for details. + - Thanks to Patrick Snape, the correlation_tracker can now be used from Python. + +Non-Backwards Compatible Changes: + - The camera_transform's second operator() method now takes 3 arguments + instead of 2. This is to allow it to output the z distance in addition to + scale. + +Bug fixes: + - Fixed a bug in the eigenvalue_decomposition which could occur when a + symmetric matrix was used along with the LAPACK bindings. + - Fixed a bug where the last column of data in a file wasn't loaded on some + OS X machines when load_libsvm_formatted_data() was called. + +Other: + - Added a hard iteration limit to a number of the SVM solvers. + - Adrian Rosebrock graciously setup an OS X machine for dlib testing, which + resulted in improved CMake python scripts on OS X machines. + - Improved the way overlapping points are rendered by the perspective_window. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.15" date="Apr 29, 2015"> +New Features: + - Added a number of tools for working with 3D data: + - Added the perspective_window which is a tool for displaying 3D point clouds. + - Added camera_transform. It performs the 3D to 2D mapping needed to visualize 3D + data. + - Added point_transform_affine3d as well as functions for creating such transforms: + rotate_around_x(), rotate_around_y(), rotate_around_z(), and translate_point(). + - Added draw_solid_circle() for drawing on images. + - Added get_best_hough_point() to the hough_transform. + - Thanks to Jack Culpepper, the python API for object detection now outputs detection + confidences. + - Added lspi, an implementation of the least-squares policy iteration algorithm. + +Non-Backwards Compatible Changes: + - The shape_predictor and shape_predictor_trainer had a non-optimal behavior when used + with objects that have non-square bounding boxes. This has been fixed but will cause + models that were trained with the previous version of dlib to not work as accurately if + they used non-square boxes. So you might have to retrain your models when updating dlib. + +Bug fixes: + - Fixed a bug which prevented add_image_rotations() from compiling. + +Other: + - The imglab tool now allows the user to click and drag annotations around by holding + shift and right clicking. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.14" date="Mar 01, 2015"> +New Features: + - Added spectral_cluster() + - Added sub_image() and sub_image_proxy + - Added set_all_logging_headers() + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug that caused the correlation_tracker to erroneously trigger an assert when + run in debug mode. + +Other: + - Improved the usability of the new drectanle object. + - Optimized extract_fhog_features() for the case where cell_size==1. This makes it about + 4x faster in that case. + - Made it so you can compose point transform objects via operator *. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.13" date="Feb 03, 2015"> +New Features: + - Added the correlation_tracker object + - Added the option to force the last weight to 1 to structural_assignment_trainer. + - Added max_point_interpolated() + - Added the drectangle object + - New Python Tools: + - Patrick Snape contributed a Python binding for the face landmarking tool and + the general purpose shape prediction/training tools. + - Vinh Khuc contributed a Python binding for find_candidate_object_locations(), + dlib's implementation of the selective search object location proposal method. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug in extract_image_chips() and get_mapping_to_chip() that caused + incorrect outputs when the requested chip stretched the image unevenly + vertically or horizontally. + - Made CMake check that libpng and libjpeg actually contain the link symbols + they are supposed to since, on some systems, these libraries aren't + installed correctly and will cause linker errors if used. + - Fixed assign_border_pixels(img, rect) so that it correctly zeros an image + when an empty rectangle is supplied. Previously, it did nothing to the + image in this case. + - Fixed compute_lda_transform() so it works properly when the class + covariance matrices are singular even after performing PCA. + - Fixed a bug in find_similarity_transform(). When given just two points as + inputs it would sometimes produce a reflection rather than a similarity + transform. + - Disabled all bindings to FFTW because FFTW isn't threadsafe. + +Other: + - Added an example program for dlib's SQLite API and made a few minor + usability improvements to the API as well. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.12" date="Dec 20, 2014"> +New Features: + - Upgraded fft() and ifft() to support 2D matrices. + - Added hough_transform + - Added skeleton() for finding the skeletonization of a binary image. + - Added distance_to_line(), clip_line_to_rectangle(), min_point(), and max_point(). + - Added a simple API for calling C++ from MATLAB. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a compile time error that could happen when calling fft() for + certain input types. + - Fixed a compile time error that prevented auto_threshold_image() from + being used. + - Fixed name clashes with new version of Boost. + - Changed Python pickling code so it works with Python 3. + - Fixed CMake compile time error related to finding fftw. + +Other: + - Made extract_image_chips() much faster when extracting unscaled image chips. +</old> + +<!-- ************************************************************************************** --> + +<old name="18.11" date="Nov 13, 2014"> +New Features: + - Added save_jpeg() + - Added the option to use an identity matrix prior to vector_normalizer_frobmetric. + - Made the extract_image_chips() routine more flexible, in particular: Added + get_mapping_to_chip(), get_face_chip_details(), map_det_to_chip(), and also + upgraded chip_details so you can specify a chip extraction by a bunch of + point correspondences between the chip and the original image. + - Added a set of local-binary-pattern based feature extractors: + make_uniform_lbp_image(), extract_histogram_descriptors(), + extract_uniform_lbp_descriptors(), and extract_highdim_face_lbp_descriptors() + - Added compute_lda_transform() + - Added equal_error_rate() + - Added cast_to() to the type_safe_union. This allows you to get the + contents of a const type_safe_union. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Changed noncopyable.h to avoid a name clash with boost 1.56 + - On some platforms hostname_to_ip() would erroneously return 0.0.0.0. This + has been fixed. + +Other: +</old> + +<!-- ************************************************************************************** --> + +<old name="18.10" date="Aug 28, 2014"> +New Features: + - Added find_similarity_transform() + - Added the ability to upgrade a auto_mutex_readonly from a readonly lock to a write + lock. + - Added an implementation of the paper "One Millisecond Face Alignment with an Ensemble + of Regression Trees" by Vahid Kazemi and Josephine Sullivan which appeared in this + year's CVPR conference. Therefore, dlib now includes tools for learning shape models + and also comes with a state-of-the-art face landmark locator. See the + face_landmark_detection_ex.cpp and train_shape_predictor_ex.cpp example programs for + an introduction. + +Non-Backwards Compatible Changes: + - Made the interface to all the image processing routines more generic. In particular, + it is now easier to use arbitrary image types with dlib. The new generic image + interface is defined in dlib/image_processing/generic_image.h and simply consists of + seven user defined global functions and a traits template. Any user code that was + using array2d objects to represent images will still work. However, if you had been + using your own custom image object you will need to provide implementations of the + seven functions. Instructions for how to do this are in + dlib/image_processing/generic_image.h. + +Bug fixes: + - Changed the murmur hash implementation to avoid any possibility of strict aliasing + violations in user code, even when things get inlined in unfavorable ways. + - Fixed a color space handling bug in resize_image() that caused bad looking outputs in + some cases. + - If "cmake" was a substring of the full path to your source code folder then the cmake + scripts would fail. This has been fixed. + - Fixed a compile time error that could occur when using find_max_single_variable(). + +Other: + - load_image() now uses the internal file header information to detect the + image format rather than looking at the file extension. + - Renamed unit test program to dtest avoid warnings from CMake. + - cross_validate_trainer() and cross_validate_trainer_threaded() no loner make copies + of the training data. This significantly reduces their RAM usage for large datasets. + - Changed the serialization code for C-strings so that they don't save the null + terminator byte. This makes their serialization format the same as the format for + std::string. The code should still be able to read all previously serialized data + correctly, so the change is backwards compatible with previous versions of dlib. + - Changed the evaluate_detectors() routine so that it applies non-max suppression to + each detector individually. This way one detector doesn't stomp on the output of + another detector. + - Made the version of draw_line() that draws onto a regular image use alpha blending + for drawing diagonal lines. +</old> + +<!-- ************************************************************************************** --> + +<old name="18.9" date="Jun 16, 2014"> +New Features: + +Non-Backwards Compatible Changes: + +Bug fixes: + - The new simplified serialization API that works like serialize("filename")<<object + was not opening files in binary mode and therefore didn't work properly on Windows. + This has been fixed. + +Other: + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.8" date="Jun 02, 2014"> +New Features: + - Added the ability to set a previously trained function as a prior to the + svm_multiclass_linear_trainer, svm_c_linear_trainer, and svm_rank_trainer + objects. + - Added a user settable loss to the structural_assignment_trainer and + structural_track_association_trainer objects. + - Added evaluate_detectors(), a function for efficiently running multiple fHOG + based object detectors. + - Added the new split_on_first() and split_on_last() string manipulation functions. + - Added locally_change_current_dir, a RAII tool for switching between directories. + - You can now make a 1x1 matrix containing a single value by calling mat() on a single + scalar value. + - The point transform functions and frobmetric_training_sample are now serializable. + - Added a simplified operator << and >> based syntax for serializing to and + from files. So now you can serialize to a file using a syntax of: + serialize("myfile.dat") << myobject << another_object; + and then load those objects from disk via: + deserialize("myfile.dat") >> myobject >> another_object; + An arbitrary number of objects can be serialized or deserialized by + chaining the << and >> operators. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug pointed out by Daniel Girardeau-Montaut. The covariance() + function didn't work on non-double valued matrices. + - Fixed a bug in the backtracking_line_search() function pointed out by + Ping-Chang Shih. The function ignored the max_iter parameter. + - Fixed a compiler error encountered when using clang 3.4 on Mac OS X 10.9. + Thanks to Martin Fergie for reporting this problem. + - Fixed a potential divide by zero in draw_fhog() + +Other: + - Added an example program showing how to set a custom logger output hook. + - Made linear decision_functions which use sparse vectors much faster. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.7" date="Apr 09, 2014"> +New Features: + - Added a Python API for working with fHOG based object detectors. See the + new python example programs train_object_detector.py and face_detector.py for + more details. + - Added the ability to use a user supplied fHOG style feature extractor with + the scan_fhog_pyramid object. So now you can define your own version of HOG + for use with these tools. + - The oca solver now supports taking a user supplied prior vector. That is, + it lets you use a regularizer like ||w-prior||^2 instead of the usual + ||w||^2 regularizer. + - Added the structural_track_association_trainer object. It is a structural + SVM tool for creating multi-target tracking algorithms. See the + learning_to_track_ex.cpp example program for an introduction. + - Added the following minor utility functions: nearest_center(), + add_image_rotations(), set_aspect_ratio(), and tile_images(). + +Non-Backwards Compatible Changes: + - Refactored the load_image_dataset() routines so they are easier to use and + more flexible. This introduces a slight backwards incompatibility in that + the version that loads full_object_detection objects now returns an ignore + rectangle set instead of a parts name list. Other than that the changes + are backwards compatible with previous versions of dlib. + - Added a bias term to the assignment_function's model so the user doesn't + need to remember, or even understand, that they should add it themselves. + However, this change breaks backwards compatibility with the previous + serialization format for assignment_function objects. + +Bug fixes: + - Fixed a number of compile time errors that could occur in rare cases. + - The stopping condition for the svr_linear_trainer was too tight, causing it + to take an excessive amount of time to converge in some cases. + - Disabled use of XIM for X11 windowing since it makes programs hang on some + systems. However, this means the wide character input methods won't work on + X11 systems anymore. + - Fixed a bug in randomize_samples() which caused the outputs to be not as + random as they should be. + - Fixed dlib's CMakeLists.txt file so that the "use FFTW" option actually + causes the build to use FFTW. + - Fixed a compile time error that triggered when trying to link with FFTW. + - mat() did not work correctly when used with std::vector<bool> objects. + This has been fixed. + +Other: + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.6" date="Feb 03, 2014"> +New Features: + - Object Detection Tools: + - Added scan_fhog_pyramid, a tool for creating Histogram of Oriented Gradient (HOG) + based object detectors. + - Added get_frontal_face_detector(), a HOG based face detector. + - Added an option to include "ignore/don't care" truth boxes to the + structural_object_detection_trainer. This allows a user to tell the trainer that + they don't care if certain objects are detected or not detected. + - Image Processing Tools: + - Added extract_image_chips() + - Added a version of draw_rectangle() for drawing on images. + - The spatial filtering routines now support even sized filters. + - Added flip_image_dataset_left_right(), upsample_image_dataset(), and + rotate_image_dataset(). + - Machine Learning Tools: + - Added a nuclear norm regularization option to the structural SVM solver. + - Added the option to learn only non-negative weights to the + svm_multiclass_linear_trainer. + - Speed Improvements: + - The svm_multiclass_linear_trainer, one_vs_one_trainer, and one_vs_all_trainer + objects are now multithreaded. This also means you have to #include + dlib/svm_threaded.h instead of dlib/svm.h to use these tools. + - A number of image processing tools can now optionally use SSE and AVX instructions + and are therefore considerably faster. In particular, the following tools have been + accelerated: extract_fhog_features, resize_image, pyramid_down, pyramid_up, + spatially_filter_image_separable, and spatially_filter_image. + - Added an inv() routine that inverts point transformation functions. + - Added a sign() routine for matrix objects. + +Non-Backwards Compatible Changes: + - The spatial image filtering functions have the following changes: + - They no longer zero the image borders when you set the add_to parameter to true. + - The spatially_filter_image_separable_down() routine now only allows grayscale + output images. + - Changed the default parameters of the test_box_overlap object. Now it defaults to + using exactly the PASCAL VOC match criterion. + - To use the svm_multiclass_linear_trainer, one_vs_one_trainer, or one_vs_all_trainer + objects you now have to #include dlib/svm_threaded.h instead of dlib/svm.h. + - pyramid_up() no longer has a levels option. + +Bug fixes: + - Fixed a compile time bug that could occur when wide character strings were + serialized. + - Fixed a compile time bug occurring in gcc 4.7.1 on SUSE Linux. Thanks to Volker + Härtel for finding this. + - Fixed compile time errors that occurred when using gcc on cygwin. + - Fixed a compile time bug that could occur when serializing mlp objects. + - Fixed a bug in the bigint object that caused division to sometimes produce incorrect + results. + - Fixed a bug which sometimes caused load_image_dataset() to erroneously report that + the dataset file could not be found. + - Fixed a bug in the structural_object_detection_trainer that caused it to erroneously + throw a impossible_labeling_error exception in certain rare cases. + - Updated find_max_factor_graph_nmplp() to use the improved version of the algorithm + from the 2011 paper Introduction to dual decomposition for inference by David Sontag, + Amir Globerson, and Tommi Jaakkola. The original algorithm presented in their 2008 + paper had an error that negatively affected its convergence. Thanks to James Gunning + for pointing this out. + +Other: + - Fixed many compiler warnings in gcc 4.8. + - Made many of the mat() converters bind the resulting matrix expressions into BLAS + functions. + - libpng and libjpeg are now included in the dlib/external folder to enable easy static + linking to these libraries on platforms that typically don't have them (e.g. Windows). + Moreover, dlib's cmake files will automatically perform this static linking when no + copy of these libraries is found on the system. +</old> + +<!-- ************************************************************************************** --> + +<old name="18.5" date="Oct 22, 2013"> +New Features: + - Added routines for performing BFGS and L-BFGS optimization with box constraints. + See the new find_min_box_constrained() and find_max_box_constrained() routines. + - Added vector_normalizer_frobmetric. This is a tool for learning a + Mahalanobis distance metric. + - The user can now set different loss values for false alarming vs. getting a + correct detection when using the structural_sequence_segmentation_trainer. + - Added an overload of clamp() that lets you use matrix valued lower/upper bounds. + - New image processing tools: + - Added the scan_image_custom object, split_array(), and add_image_left_right_flips(). + - Added extract_fhog_features(), this is a function for computing + Felzenszwalb's 31 channel HOG image representation. + +Non-Backwards Compatible Changes: + - Refactored the image pyramid code. Now there is just one templated object called + pyramid_down and you give it the downsampling amount as a template argument. To make + old code work with this change use the following substitutions: + change pyramid_down to pyramid_down<2> + change pyramid_down_3_2 to pyramid_down<3> + change pyramid_down_4_3 to pyramid_down<4> + change pyramid_down_5_4 to pyramid_down<5> + +Bug fixes: + +Other: + - Made the structural SVM solver slightly faster. + - Moved the python C++ utility headers from tools/python/src into dlib/python. + - The PNG loader is now able to load grayscale images with an alpha channel. + - Removed checks that prevented users from using references to functions with the + optimization code and forced the use of function pointers. This was to avoid + triggering a bug in gcc 4.0. Since that compiler is no longer officially supported + by dlib I've removed these checks to increase usability. + - Made resize_image() use bilinear interpolation by default and also added a special + version of it that is optimized for this case. + - Dlib's cmake files will now automatically link to the Intel MKL on MS Windows + platforms if the MKL is installed. +</old> + +<!-- ************************************************************************************** --> + +<old name="18.4" date="Aug 14, 2013"> +New Features: + - Added Python interfaces to dlib's structural support vector machine solver and + Hungarian algorithm implementation. + - Added running_cross_covariance + - Added order_by_descending_distance() + - Added is_finite() + - Added the csv IO manipulator that lets you print a matrix in comma separated value + format. + +Non-Backwards Compatible Changes: + - Changed the object detector testing functions to output average precision instead of + mean average precision. + - Added an option to weight the features from a hashed_feature_image relative to the + number of times they occur in an image. I also made it the default behavior to use + this relative weighting and changed the serialization format to accommodate this. + +Bug fixes: + - Fixed typo in learn_platt_scaling(). The method wasn't using the exact prior + suggested by Platt's paper. + - Fixed a bug in running_scalar_covariance that caused the covariance() and + correlation() methods to output the wrong answer if the covariance was negative. + +Other: + - Gave the image_window the ability to tie the mouse and keyboard events together such + that it is possible for a user to listen for both simultaneously. + - A number of changes were made to the structural_svm_problem's code which make it + significantly faster in some cases. + - Added Steven Van Ingelgem's patch to the HTTP server which makes operations on HTTP + headers case-insensitive. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.3" date="June 21, 2013"> +New Features: + - Machine Learning: + - Added the svr_linear_trainer, a tool for solving large scale support vector + regression problems. + - Added a tool for working with BIO and BILOU style sequence taggers/segmenters. + This is the new sequence_segmenter object and its associated + structural_sequence_segmentation_trainer object. + - Added a python interface to some of the machine learning tools. These + include the svm_c_trainer, svm_c_linear_trainer, svm_rank_trainer, and + structural_sequence_segmentation_trainer objects as well as the cca() + routine. + - Added point_transform_projective and find_projective_transform(). + - Added a function for numerically integrating arbitrary functions, this is the + new integrate_function_adapt_simpson() routine which was contributed by + Steve Taylor + - Added jet(), a routine for coloring images with the jet color scheme. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug in hysteresis_threshold() that caused it to produce incorrect + outputs in some cases. + - Fixed a segmentation fault in the eigenvalue_decomposition object which + could occur when NaN valued inputs were given. + +Other: + - Made image saving routines work on matrix objects in addition to array2d objects. + - The machine learning page now contains a flow chart to help new users + select a machine learning tool appropriate for their task. + +</old> + +<!-- ************************************************************************************** --> + + +<old name="18.2" date="May 30, 2013"> +New Features: + - Object Detection Tools: + - Added another image scanning tool similar to scan_image_pyramid. This + is the new scan_image_boxes object. It allows a user to easily specify + an arbitrary set of object boxes which should be checked by an object + detector rather than scanning a fixed sized window over the image as is + done by the scan_image_pyramid tool. This allows more flexible scanning + strategies. For example, it is now possible to use the selective search + method implemented by the new find_candidate_object_locations() routine. + - Added the binned_vector_feature_image. + - Upgraded the object_detector so that you can use the adjust_threshold + argument for all versions of the operator() method. + - Added remove_unobtainable_rectangles() + - Hashing Tools: + - Added a set of new locality sensitive hashing functions meant for use + with larger vectors and higher bit sizes than the current LSH tools. + These are the new hash_similar_angles_xxx objects. + - Added find_k_nearest_neighbors_lsh() and hash_samples() + - Added create_max_margin_projection_hash() + - New Matrix Routines: linpiece(), fft(), and ifft() + - Added numeric constants and additional statistics to the running_stats + object. This code was contributed by Steve Taylor. + - Added the image_window::get_next_keypress() routine. This tool allows a + user to easily find out which keyboard key the user is pressing. + +Non-Backwards Compatible Changes: + - Changed the object_detector interface slightly. In particular, it no + longer adds the adjust_threshold argument to the output scores. + - The object detector testing functions now output mean average precision in + addition to precision and recall. + - Changed how dlib does serialization in a number of ways: + - The running_stats and scan_image_pyramid objects have had their + serialization format changed in a way that breaks backwards + compatibility. This means serialized versions of these objects can't be + loaded by the new version of dlib. + - Changed the format dlib uses when it serializes floating point values. + Previously, we used an ASCII based format. Dlib now uses a much more + efficient binary format. However, the deserialization routines have + been made backwards compatible with the previous format. So dlib can + still deserialize older data but older software won't be able to read + the new format. + - Changed the serialization formats for the matrix and array2d objects so + that either object can be deserialized into the other. This was done in a + way that is backwards compatible with previous versions of dlib. That is, + we can still load data serialized by previous dlib versions. However, + older versions of dlib can't load the new serialization format. + +Bug fixes: + - Fixed a bug in save_dng() that happened sometimes when saving images with + unsigned char pixels. + - The test_ranking_function() and cross_validate_ranking_trainer() routines + computed incorrect MAP scores when the learned function output a constant + value for all samples. This has been fixed. + +Other: + - Gave load_image_dataset() the ability to skip images that don't have any + ground truth boxes. + - Changed average_precision() to use interpolated precision. So now it uses + the same metric as the one used by the Pascal VOC challenge. + - Upgraded the dng image format so it can natively store floating point + pixel types without any information loss. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.1" date="Mar 25, 2013"> +New Features: + - Added svd_fast(), a routine for computing a singular value decomposition of very + large matrices. + - Added cca(), a routine for doing canonical correlation analysis on very large + and high-dimensional datasets. + - Added tools for creating parallel for loops, see parallel_for(). + - Added some features to the image display widgets to let the user easily + get information about where the user is clicking. This is the new + get_next_double_click() routine. + - Added an operator>> for matrix objects which allows you to read in ASCII + matrices using the format used by operator<<. + - Added serialization support for std::vector<bool>. + - Added the following new minor objects and routines: average_precision(), + make_sparse_vector_inplace(), orthogonalize(), count_bits(), draw_surf_points(), + hamming_distance(), cosine_distance, and negative_dot_product_distance. + +Non-Backwards Compatible Changes: + - Changed ranking evaluation functions to return the mean average precision + in addition to just raw ranking accuracy. This changes their return types + from double to matrix<double,1,2>. + - Generalized segment_image() so it works on any pixel type or array of + vectors. I also changed its interface slightly. In particular, I removed + the min_diff parameter and replaced it with an explicit min_size parameter. + - Changed how the SURF descriptor is computed slightly to improve its + accuracy. The interface to the user has not been changed, however, the + number and position of detected SURF points might be different than in + previous dlib versions. + +Bug fixes: + - Fixed an endianness bug in the PNG I/O functions which occurred when 16bit + grayscale PNGs were used. + - Fixed a bug which could potentially occur when empty std::vector<char> or + std::vector<unsigned char> were serialized. + - There was a bug in the version of draw_line() that draws directly onto an + array2d type image (not the one that draws onto a GUI canvas object). The + bug triggered whenever a perfectly horizontal or vertical line that extended + outside the image was drawn. This has been fixed. + - Fixed a bug in the Windows implementation of the signaler object, which + was found by Isaac Peterson. The bug caused the program to deadlock if + signal() or broadcast() was called at exactly the same time a + wait_or_timeout() function timed out. + - Fixed a bug in the image_window and image_display GUI tools which caused + them to not redraw overlay lines correctly in certain cases involving + non-default zoom levels. + - Switched randomly_color_image() to use the non-pointer based version of + murmur_hash3() to avoid violation of the strict aliasing rule. In + particular, the previous version didn't work correctly in gcc 4.7.2 when + optimizations were enabled. + - Visual Studio 2012's iostreams library has a bug which caused the + iosockstream to crash on use. This version of dlib has been changed to + avoid triggering this bug. + +Other: + - Refactored the Platt scaling code a little. Now there is a function, + learn_platt_scaling(), that allows you to directly call the Platt scaling + code without supplying a trainer object. + - Optimized the oca and structural SVM solvers. They are now a little bit faster + than in previous dlib releases. + +</old> + +<!-- ************************************************************************************** --> + +<old name="18.0" date="Feb 04, 2013"> +New Features: + - Machine Learning + - Added svm_rank_trainer, an optimized implementation of the SVM-Rank algorithm. + - Added rank_unlabeled_training_samples(), an implementation of the SVM Active + Learning algorithm. + - Added svm_c_linear_dcd_trainer, a warm-startable SVM solver using the dual + coordinate descent algorithm used by liblinear. + - Added the ability to force the last element of a weight vector to 1 to the + following objects: svm_c_linear_trainer, svm_c_linear_dcd_trainer, + svm_rank_trainer, and oca. + - Added the ability to learn non-negative weight vectors to the + structural_sequence_labeling_trainer object. + - Networking + - Added an iosockstream object. + - Added a method to the server object that lets a user set the graceful close timeout + time to something other than the default of 500ms. + - Linear Algebra + - Added the gaussian_randm() function. + - Added the find_affine_transform() function. + - Added the mat() function. It combines the array_to_matrix(), vector_to_matrix(), + pointer_to_column_vector(), and pointer_to_matrix() methods all into one convenient + interface. mat() also works for Armadillo and Eigen matrices. + - Added STL style begin() and end() methods to matrix and matrix_exp. + - Added an overload of sparse_matrix_vector_multiply() that multiplies a dense matrix + with a sparse vector. + - Made toMat() work with the matrix object in addition to array2d style images. + - Graphical User Interface Tools + - Added draw_solid_convex_polygon(). + - Added an overload of draw_image() that's useful for drawing images and doing + interpolation at the same time. + - Added the on_view_changed() callback to zoomable_region and scrollable_region widgets. + - Added parse_trees_to_string() and parse_trees_to_string_tagged(). + - Added lambda function support to the timeout object. + - Added the vectorstream object. + - Added the parse_xml() routines. + - Added a group name feature to the command line parser. Now it is possible to make + print_options() print related options in named groups. + - Added the following new hashing functions: murmur_hash3_128bit_3(), + murmur_hash3_2(), murmur_hash3_3(), uniform_random_hash(), gaussian_random_hash() + as well as hash() overloads for uint32, uint64, and std::pair. + +Non-Backwards Compatible Changes: + - Made the svm_c_linear_trainer use the risk gap to decide when to stop. This was done + because it is how all the other OCA based SVM tools in dlib decide when to stop. + However, it might cause the outputs to be slightly different in this version of dlib. + - It is now illegal to call unlock() on a mutex when the mutex is not owned by the + calling thread. The most likely reason for doing this was to unlock early in an area + locked by an auto_mutex. Old code that does this can be fixed by calling auto_mutex's + unlock() function instead. + - Removed the structural_assignment_trainer::learns_nonnegative_weights() routine + and moved its functionality into the feature extraction interface used by this object. + +Bug fixes: + - Fixed a bug in find_max_factor_graph_nmplp() which caused it to not work properly on + some compilers. + - Fixed a bug pointed out by Joel Nelson in the version of md5() that took an istream. + The bug caused the function to crash on strings longer than 56 characters. + +Other: + - dlib now has an excellent new logo thanks to Yasser Asmi. + - Added a new documentation page for the various linear algebra tools. + - The following objects were turned into single implementation components: + sockstreambuf, timeout, member_function_pointer, xml_parser, linker, + bound_function_pointer, and timer. + +</old> + +<!-- ************************************************************************************** --> + +<old name="17.49" date="Dec 18, 2012"> +New Features: + - Machine Learning + - Added the ability to learn non-negative weight vectors to the + structural_assignment_trainer object. + - Added two new graph clustering algorithms: Chinese Whispers and Newman's modularity + clustering. + - Added a number of new graph manipulation tools: sparse_matrix_vector_multiply(), + is_ordered_by_index(), find_neighbor_ranges(), convert_unordered_to_ordered(), + remove_duplicate_edges(), and the ordered_sample_pair object. + - Networking + - Added a set of tools for creating applications using the Bulk Synchronous Parallel + computing model. See the new bsp_ex.cpp example program for an introduction. + - Added a routine that lets a user disable Nagle's algorithm on a TCP connection. + - Added an asynchronous start routine to the server object. This is the new + start_async() method. + - Added the network_address object. + - Added connect_to() to the bridge interface. + - Added find_max_parse_cky(), a method implementing the well known CKY algorithm for + parsing probabilistic context free grammars. + - Added the ability to label parts of objects with the mouse to the image_display + widget. + - Added the ability to put overlay circles and full_object_detections into the + image_window widget. + - Added a stddev() for matrix objects. + - Added operator+() for running_stats and running_scalar_covariance. + - Added an overload of murmur_hash3_128bit() that takes 4 integers instead of a block of + memory. + - Added rand::get_random_64bit_number(). + +Non-Backwards Compatible Changes: + - Changed the image_dataset_metadata XML reading tools to use a map of strings to points + to represent object parts. This change removes the old head point from a box since + this information can now be represented in the parts map. + - The syntax for passing order_by_distance and order_by_index to std::sort() is now + slightly different since these functions are now templates. However, this change + allows them to work on any kind of sample_pair or ordered_sample_pair object. + - The default distance value of a sample_pair is now initialized to 1 instead of + infinity. + +Bug fixes: + - Added a patch, contributed by Martin Müllenhaupt, to fix a minor bug in the SQLite + bindings. + - Fixed a typo which would prevent code that called running_stats::max_n() from + compiling. + +Other: + - Added a new documentation page for the various graph tools in dlib. + - Added support for Visual Studio 2012. + - Switched the sample_pair object to use double to store its distance value instead of + float. + - Added William Sobel's patch to the web server that improves its flexibility and + security. + - Changed the server object so you don't have to use the server::kernel_1a syntax to + declare it anymore. Now you just say server, server_iostream, or server_http + depending on which one you want. + - Changed the cmd_line_parser so you don't have to use the ::kernel_1a syntax anymore. + Now it is declared like a normal single implementation object. + - Set the default max number of connections a server will accept at a time to 1000 + rather than the previous default of infinity. + +</old> + +<!-- ************************************************************************************** --> + +<old name="17.48" date="Oct 18, 2012"> +New Features: + - Added more overloads of find_max_factor_graph_potts() to make applying it + over a Markov random field of image pixels really simple. + - Added overloads of serialize()/deserialize() so that they can serialize + Google protocol buffer objects. + - Image Processing: + - Added find_points_above_thresh() + - Added max_filter() + - Added scan_image_movable_parts() + - Added sum_filter_assign() + - Added the full_object_detection object. + - Added the ability to model objects with movable parts into the + scan_image_pyramid object. This update also includes all the needed tools + to train movable part models using the structural_object_detection_trainer. + - Machine Learning: + - Added a per node loss option to the structural_svm_graph_labeling_problem's + interface. + - Added Emanuele Cesena's implementation of Sammon's nonlinear dimensionality + reduction method. + +Non-Backwards Compatible Changes: + - To support movable part models, the serialization format of scan_image_pyramid + objects was modified. This breaks backwards compatibility with the previous + format for scan_image_pyramid objects as well as object_detector instances + that use the scan_image_pyramid. + +Bug fixes: + - Fixed a bug in auto_threshold_image() that caused it to give bad outputs + when used with very large images. + +Other: + - Updated find_max_factor_graph_potts() to correctly say you can use infinite + weights for the factor_value_disagreement() values since the code actually + supports this. + - Made integer serialization about 3 times faster. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.47" date="Jun 15, 2012"> +New Features: + - Improvements to linear algebra tools: + - Added the lowerbound() and upperbound() routines for thresholding dense + matrices. + - Refined the tools for working with sparse vectors. In particular, + the following functions were added: min(), max(), make_sparse_vector(), + add(), and subtract(). A number of existing routines were also updated + to work with both sparse and dense vectors so that templated code which + works on both vector types is simpler to write. + - Added the += and -= operators to the set_subm(), set_rowm(), and set_colm() + tools for operating on submatrices. + - Optimization: + - Added a new quadratic program solver, solve_qp4_using_smo(). This new + solver is useful for solving quadratic programs corresponding to + non-negative constrained primal quadratic programs. + - Added an optional non-negativity constraint to the oca optimizer. + - Added the min_cut object. It provides a method to find the minimum weight + cut on a graph. + - Added tools for finding the maximum probability assignment in a Potts + style Markov random field. See the find_max_factor_graph_potts() routine + for details. + - Machine Learning: + - Added structural SVM tools for learning the parameters of a Potts style + Markov random field. See the structural_graph_labeling_trainer and + graph_labeler objects as well as their associated example program for + details. + - Added the ability to learn only non-negative weights to the + svm_c_linear_trainer. + - Improved Integration with OpenCV: + - Updated the cv_image object so it works with cv::Mat as well as IplImage. + - Added the toMat() routine for converting from a dlib style image to an + OpenCV cv::Mat image. + +Non-Backwards Compatible Changes: + - Removed the dlib::sparse_vector namespace. Everything from this namespace + was moved into the normal dlib:: namespace so that code which works with + both sparse and dense vectors is more cohesive. + +Bug fixes: + - Fixed a bug in find_max_factor_graph_viterbi() which sometimes occurred when + the model order was larger than the number of variables. + - Fixed a bug which caused a compiler error if you tried to call dot() on two + 1x1 matrices which were statically dimensioned. + +Other: + - Improved existing documentation: added pictures of the gui widgets, + added documentation of the dlib::bridge protocol, and other minor + usability improvements. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.46" date="Apr 11, 2012"> +New Features: + - Image Processing: + - Added the option to make the features generated by poly_image rotationally + invariant. + - Added a set of routines for warping, scaling, and resizing images. + See the new "Scaling and Rotating" section of the image processing + documentation for details. + - Added the heatmap() routine for converting an image into a heatmap. + - Machine Learning + - Updated the sequence labeling trainer to allow the user to set different + loss values for different labels. + - Added the rls object. It is an implementation of the linear recursive + least squares algorithm. + - Added the get_option() routines which slightly simplify option parsing + from the command line and config files. + - Added the 128bit version of Murmur hash. + - Added the kalman_filter and rls_filter objects. These are tools for + performing Kalman filtering and recursive least squares filtering. + - Added the circular_buffer object. + +Non-Backwards Compatible Changes: + - The poly_image generates slightly different features in this new release. + Therefore, classifiers trained using the previous version will need to be + retrained if they are switched to the new version of poly_image. + - Changed the xcorr() functions so they take the complex conjugate of the right + hand arguments if they are complex numbers. This way they do a proper + cross-correlation and also mirror the behavior of MATLAB. However, this + breaks backwards compatibility with the previous behavior of xcorr(). + - Previously, dlib included two versions of dlib::array. However, to + simplify the user interface, dlib now includes only the contiguous + memory implementation of dlib::array. This change should only affect + you if you wrote code which assumed dlib::array::set_max_size() only + allocated a small amount of RAM. The new behavior is similar to the + std::vector::reserve() routine. That is, dlib::array::set_max_size() + will allocate the requested amount of memory immediately. + +Bug fixes: + - Fixed a bug which caused certain matrix expressions to not compile + when the BLAS bindings were enabled. In particular, expressions which + involved a 1x1 matrix sometimes didn't compile. + +Other: + - Made the matrix routines min(), max(), sum() and mean() work with + complex numbers. + - Turned the array object into a single implementation object. Now arrays + can be created using the normal array<type> obj; syntax. Additionally, + all extensions were merged into the array object. + - Added an example program which better documents how to create training + data for the object detection tools as well as how this data can be used. + See the train_object_detector.cpp example for details. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.45" date="Jan 29, 2012"> +New Features: + - Added tools for timing blocks of code + - Machine Learning + - Added a set of tools for learning to solve the assignment problem. + See the structural_assignment_trainer and its associated example + program for an introduction. + - Added random projection based locality sensitive hashing tools. + - Added tools to simplify the creation of scan_image_pyramid objects. + See the object_detector_ex.cpp example program for details. + - Image Processing + - Added sum_filter() and spatially_filter_image_separable_down() + - New feature extractors: poly_image, nearest_neighbor_feature_image, and + fine_hog_image + +Non-Backwards Compatible Changes: + - Changed the serialization format for rand objects. + - Changed the order of arguments for the sequence_labeler's constructor. + - Object Detection Changes + - Some parts of the object detection tools have been refactored. In particular, + the interfaces of the scan_image_pyramid and structural_object_detection_trainer + have been changed slightly to improve usability. + - Made the test_box_overlap a little more flexible. This change breaks + backwards compatibility with the previous version though. + - The hashed_feature_image object has been made more general. It now + uses a user supplied hashing function rather than its own hashing + implementation. + - Removed constness from the operator() member functions of the + object_detector. + - Fixed improper normalization in the gaussian() functions. The + normalization constant was being computed incorrectly. + - Sequence labeling feature extractors must now define a sequence_type + typedef instead of sample_type. This change allows the user to use any + type of sequence, not just std::vector objects. + +Bug fixes: + - Changed the add_probability() method of joint_probability_table so + it does a saturating add rather than a normal add. This ensures the + probability value stays exactly <= 1. Previously, floating point + rounding error could cause it to be slightly above 1 and would therefore + cause some asserts to misfire during debugging mode. + - The object_detector had code in it which limited the number of outputs + to 100 rectangles. This has been removed. + - Fixed improper normalization in the gaussian() functions. The + normalization constant was being computed incorrectly. + +Other: + - dlib::rand can now generate Gaussian random numbers. + - The structural_object_detection_trainer will now automatically setup + appropriate non-max suppression parameters if the user doesn't supply them. + - The structural_object_detection_trainer has been optimized and now runs + significantly faster than in previous dlib releases. + - The tools folder containing htmlify, imglab, and mltool is now included + in the dlib release archive files. Previously, these tools were only + available directly from source control. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.44" date="Nov 21, 2011"> +New Features: + - Machine Learning + - Added the histogram intersection kernel for sparse and dense vectors. + - Added a set of tools to allow a user to easily learn to do sequence + labeling using dlib's structural SVM implementation. See the new + sequence_labeler object and its associated example program for an + introduction. + - Image processing: + - Added segment_image() + - Added randomly_color_image() + - Added the border_enumerator + - Added the disjoint_subsets object, it is an implementation of the + union-find algorithm/disjoint-set data structure. + - Added new matrix routines: conv(), conv_same(), conv_valid(), xcorr(), + xcorr_same(), xcorr_valid(), and flip(). + +Non-Backwards Compatible Changes: + - Changed find_max_factor_graph_viterbi() so you can use run-time + defined order and num_states parameters. + +Bug fixes: + - The last dlib release added a max_iterations parameter to the + svm_c_linear_trainer and svm_c_ekm_trainer objects. However, + there was a bug which made them only do at most 16 iterations, + which is too few to solve many problems. This has been fixed. + - Fixed a bug in is_const_type. It didn't work for reference types. + - Fixed a bug in the SQLite binding routine statement::get_column_as_text(). + It didn't work correctly if the column contained a NULL. + - Fixed a bug in find_max_factor_graph_viterbi() which occurred when a + zero order model had negative factor values. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.43" date="Oct 21, 2011"> +New Features: + - Two new routines for performing MAP inference in factor graphs: + - For chain-structured graphs: find_max_factor_graph_viterbi() + - For general graphs: find_max_factor_graph_nmplp() + - Image Processing + - Added more tools for creating image pyramids. See pyramid_down_5_4, + pyramid_down_4_3, and pyramid_down_3_2. + - Added more image filtering and morphology functions. + - Added a set of tools for creating sliding window classifiers: + - Added the scan_image() routine. It is a tool for sliding a set of + rectangles over an image space and finding the locations where the sum + of pixels in the rectangles exceeds a threshold. Also added + scan_image_pyramid, which is a tool for running scan_image() over an + image pyramid. + - Added the structural_object_detection_trainer. This is a tool which + formulates the sliding window classifier learning problem as an + instance of structural SVM learning. + - Added a variety of supporting tools and two object detection example + programs. + - Added the following functions for computing statistics on vectors: + mean_sign_agreement(), correlation(), covariance(), r_squared(), + and mean_squared_error() + - Added a C++ wrapper for SQLite (see the new database and statement objects) + +Non-Backwards Compatible Changes: + - Changed the interface to the ridge regression trainer objects so that they + report the entire set of leave-one-out prediction values rather than a + summary statistic like mean squared error. + - Changed the serialization routine for bgr_pixels to store the pixels in BGR + order rather than RGB. + - Changed the interface for the spatially_filter_image() routine to take the + filter as a matrix rather than C-array. Also, now it won't force signed pixel + values to 0 if they go negative. + - Changed the test_regression_function() and cross_validate_regression_trainer() + routines so they return both the MSE and R-squared values rather than just the + MSE. + - Changed suppress_non_maximum_edges() to use the L2 norm instead of L1 norm + for measuring the strength of an edge since this produces a slightly better + result. + +Bug fixes: + - The image_display didn't display overlay rectangles quite right. If you zoomed + in you could see that some of the pixels which are inside the rectangle were + outside the overlay. Specifically, the right column and bottom row was outside + the overlay rectangle. This has been fixed. Now all pixels which are supposed + to be part of a rectangle are drawn as being inside the overlay rectangle. + - Fixed a bug pointed out by Martin Müllenhaupt which caused the windows socket + code to not compile when used with the mingw-cross-env project. + - Fixed a bug in the png_loader. If you loaded an image with an alpha channel + into something without an alpha channel there were uninitialized values being + alpha blended into the image. + - Fixed a bug in the cpp_tokenizer that only shows up on newer versions of gcc. + It wasn't tokenizing double quoted strings right. + - Fixed a bug in spatially_filter_image() which showed up when using non-square + filters. The bug would cause the edges of the output image to be incorrect. + - Fixed a bug in the matrix class. Expressions of the form mat *= mat(0) would + evaluate incorrectly because the *= operator took the right hand side by reference + and thus experienced an aliasing problem. The other op= operators had similar + problems and have also been fixed. + - Fixed a bug pointed out by Justin Solomon which could cause the svr_trainer and + svm_c_trainer to produce incorrect results in certain unusual cases. + +Other: + - Added a more complete set of methods for converting between image space and + the downsampled hog grid used by hog_image. Now you can convert from image + to hog in addition to hog to image. + - Made the integral_image more general by making it templated on the type of + scalar used to store the sums. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.42" date="Jun 24, 2011"> +New Features: + - Added the check_sub_option() method to the command line parser check + object. + - Added match_endings to the dir_nav utils. + - Added a set_current_dir() function. + - Added the distance_to_rect_edge() routine. + - Added support for user drawn rectangle overlays and selectable overlays + to the image_display widget. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug in the image_display widget. If you switched it between + images of a different size while any kind of zoom was in effect + it could cause a segmentation fault. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.41" date="Jun 12, 2011"> +New Features: + - You can now add tasks to a thread_pool by value, using the new + add_task_by_value() method. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug which caused multiply defined symbol errors during linking + if the PNG saving routine was #included. + +Other: + - Optimized the threaded and distributed structural svm solvers for the + case where there are many data samples and the separation oracle is + quick to evaluate. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.40" date="Jun 05, 2011"> +New Features: + - Added a function for saving to the PNG image format. + - Added Austin Appleby's excellent MurmurHash3 hashing code and setup some + additional convenience functions. These functions are murmur_hash3() and + various overloads of hash(). + +Non-Backwards Compatible Changes: + - Made get_pixel_intensity() more efficient. However, the value returned + is slightly different than it used to be for RGB pixel types. + +Bug fixes: + - Setup proper error handling for libpng in the png_loader. Now if the PNG + file is corrupted in the middle it won't just print a message and abort + the program. + - Fixed a bug in assign_pixel_intensity() that happened when the target pixel + was an RGB pixel with an alpha channel. + +Other: + - Added a Frequently Asked Questions page + - Changed the array2d object so you don't have to say array2d<type>::kernel_1a + anymore to declare it. Now you just say array2d<type>. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.39" date="May 22, 2011"> +New Features: + - Added tools for distributing the work involved in solving a structured + SVM problem over many computers and CPUs. + - Added the bridge. It allows a dlib::pipe to be used for networked + communication. + +Non-Backwards Compatible Changes: + - Removed the DLIB_REVISION macro and replaced it with DLIB_MAJOR_VERSION and + DLIB_MINOR_VERSION. + +Bug fixes: + +Other: + - dlib's version control system has switched from Subversion to Mercurial. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.38" date="May 7, 2011"> +New Features: + - Added the max_sum_submatrix() function to the optimization tools. + - Upgraded the pyramid_down function object so it can create color pyramids. + Also, added some functions which define the coordinate transforms between + different layers in an image pyramid. + +Non-Backwards Compatible Changes: + - Changed the oca_problem interface to the oca optimizer. Now the + optimization_status() function reports back the current risk and risk gap + in addition to the overall objective value and objective gap. + - Changed the stopping condition for the structured svm to the one suggested + by the Joachims paper. Now it stops when the risk gap is below a user + supplied epsilon. + +Bug fixes: + +Other: + - Various usability improvements. + - Improved the feature vector caching in the structural_svm_problem object. + - Some objects were setup as multi-implementation objects but only had one + implementation. I went through dlib and switched these to single implementation + objects. So for example, to use the dlib crc32 module you used to declare an + object of type "crc32::kernel_1a" but now you can just say "crc32". Note that + I did this change in a way that maintains backwards compatibility with previous + versions. So crc32::kernel_1a is still allowed but that form is officially + deprecated. The modified objects are as follows: + - base64 + - byte_orderer + - config_reader + - crc32 + - pipe + - rand + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.37" date="Mar 24, 2011"> +New Features: + - Added a multiclass support vector machine. + - Added a tool for solving the optimization problem associated with + structural support vector machines. + - Added new functions for dealing with sparse vectors: add_to(), + subtract_from(), max_index_plus_one(), fix_nonzero_indexing(), a + more flexible dot(), and I renamed assign_dense_to_sparse() to assign() + and made it more flexible. + +Non-Backwards Compatible Changes: + - Renamed max_index_value_plus_one() (a function for working with graphs) to + max_index_plus_one() so that it uses the same name as the essentially + identical function for working with sparse vectors. + - I simplified the cross_validate_multiclass_trainer(), cross_validate_trainer(), + test_binary_decision_function(), and test_multiclass_decision_function() + routines. They now always return double matrices regardless of any other + consideration. This only breaks previous code if you had been assigning + the result into a float or long double matrix. + - Renamed assign_dense_to_sparse() to assign() + +Bug fixes: + - Fixed a bug in load_libsvm_formatted_data(). I had forgotten to clear the + contents of the labels output vector before adding the loaded label data. + - Fixed a bug in the kernel_matrix() function. It didn't compile when used + with sparse samples which were of type std::vector<std::pair<> >. + Moreover, some of the trainers have a dependency on kernel_matrix() so this + fix makes those trainers also work with this kind of sparse sample. + +Other: + - Added a value_type typedef to matrix_exp so it's easier to write templates + which operate on STL containers and matrix objects. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.36" date="Mar 2, 2011"> +New Features: + - Added an implementation of the Hungarian algorithm for solving the optimal + assignment problem (in the new max_cost_assignment() routine). + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a problem which prevented the any_function unit test from compiling + in visual studio 2008. + +Other: + - Changed the oca optimizer so that it warm starts the QP subproblem + rather than resolving it from scratch during each iteration. This + improves the speed and stability of the algorithm. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.35" date="Feb 10, 2011"> +New Features: + - Added the rr_trainer. It is a version of krr_trainer which is optimized + for use with the linear_kernel. + - Added the approximate_distance_function() routine. It is the core optimizer + behind the reduced2() trainer adapter. + - Added an any_function which supports the same functionality as std::function + from the upcoming C++0x standard. I added this so dlib can be modified to + easily support lambda functions while still being compilable with compilers + which don't support the new std::function. + - Added overloads of all the GUI event handlers so you can use general functions + as callbacks (via any_function). This way, if you have a C++0x compiler, you + can use lambda functions with the event handlers. + - Added the split() function for splitting up strings. + +Non-Backwards Compatible Changes: + - Improved the distance_function object by turning it into a properly + encapsulated class rather than just a simple struct. I also added + overloaded +, -, *, and / operators for this object so you can do the + kind of arithmetic you would expect on an object which represents a + point in a vector space. This breaks backwards compatibility with + the previous interface though as the member variables are now private. + +Bug fixes: + - Fixed a compile-time error in the kernel_matrix(). + - Fixed a bug in an assert in the spatially_filter_image() function. + - Applied a patch from Nils Labugt which fixes a runtime bug in the gui_core + component. The bug caused a crash when using X11 and Ubuntu 10.10 in + certain cases. + - Updated code so that it compiles with the clang compiler. + +Other: + - Updated the image_display widget so you can zoom in and out using the + mouse wheel. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.34" date="Jan 03, 2011"> +New Features: + - General Stuff + - Added the promote template + - Added the basic_type template + - Added the assign_image_scaled() function + - Added the unordered_pair object. + - Added the symmetric_matrix_cache() function + - Added two new quadratic program solvers. The solve_qp2_using_smo + and solve_qp3_using_smo objects. + + - Machine Learning Stuff + - Added the svm_c_trainer object. It implements C-SVM classification and + allows the user to set different C values for each class. + - Added the svm_one_class_trainer object. + - Added the svr_trainer object. It implements epsilon-insensitive + support vector regression. + - Added two new any objects. The any_decision_function for containing + decision function style objects and the any_trainer for trainers. + - Added cross_validate_regression_trainer() + - Added test_regression_function() + - Added the probabilistic() function. It is a trainer adapter that + simply calls train_probabilistic_decision_function(). + - Added tools for multiclass classification + - Added one_vs_one_trainer + - Added one_vs_all_trainer + - Added cross_validate_multiclass_trainer() + - Added test_multiclass_decision_function() + +Non-Backwards Compatible Changes: + - invalid_svm_nu_error has been renamed to invalid_nu_error. + - Changed the pixel_traits so that signed grayscale pixel types are allowed. + This involved adding a few new fields to pixel_traits. I also changed the + get_pixel_intensity() function so that its return value is of the same type + as the basic pixel type rather than always being unsigned long. + - Removed the kernel_type typedef from the normalized function since this + meta-object should be capable of working with non-kernel decision functions. + - train_probabilistic_decision_function() no longer accepts column vectors of + samples and labels. Now it only accepts std::vectors of samples and labels. + +Bug fixes: + - Fixed a bug in the deserialization code for the sparse kernels. The bug + prevented code which used the deserialize() routine from compiling. + +Other: + - Changed the image display GUI widgets to use the assign_image_scaled() + function internally. Now they will accept just about any image and + do the right thing. + - Modified the type_safe_union so that you can call apply_to_contents() on const + type_safe_unions. + - Added serialization support for std::pair objects. + - Made the train_probabilistic_decision_function() more general by making it work + with any kind of trainer object rather than only ones which produce + dlib::decision_function objects. I also made it work with trainers that only + take std::vectors. + - Added overloads to the config_reader's methods to allow it to load directly + from a file name given as a string in addition to taking istream objects. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.33" date="Dec 05, 2010"> +New Features: + - Added the ability to add/subtract scalar values to/from all the elements + of a matrix using the - and + operators. + - Added a trust region optimizer. + - Added Levenberg-Marquardt and LM/quasi-newton hybrid methods for solving + non-linear least squares problems. + - Added an any container object. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a compiler warning and also a runtime bug in sort_basis_vectors(). + The bug triggered when all the basis vectors were included in the final + answer. + +Other: + - Added a bunch of overloads to catch operations on diagonal matrices + and use more efficient code paths for them. For example, inv(diagm(d)) + turns into diagm(reciprocal(d)). Multiplication by a diagonal matrix + is now also handled efficiently. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.32" date="Nov 13, 2010"> +New Features: + - Added a class for reading JPEG image files. + - Added scale_rows(), flipud() and fliplr() matrix functions. + - Added console_progress_indicator. It is a tool for measuring how long a + task will take. + - Added sort_basis_vectors(). It is a function for performing supervised + basis selection. + +Non-Backwards Compatible Changes: + - Renamed the linearly_independent_subset_finder's dictionary_size() member + function to size(). This way, linearly_independent_subset_finder objects + can be used in many templated functions which expect objects which look + like arrays. + +Bug fixes: + - Changed the assert macros so that they don't use __PRETTY_FUNCTION__ + with gcc 4.4.5 since, on Ubuntu at least, this version of gcc segfaults + when __PRETTY_FUNCTION__ is used within certain template constructs. + - Improved the alias detection capability of kernel_matrix() expressions. + Now statements of the form: sample = kernel_matrix(kern, *, sample) can + be used since the aliasing of sample will be handled. + +Other: + - Generally tried to make things more usable. + - Optimized matrix expressions such as mat*diagm(vect) + - Made the code in chol() more robust to indefinite matrices. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.31" date="Sep 15, 2010"> +New Features: + - Added the running_scalar_covariance object. + - All the matrix decomposition routines now use LAPACK when DLIB_USE_LAPACK + is #defined. + +Non-Backwards Compatible Changes: + - Removed the dlib::EOTHER constant since it conflicts with visual + studio 2010. + - Changed the svd functions so you can't supply output matrices which use + both column and row major layouts. Now all the output matrices need to + use the same memory layout. + - Removed the qr_decomposition::get_householder() function. + +Bug fixes: + - Minor fixes so that dlib compiles in Visual Studio 2010 + +Other: + - Added an overloaded matrix_assign() that handles symmetric kernel_matrix() + expressions more efficiently by only evaluating the upper triangular part + of the matrix. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.30" date="Jul 28, 2010"> +New Features: + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a compile-time bug in the matrix related to multiplication by + subm() expressions when the BLAS bindings were enabled. + - Fixed a bug in train_probabilistic_decision_function() which could + cause it to go into an infinite loop when working with very large + datasets. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.29" date="Jul 25, 2010"> +New Features: + - Added a reference_wrapper implementation and modified the thread_function + slightly so it works with it. + - Added an implementation of kernel ridge regression. + - Added a simple newton search strategy for optimizing functions. + +Non-Backwards Compatible Changes: + - If you have created your own matrix expressions then its possible this + new release will cause them to not compile. + +Bug fixes: + - Fixed a bug in scale_columns. It said it didn't have any destructive aliasing + when in fact it destructively aliased its second argument. + - Fixed a bug in the random number generator where setting the seed back to "" + didn't result in the object going back to its initial state. + +Other: + - Reorganized the matrix expression code. It's now much simpler and the + library includes a new example program which details the steps needed to + create new matrix expressions. + - Changed the train_probabilistic_decision_function() routine so that it uses + a more numerically stable method to perform its maximum likelihood optimization. + - Added missing get/set epsilon functions to the RVM training objects. + I also changed the default epsilon from 0.0005 to 0.001. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.28" date="Jun 14, 2010"> +New Features: + - Added the simplify_linear_decision_function() routines. + - Added the find_approximate_k_nearest_neighbors() function. + - Added the fill_lisf() function. + +Non-Backwards Compatible Changes: + - Made the sample_pair have a default distance of infinity instead of + the max floating point value. I also reworked the graph creation functions + to make them a little more versatile. Now you can use infinite distances to + indicate that certain nodes are not connected at all. + - Changed the linear_manifold_regularizer to normalize the regularization + parameter by the sum of edge weights instead of the sum of edges. + +Bug fixes: + - Fixed a bug in the timer_kernel_2 object. In certain rare cases it would + stop calling the action function and essentially shut down without being + told to do so. + +Other: + - Made the reduced() and reduced2() functions more efficient. + - Many small usability improvements here and there. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.27" date="May 16, 2010"> +New Features: + - Added the svm_c_ekm_trainer. It is a kernelized version of the fast + linear trainer svm_c_linear_trainer. + - Added the linear_manifold_regularizer and some supporting tools. + - Added the sum_rows(), sum_cols(), join_rows(), join_cols(), reshape(), + and pointer_to_matrix() functions. + - Added the randomly_subsample() function. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed some minor compile time bugs on certain older compilers. + +Other: + - Updated the += and -= matrix operators to be a little more flexible. Now + if you try to apply them to a matrix of the wrong size it will automatically + resize the target matrix and just do a normal assignment. + - Removed the requirement that you load dng files into an image of the exact + pixel type that created the file. Now you can use any pixel type. I also + changed the code so that grayscale pixels with more than 16 bits get saved as + 16 bit grayscale images instead of 8 bit images. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.26" date="Mar 07, 2010"> +New Features: + - Added the solve_qp_using_smo() function to solve certain quadratic + programs. + - Added the oca object. It is an implementation of the Optimized Cutting + Plane Algorithm. + - Added a linear SVM trainer that uses oca. + - Added an implementation of the Histogram of Oriented Gradients algorithm + - Added a simple tool for making image pyramids + - Added the running_covariance object + - Added a simple linear (i.e. non-kernelized) kmeans implementation + - Added support for serializing dlib::int64 + - Added some functions to load and save LIBSVM formatted data files. + +Non-Backwards Compatible Changes: + - Changed the definition of dlib's sparse vector format to require + unsigned integral keys. Having this requirement is nice because it + creates a simple correspondence between dense vector index values and + sparse vector keys. The previous sparse vector definition was + excessively generic. + - Renamed sparse_vector::dot_product() to sparse_vector::dot() so that + both dense and sparse vectors have a global function with the same + name (i.e. dot()). + +Bug fixes: + - Fixed a bug discovered by Mitchell Peabody. In some instances trying to + deserialize a std::vector would fail to compile. + +Other: + - Increased the number of template arguments of the type_safe_union from 10 + to 20. Additionally, I made the get_id() function public and renamed it + to get_type_id(). I also added a comment explaining the serialization + format of type_safe_union objects. + - Moved the optimization algorithms into their own page in the documentation. + - Added a Suggested Books page to the documentation + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.25" date="Feb 05, 2010"> +New Features: + - Added the ability to compute transformation matrices that map between + the representations used by different empirical_kernel_maps. Also added + the ability to compute projection error. + - Added the random_subset_selector object. + - Added the compute_mean_squared_distance() function. + +Non-Backwards Compatible Changes: + - Modified the logger's hook implementation so that it uses a special stream + buffer instead of an std::ostringstream. This way logging doesn't cause + memory allocations. This breaks backwards compatibility with the previous + hook function API but only slightly. The new hook functions must take a + const char* instead of std::string. + - Added the const_ret_type typedef to the matrix_exp. It is now required that + all matrix expressions define this type. This enables the expressions to + return elements by constant reference when appropriate rather than always + returning by value. + +Bug fixes: + - Fixed a bug in the matrix BLAS bindings that caused BLAS to return an invalid + argument error. The error occurred when general matrix multiply expressions + were transposed and didn't result in a square matrix. E.g. mat = trans(a*b) + where mat isn't square. + - Fixed potential compile time bugs in the comparison operators for futures. + - Added a missing check for division by zero in the SURF feature extractor. + - Modified the find_min_single_variable() function so that it is more + robust when working with functions that are made up of a bunch of + constant value strips. Previously, these kinds of functions could + cause the optimization to fail. + +Other: + - Changed the regression test suite so that when it sets the logging level + it now sets it for all loggers. Not just ones that start with "test." + + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.24" date="Jan 04, 2010"> +New Features: + - Added some MATLAB style thresholding relational operators to the matrix. + - Added the kernel_matrix() functions. + - Added the empirical_kernel_map object. + - Added the discriminant_pca object. + - Added the read_write_mutex object. + +Non-Backwards Compatible Changes: + - Renamed the support_vectors member of the decision_function and + distance_function classes to basis_vectors. This name more appropriately + reflects how these two classes are used within the library. + - Changed the matrix_exp interface slightly. This could only impact users + who created their own custom matrix expressions. If you don't get a + compiler error then you don't have to worry about it. + +Bug fixes: + - Fixed a minor error in the LBFGS code. + - Added a missing check for division by zero to the kcentroid, krls, + and linearly_independent_subset_finder classes. If someone added + the zero vector to them as the first training example a division by zero + could result. + - There were a few cases where the code wouldn't compile when using + matrices of complex numbers. There was also a runtime bug that triggered + when a rank 1 update was performed where one of the vectors was conjugated + and two or more transposes were used in certain positions. This bug + caused the wrong output to be computed if the BLAS bindings were used. + Both of these bugs have been fixed. + - Fixed a bug in the http server that affected cookies with certain kinds of + data. The result was invalid data being sent back to the web browser. + +Other: + - Generally improved the BLAS bindings for the matrix object. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.23" date="Oct 20, 2009"> +New Features: + - Added the pointer_to_column_vector function. + - Added the BOBYQA algorithm for derivative-free optimization. + - Added some functions to make it easy to do a line search on a function + of a single variable when derivatives are not available. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug in the cpp pretty printer. It wasn't parsing + exponentiated numbers like 1e100 correctly. + +Other: + - Added a model selection example program using grid search + and the new BOBYQA algorithm. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.22" date="Sep 10, 2009"> +New Features: + - Added an implementation of the L-BFGS algorithm for unconstrained non-linear + optimization. + +Non-Backwards Compatible Changes: + - Refactored the optimization code. It is now much more flexible but + this resulted in changes to the API. See the optimization example program + for a discussion of the new API. + +Bug fixes: + - Fixed a bug in the get_filesystem_roots() roots function that + prevented it from compiling. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.21" date="Aug 30, 2009"> +New Features: + - Added the ability to use a kernel cache to the batch_trainer object. + - svm_pegasos can now be configured to use two different lambda arguments + for use with unbalanced data. + - Added the reciprocal_max() and dot() matrix functions. + - Added the bgr_pixel and cv_image objects so that OpenCV images can + be easily used with dlib routines. + +Non-Backwards Compatible Changes: + - I changed the batch trainers so that they always call clear() on the + trainer being used before training begins. + - Modified the svm_pegasos class so that the user can set independent lambda + parameters for each class. This breaks backwards compatibility with + the previous interface slightly and changes the serialization format + of this class. + - Split the vector_normalizer into a normal normalizer and a pca normalizer + version. + - The zoomable_region widget now uses exponential rather than linear + zoom scaling since this is much more pleasing to use. There is now + a new requirement on the zoom increment that it must be between 0 + and 1. + +Bug fixes: + - Fixed a bug in the cross_validate_trainer_threaded() function. It could + deadlock if more than about 10 folds were requested. + - Fixed the serialization functions for the normalized_function object. + They will now work with custom normalizer function objects. + - Fixed a minor bug in the zoomable_region::set_min_zoom_scale() function. + It didn't always end up zooming in a smooth sensible manner after this + function was called. + +Other: + - Made the thread_function object more general. It can now handle + arbitrary functions of up to four arguments. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.20" date="Jul 11, 2009"> +New Features: + - Added the reshape_to_column_vector() function. + - Added a hook to the logger object that lets you set a different kind of + output logging destination (in addition to the std::ostream supported + already). + - Upgraded the scoped_ptr so that it can handle array pointers as well + as customer deleter functions. + - Added overloads of the kernel_derivative object for all the kernels + in dlib. + +Non-Backwards Compatible Changes: + - Reworked the config_reader interface a little to make it easier to use. + In particular, I removed the enumerator over blocks in favor of a simple + get_blocks() function that just returns a std::vector of all the blocks. + I also removed the requires clauses on the block and key accessor functions + and instead made a request for a non-existent key/block result in a non-fatal + exception. This way users can let the config reader perform a more natural + role in config file validation (by catching this exception and acting + accordingly). + - It is now illegal to multiply matrices of size zero together. + +Bug fixes: + - Fixed the gaussian() function used by the SURF code. It wasn't computing + a properly weighted Gaussian function. + - Fixed a few things in various parts of the code to avoid compiler errors + in certain use-cases. + - Added a missing rethrow statement. The xml parser would eat exceptions + thrown by event handlers rather than letting them propagate out as + documented in the specification. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.19" date="May 25, 2009"> +New Features: + - Added an implementation of the SURF algorithm which includes the + following new objects and functions: integral_image, hessian_pyramid, + interest_point, surf_point, compute_dominant_angle(), + compute_surf_descriptor(), haar_x(), haar_y(), get_interest_points(), + and get_surf_points(). + - Added the zeros_matrix() and ones_matrix() functions. + - Added serialization support to the type_safe_union object. + - Added the grow_rect() and shrink_rect() functions. + - Added the get_files_in_directory_tree() function. + - Added the null_trainer_type object. + - Added the roc_trainer_type object. + +Non-Backwards Compatible Changes: + - Removed some extraneous get_kernel() functions from some of the + trainer adapter classes since they really aren't needed. + +Bug fixes: + - Changed the socket read/write code so that it can handle a large + number ( > 2 billion) of bytes in I/O calls. + - Added a missing type cast to the reciprocal() function to fix a compile + time error you get when you use it with complex<float> type matrices. + - Fixed a bug in the assign_border_pixels() and zero_border_pixels() functions. + Their contracts said there was no upper limit on the size of the border that + could be assigned/zeroed but the implementations failed to handle the case + where the border was bigger than the image. + +Other: + - Generally cleaned up the code and documentation here and there. + - Added in Steven Van Ingelgem's patches to improve the usability of the + HTTP server object. + - Updated the load_bmp() function so that it is capable of reading BMP + files that have been compressed with the RLE compression sometimes + used for 8bit BMP files. + - Merged in Miguel Grinberg's patch to add a non-blocking read() function to the + connection object. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.18" date="Apr 5, 2009"> +New Features: + - Added a set of kernels that can operate on sparse vectors. + - Added the image_window and image_display objects. + - Added the rotate_point() function and the point_rotator object. + +Non-Backwards Compatible Changes: + - Added Steven Van Ingelgem's patch to add the body of data posted + back to the server into the incoming data object given to the + server_http::on_request() handler. This removes the content_length + field and replaces it with a string that contains the body of content + data. + +Bug fixes: + - Fixed a compile time bug in the offset_kernel. + +Other: + - Added optimized overloads of the kcentroid object for various + linear kernels. + - Changed all the tests in the dlib test suite to use a new DLIB_TEST + macro instead of DLIB_CASSERT since the tests really aren't + technically assertions + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.17" date="Mar 16, 2009"> +New Features: + - Added the strings_equal_ignore_case() functions + +Non-Backwards Compatible Changes: + - Changed the on_request() function in the http server + - Changed the serialization format of the kcentroid and svm_pegasos + objects + - By default, the kcentroid now keeps the most linearly independent + dictionary vectors rather than the newest + +Bug fixes: + +Other: + - Split the algorithms documentation page into three pages, algorithms, + machine learning, and bayes nets. + - Merged in Steven Van Ingelgem's patch to cleanup the HTTP server and + add new functionality. This breaks backwards compatibility with the + previous on_request() interface but it is easy to update old code and + it is now much cleaner and easier to use. + - Changed the kcentroid so that you can tell it to keep the most linearly + independent vectors rather than the newest vectors. I then changed the + svm_pegasos object so that it has a max number of support vector setting + so that the user can supply an upper limit on the number of support + vectors to use. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.16" date="Mar 08, 2009"> +New Features: + - Matrix related + - Added the find_min_and_max(), index_of_min(), index_of_max(), trace(), + randm(), linspace(), logspace(), and cartesian_product() functions. + - Machine learning related + - Added the offset_kernel + - Added some functions to the kcentroid to allow the user to compute + the inner_product of kcentroids as well as a few other useful things. + - Added a kernelized version of the Pegasos SVM training algorithm. + +Non-Backwards Compatible Changes: + - Changed the range() function so that it returns row vectors + instead of column vectors. + +Bug fixes: + - Changed threading code to avoid a potential race condition during + program termination. + - Fixed a few incorrect DLIB_ASSERT statements + - Fixed a bug in the way Content-type was handled in HTTP posts. + - Fixed a bug in subm() that showed up when statically dimensioned row + vectors were used to select a sub matrix. + +Other: + - Added some functions to the rectangle to make it easy + to get the corner points. + - The cross validation functions no longer allow invalid_svm_nu_error + exceptions to escape. Instead, they are assigned low CV scores. + - Made std_vector_c able to copy directly from std::vector objects. + - Added a get_socket_descriptor() function to the connection class. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.15" date="Feb 03, 2009"> +New Features: + - Matrix related + - Added QR, LU, Cholesky, and eigenvalue decomposition class objects + - Added overloads for rowm() and colm() that allow you to pick out + less than an entire vector + - Added the lowerm() and upperm() functions + - Added the const_temp_matrix class + +Non-Backwards Compatible Changes: + - Renamed the cholesky_decomposition() function to chol() + +Bug fixes: + - Fixed some errors in the requirements for calling the new rowm() and + colm() functions. + - Fixed dlib::abs() so that it returns the right type when used + with complex matrices. + - Fixed a race condition in the logger object. It was missing a needed call + to unregister_thread_end_handler(). What could happen in some scenarios is, + during program termination, a global part of the logger object could be destructed + when it still had outstanding thread end handlers registered to it. + +Other: + - Added an example program that shows how to use the optimization + functions. + - Gave the matrix object the ability to factor expressions containing + trans() function calls into more efficient forms. + - Generally cleaned up the matrix code +</old> + +<!-- ******************************************************************************* --> + +<old name="17.14" date="Jan 18, 2009"> +New Features: + - Added the multi-line text_box GUI widget. + - Added the type_safe_union object + +Non-Backwards Compatible Changes: + - Renamed the array::expand() function to array::resize() since it does + basically the same thing as std::vector::resize() and more than one + user has told me they found the name "expand" to be confusing. + +Bug fixes: + +Other: + - Added an example showing how to use the type_safe_union and pipe + together. + - Added a page to the documentation that discusses the dlib coding + standards and how to contribute to the project. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.13" date="Jan 05, 2009"> +New Features: + - Added the bound_function_pointer object. + - Added support for futures to the thread_pool object. + - Added a set of objects that makes it possible to create simulations + of quantum computing algorithms. + - Added copy and paste support to the text_field. + - matrix object stuff + - Added the range() function as well as overloads of all the various + sub-matrix selection functions so that you can pick out slices of + matrices like in Matlab. + - Added a new template argument to the matrix object that allows the + user to select the memory layout. Also added a row_major_layout + and column_major_layout. + - The matrix object can now be initialized using a comma separated + list of values. + +Non-Backwards Compatible Changes: + - Changed the fatal_error exception class so that it aborts your program + and prints a message if you try to construct it more than once since + doing so indicates that you ignored the first fatal error. + - The way matrix expressions work in the library has been changed + since the last release. So if you created custom matrix expressions + then they will need to be updated to use the new matrix expression stuff. + +Bug fixes: + - Fixed a minor bug in how the zoomable_region widget drew itself after + a resize in some cases. + - Fixed a problem with draw_line where it didn't always redraw the line + properly. + +Other: + - A lot of the matrix code has been refactored and optimized. The matrix + object will now introduce temporary objects when doing so results in + better performance. I also added a simple system for binding + arbitrary matrix expressions to optimized BLAS routines. + - Cleaned up the vector and point classes. Now there is only one class, + the vector class, and it is capable of representing everything the old + vector and point class could. I also added code to make sure the + vector class does the appropriate type promotions when vector objects + with different types are used together. + - Made the vector class inherit from matrix +</old> + +<!-- ******************************************************************************* --> + +<old name="17.12" date="Nov 10, 2008"> +New Features: + - Added user settable styles to most of the gui widgets + - Added the diagm(), svd2() and svd3() matrix functions + - Added the thread_pool object + +Non-Backwards Compatible Changes: + - Removed the arrow_button widget and moved its functionality into the + button widget. + - Renamed the dragable class to draggable + - Removed the confusing and unnecessary hidden bool argument to the + gui widget style drawing functions. + - Changed some of the events that are about the mouse leaving a widget so + that they still trigger even if the widget has been disabled or hidden. + +Bug fixes: + - Added some missing mutex locks to the scroll_bar widget + - Fixed a bug in the fill_gradient_rounded() function. It didn't always + draw the entire rectangle. + - Fixed a compile time bug in the pinv() function. It didn't compile + when used on statically sized matrices when they weren't square. + +Other: + - The member_function_pointer object now never calls new or delete. + So it is safe to use in a real time environment. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.11" date="Oct 20, 2008"> +New Features: + - Added the sort_columns() and rsort_columns() functions + - Added the vector_normalizer object + - Added the normalized_function object. + - Added a tensor_product() function for the matrix object. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Made it so that the gui event handler thread isn't created at all + unless some part of an application calls some of the gui_core code. + In the previous release the event handler thread was executed + briefly during program termination and could cause problems if no + windowing environment was available. + - Fixed an #include statement in the matrix utilities so that it works + even if you don't specify an include path argument to your compiler. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.10" date="Oct 09, 2008"> +New Features: + - Added a thread safe shared pointer object + - Added the popup_menu_region widget. + +Non-Backwards Compatible Changes: + - The on_wheel_up() and on_wheel_down() gui events now take an unsigned long + argument. + - Removed the register_program_ending_handler() function from the threading + API and also changed the dlib thread pool so that it no longer causes + a terminating program to wait for any outstanding threads to finish + before allowing the application to end. + - Changed the serialization format of the linearly_independent_subset_finder + class. + - Changed all the font pointers in the gui API's interfaces + to shared_ptr_thread_safe objects. + +Bug fixes: + - Made the kkmeans class actually use the min_change parameter. + - Fixed a bug in the linearly_independent_subset_finder object. Also + added a way to set a minimum tolerance. + - Fixed a bug in the scrollable_region widget that caused it to scroll in an + unpleasant way when the horizontal and vertical scroll increments weren't + set to the same value. + - Made one of the arguments to font::draw_string() not be a reference because + some versions of gcc don't end up doing the right thing when -O3 is + supplied. + - Fixed a bug in the covariance() function that prevented it from compiling + sometimes. + +Other: + - Changed the gui core code around so that it should be safe to make window + objects at the global scope. + - Added more control over how the scrollable_region scrolls its region. + You can now adjust how much it scrolls when the mouse wheel is scrolled + as well as enabling scrolling via a mouse drag. + - Modified the library so that it compiles with the Intel compiler. + - Added some example programs that use the relevance vector machine + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.9" date="Sep 06, 2008"> +New Features: + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug in the tooltip widget + - Fixed the cmake option to toggle the ENABLE_ASSERTS macro + - Fixed some bugs in the rvm + - Fixed the serialization code for the kkmeans object so that it actually + works + - Fixed a bug that can trigger when the thread_specific_data object is + destructed + - Fixed a bug in the directory navigation gui. If you tried to go + into a drive on windows that wasn't mounted you got an error. + This is now fixed. + +Other: + - Made the dir_nav stuff work with std::vector and dlib::std_vector_c + as well as dlib::queue objects. + - Generally cleaned up a bunch of things + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.8" date="Aug 14, 2008"> +New Features: + - Added relevance vector machine regression and classification support. + - Added the cross_validate_trainer_threaded() function + - Added the length and length_squared matrix functions. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Changed gui code a little so that windows don't popup in funny + places when used with the cygwin X windows system. + +Other: + - Made it easier to use the scoped_ptr with the TCP connection object + - Optimized the matrix object a little + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.7" date="Jul 25, 2008"> +New Features: + - Machine Learning + - Added the ability to compare kcentroid objects to each other + - Added the rank_features() function + - Added the distance_function object + - Added the reduced_decision_function_trainer object and + reduced() function + - Added the reduced_decision_function_trainer2 object and + reduced2() function + - Added a radial basis function network trainer + - Added the linearly_independent_subset_finder object + - Added the sigmoid_kernel + - Matrix Utilities + - Added the inv_upper_triangular() and inv_upper_triangular() + functions. + +Non-Backwards Compatible Changes: + - Refactored a bunch of the kernel learning code into a much cleaner form. + But this does change the interface to all the training functions. + +Bug fixes: + - Fixed a bug in the min and max calculation in the running_stats object + - Removed a bug in the sum() and variance() functions that + caused them to seg fault when they were used on certain + matrix of matrix objects. + - Added a missing check for division by zero to the conjugate gradient + optimization functions. + - Added some missing member variables to the .swap and serialization + functions for the kcentroid object. So now they should work right. + +Other: + - Added an option to the cmake file to toggle the DLIB_ASSERT macro + - Added an option to the cmake file to toggle the dlib stack trace macros + - Made the library compile in Cygwin + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.6" date="Jun 22, 2008"> +New Features: + - Merged in Keita Mochizuki's unicode patches to the GUI components. So + the dlib GUI now has better unicode support. + - Added the remove_row and remove_col matrix functions. Also made all + three of the above functions capable of taking arguments at run time + as well as compile time. + - Added the ability to cap the number of dictionary vectors used by the krls + and kcentroid object at a user specified number. + - Added the pick_initial_centers() function + - Added the running_stats object + +Non-Backwards Compatible Changes: + - Changed the interface to the krls and kcentroid objects somewhat. + - All of the style objects in the GUI part of the library now use + dlib::ustring instead of std::string. This only matters to you if + you have made your own style objects. + - Changed the serialization format of the krls, kcentroid, and + directed_graph_drawer objects. Note that is also means that the + files saved by previous versions of the bayes_net_gui_ex program + won't load with the current version. + +Bug fixes: + - Fixed an aliasing bug in the set_subm(), set_rowm(), and set_colm() + functions. It was possible that you could get incorrect results + if you used these functions to copy one part of a matrix to another + part of the same matrix if the two areas overlapped. + - Fixed a minor numerical error in the krls code so now it gets slightly + better results. + +Other: + - Made the types generated by the matrix operations a lot shorter. This + avoids some compiler warnings from visual studio and even some potential + internal compiler errors in some instances. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.5" date="Jun 2, 2008"> +New Features: + - Added some macros that allow dlib to create a stack trace + - Added the wrap_function and is_function templates. + - Added two new events to the text_field object. One for detecting when the + user hits enter and another for detecting when input focus is lost. + - Machine Learning + - Added a kernel based centroid estimator/novelty detector + - Added a kernel based k-means clustering algorithm + - Numerical + - Added an identity_matrix() function that can take a runtime defined size. + - Added a bunch of unconstrained optimization stuff to the library. + It now has a conjugate gradient optimization algorithm as well as + a quasi-newton algorithm. + - Added the set_subm, set_rowm, and set_colm functions. + +Non-Backwards Compatible Changes: + - In the krls object: Added a requires clause to the set_tolerance() member + function and renamed clear() to clear_dictionary(). + +Bug fixes: + - Fixed a bug in the requires clause of the subm() function. It was + more restrictive than it should have been. + +Other: + - Added example programs for the krls object as well as the new + kcentroid and kkmeans objects. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.4" date="May 12, 2008"> +New Features: + - Added an implementation of the kernel recursive least squares algorithm + +Non-Backwards Compatible Changes: + - Broke backwards compatibility in the directed_graph_drawer's serialization + format when I fixed the bug below. + +Bug fixes: + - Fixed two bugs in the directed_graph_drawer widget. First, it sometimes + threw a dlib::fatal_error due to a race condition. Second, the color of + the nodes wasn't being serialized when save_graph() was called. + - Made vector_to_matrix() work for std::vector objects that have non-default + allocators. + +Other: + - Added some stuff to make people get a really obvious error message + when they set up the include path incorrectly. + +</old> + +<!-- ******************************************************************************* --> + +<old name="17.3" date="Apr 28, 2008"> +New Features: + - Added the vector_to_matrix() function. + - Added a cholesky_decomposition() function. + - Added the toggle_button GUI widget + - Added a default toggle button style as well as check box and + radio button styles. + - Added a single click event to list_box + - Added a save_file_box() and open_existing_file_box() function. + +Non-Backwards Compatible Changes: + - Changed the check_box and radio_button widgets to be specializations of + the new toggle_button object. This is a nearly backwards compatible + change except that the events registered to check_box and radio_button + clicks must now take the form void event(toggle_button&) or + void event(void) instead of the previous void event(check_box&) and + void event(radio_button&). + - Removed the is_mouse_over bool from the button_style::draw_button() + function. + +Bug fixes: + - Fixed a compiler error in mingw. + - Changed the preprocessor checks for the wchar_t overload of + is_built_in_scalar_type so that it works properly with visual studio. + +Other: + - Added a Bayesian Network GUI that allows you to create a network + and serialize it to disk. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.2" date="Apr 21, 2008"> +New Features: + - GUI Related + - Added the scrollable_region widget + - Added the text_grid widget + - Added an event to the text_field so you can tell when the + user modifies it. + - Added the fit_to_contents() function to the tabbed_display + widget. + - Bayesian Network Related + - Added the node_first_parent_assignment(), node_next_parent_assignment(), + and node_cpt_filled_out() functions. + +Non-Backwards Compatible Changes: + - Reverted the change in 17.0 where I made drawable::lastx and + drawable::lasty not match the current location of the mouse inside + the on_mouse_move() event. I changed this back to how it was before, + so now lastx and lasty represent the most current record of where + the mouse is in *all* events. + - Changed the functions that control text color in the label and text_field + widgets to use rgb_pixel objects. Also added a function to set the + background color of a text_field. + +Bug fixes: + - Fixed a bug in the bayesian_network_join_tree object that caused it to + compute incorrect results for some networks. + - GUI Related + - Fixed a minor bug in the cursor drawing of the text_field + gui widget. + - Fixed a bug in the compute_cursor_rect() function. It would return an + incorrectly positioned rectangle for 0 length strings. + - Changed the way wchar_t is handled in the serialize.h file. Now + everything should compile correctly in visual studio regardless of how + you set the /Zc:wchar_t compiler option. + - Fixed a bug in the menu_bar widget. One of the members wasn't being + initialized when it needed to be. + - Fixed a bug in the tabbed_display where it didn't redraw itself + correctly after it was moved by set_pos() + +Other: + - Changed the xml parser so that it counts line numbers + from the start of the input stream instead of from the + root tag. + - Changed the xml parser so that you will only get the fatal_error + event once if it occurs. +</old> + +<!-- ******************************************************************************* --> + +<old name="17.1" date="Apr 13, 2008"> +New Features: + - Added a zoomable_region widget + - Added a directed_graph_drawer widget + +Non-Backwards Compatible Changes: + - Changed the first_pixel argument of the draw_string() function + to be a rectangle like all the other draw functions now use. + +Bug fixes: + - Fixed a bug in the tooltip widget that was triggered when calling + its member functions without calling set_tooltip_text(). This also + fixed a bug in the button object that triggered when calling some button + functions that referenced the tooltip widget. + - Fixed a problem in the draw_circle and draw_solid_circle functions. + They didn't draw themselves quite correctly in all cases. + +Other: +</old> + +<!-- ******************************************************************************* --> + +<old name="17.0" date="Apr 07, 2008"> +New Features: + - Added a png_loader object + - GUI related + - Added a popup_menu widget + - Added a menu_bar widget + - Added a tooltip widget + - Added a user selectable style to the gui button. + - Added the draw_rounded_rectangle() and fill_gradient_rounded() functions + - Added the mouse_over_event object to the base_widgets and made the + button_action inherit from it. + - Added the drawable::next_free_user_event_number() function + - matrix and geometry: + - Added a size() function to matrix_exp and matrix_ref objects. + - Added a class that represents 2D points + - Added the following matrix functions: + - squared(), cubed(), get_rect(), a subm() function that takes + rectangles, and normalize() + - Added the following rectangle functions: + - area(), centered_rect(), translate_rect(), move_rect(), resize_rect(), + resize_rect_height(), resize_rect_width(), and nearest_point() + +Non-Backwards Compatible Changes: + - Renamed atom() to array_to_matrix() + - Moved the rectangle object from the gui_core into a new geometry folder + (only matters if you were directly including the rectangle file) + - Moved the vector object into the geometry folder. Also removed the kernel_1a + stuff. So there is now only one possible vector implementation. + - Changed the default position for a rectangle to (0,0) instead of (1,1) + - Added edge data to the directed_graph. This breaks backwards compatibility + with the previous serialization format for directed_graphs. + - GUI related: + - Changed the base_window::on_keydown event signature so that it now + reports more keyboard modifier keys (e.g. alt) + - Made the functions for drawing on canvas objects take points and pixels + instead of just a bunch of integers. Also changed the order of the + arguments so that the canvas comes first, followed by the location + to draw on, then what to draw. + - Moved the canvas drawing functions into the gui_widgets/canvas_drawing.h + file. + - Modified the drawable_window so that the drawable::lastx and drawable::lasty + fields are updated after calls to on_mouse_move. This way the x and y that + go into the on_mouse_move actually tell you something. + +Bug fixes: + - Fixed a bug in the floating point serialization code. It + didn't handle NaN or infinities correctly. + - Fixed a bug in the win32 version of the gui_core component. It was + possible that calling set_size(), set_pos(), or set_title() could cause + the program to deadlock. + - Made the load_bmp() function more robust in the face of weirdly + written BMP files. + - Modified the draw_circle() and draw_solid_circle() functions so that they + only touch each canvas pixel once. This avoids messing up alpha blending + if an rgb_alpha_pixel is used. + +Other: + - Removed the old win32 only gui code in the dlib/gui folder. + - Changed the default GUI font to a nicer Sans Serif font +</old> + +<!-- ******************************************************************************* --> + +<old name="16.5" date="Mar 04, 2008"> +New Features: + - Added another constructor to the thread_function object. + Now it can take proper function objects as well as normal function + pointers. + - Added the probabilistic_decision_function object and svm_nu_train_prob() + function. + +Non-Backwards Compatible Changes: + - Changed the svm train functions so that the cache_size argument + now measures the max number of megabytes of memory to use rather + than number of kernel matrix rows to cache. It's default + value is now 200MB. + - changed the type typedef in the SVM kernel function objects to + be named sample_type instead of type. + +Bug fixes: + - Fixed a bug in the trim, rtrim, and ltrim functions. They + didn't return empty strings when the input string contained all + trim characters. + - Fixed a bug in the decision_function's copy constructor + +Other: + - Added an optimization to the working set selection for the svm training code. + Now the algorithm will prefer to select indices that are in the kernel + matrix cache when possible. + - Fixed a problem with the chm documentation file where many of the links + didn't work. + - Made the support vector functions capable of operating with floats, doubles, + and long doubles instead of just the double type. +</old> + +<!-- ******************************************************************************* --> + +<old name="16.4" date="Feb 22, 2008"> +New Features: + - Added aversion of the draw_line() function for images. + - Added the atom(), rowm(), colm(), and subm() matrix functions. + - Added some push/pop_back() functions to the array object that are similar + to the ones in the std::vector. + - Added the std_vector_c class that wraps std::vector and checks its + function's preconditions. + - Added the polynomial_kernel object for use with the svm algorithm. + +Non-Backwards Compatible Changes: + - Changed the svm_nu_cross_validate() function to return a vector + of both the +1 and -1 cross validation accuracies. + +Bug fixes: + - Fixed a bug in the list_box that caused it to not hide itself properly + when told to do so. + - Fixed canvas::fill() gui function so that it should work right + on 64 bit platforms. + +Other: +</old> + +<!-- ******************************************************************************* --> + +<old name="16.3" date="Feb 12, 2008"> +New Features: + - Added memory manager support to the matrix object. + +Non-Backwards Compatible Changes: + - Made the assign_pixel() function saturate grayscale values bigger + than the target pixel type can handle. Previously it would just + truncate the numbers. + - Removed rand_kernel_1 and rand_kernel_2 because they gave very + inferior results compared to rand_kernel_3. I then renamed + rand_kernel_3 to rand_kernel_1. + - Renamed rand::get_random_number() to get_random_8bit_number() and also + added a get_random_16bit_number() and get_random_32bit_number() + - Added a checksum to compress_stream_kernel_1 and kernel_2. This + breaks backwards compatibility with the previous versions. That is, + the new implementations will complain that decompression fails if + you give them data compressed with the old non-checksum version of + the compression routines. + - Removed the width() and height() functions from the array2d object. + Now only the equivalent nc() and nr() member functions remain. + - Changed array2d::set_size(width,height) to set_size(num_rows, num_cols). + That is, I switched the order of the two arguments to this function. + The reason for doing this is to make it have the same form as the + set_size() member of the matrix object. This way the usage of the + set_size() member for these two very similar data structures is + the same. Hopefully this will reduce confusion rather than + make things worse. + +Bug fixes: + - Fixed a bug in the image_widget. It didn't repaint the screen + all the way if you gave it a smaller image to display. + - Fixed a bug in the cat() function that caused the state of the queue + to be broken if you called cat with an empty queue. + - Made the queue_sort_1 use a better sorting algorithm. In particular, it + will not sort slowly for nearly sorted data. + - Fixed a bug in the queue_kernel_2 object that caused it to not work + correctly with the non-default memory managers. + +Other: + - Added example code for the member_function_pointer as well as the matrix + object. + - Added some more regression tests and made some of the longer running + ones execute a lot quicker. + - Made the unit test suite easier to use. Now tests just throw an exception + to indicate an error rather than returning an error code. + - Added an example program for the multi-layer perceptron neural network. +</old> + +<!-- ******************************************************************************* --> +<old name="16.2" date="Jan 25, 2008"> +New Features: + - Added the is_signed_type and is_unsigned_type templates + - Image Processing stuff + - Added the assign_all_pixels() function + - Added the assign_border_pixels() function + - Added the assign_pixel_intensity() function + - Added the auto_threshold_image() function + - Added the binary_union() function + - Added the edge_orientation() function + - Added the get_histogram() function + - Added the get_pixel_intensity() function + - Added the hysteresis_threshold() function + - Added the sobel_edge_detector() function + - Added the suppress_non_maximum_edges() function + - Added the zero_border_pixels() function + - Changed the pixel_traits structure so that it can support 8, 16, and 32 + bit grayscale pixels. + +Non-Backwards Compatible Changes: + - Added more fields to the pixel_traits template so if you had defined your + own pixel types you will need to update them. + +Bug fixes: + - Fixed some compiler errors in Visual Studio 2008 + +Other: + - Generally tried to clean up the documentation and code in this release + +</old> + +<!-- ******************************************************************************* --> + +<old name="16.1" date="Jan 1, 2008"> +New Features: + - Added the randomize_samples() function + - Added the set_main_font() and main_font() functions to the drawable object. + So now the drawable widgets can use a user provided font. + +Non-Backwards Compatible Changes: + - Made the named_rectangle object a little easier to use. It now won't + let you size it so small that it doesn't display its entire name. + +Bug fixes: + - Fixed a bug in the svm_nu_train() function that caused a crash with + some inputs. + - Fixed a compile time error that occurred when compiling the bayesian + network code in Mac OS X. + - Fixed a bug in the compute_cursor_pos() function where it would + return the incorrect value. + +Other: + - Added an example showing how to use the svm functions. + +</old> + +<!-- ******************************************************************************* --> + +<old name="16.0" date="Dec 10, 2007"> +New Features: + - Added the left_substr() and right_substr() functions + - Added the zero_extend_cast() function + - Added the unsigned_type template + - Added the uint8 typedef + - Bayesian Network related + - Added the assignment object + - Added the bayes_node object + - Added the joint_probability_table object + - Added the conditional_probability_table object + - Added the bayesian_network_gibbs_sampler object + This object implements an algorithm that performs approximate inference + in a Bayesian Network. + - Added the bayesian_network_join_tree object + This object implements an algorithm that performs exact inference + in a Bayesian Network. + - Set related + - Added the set_intersection_size() function + - Added the set_union() function + - Added the set_intersection() function + - Added the set_difference() function + - Graph related + - Added the graph object + - Added the is_graph template + - Added the is_directed_graph template + - Added the create_moral_graph() function + - Added the triangulate_graph_and_find_cliques() function + - Added the graph_contains_length_one_cycle() function + - Added the find_connected_nodes() function + - Added the graph_is_connected() function + - Added the is_clique() function + - Added the is_maximal_clique() function + - Added the copy_graph_structure() function + - Added the create_join_tree() function + - Added the is_join_tree() function + - Added the edge() function + - GUI related + - Added the base_window::get_display_size() function + - Added message_box_blocking() + - Added the bdf_font object which is capable of loading BDF font files into + the font object used by the gui_widgets + - Better Unicode support + - Added the basic_utf8_ifstream: An input stream that can read UTF-8 files + - Added serialization support for wchar_t and std::wstring + - Added the is_combining_char() function + - Added the convert_utf8_to_utf32() function + - Modified most of the string manipulation functions in dlib/string.h + to work with any kind of character type + - The gui widgets' font object now works with Unicode text (i.e. wchar_t + and unichar strings) as well as with normal char data. + +Non-Backwards Compatible Changes: + - The dlib/all_console.cpp and dlib/all_gui.cpp files have been deprecated + in favor of a new file. Now to build with dlib you simply add + dlib/all/source.cpp to your project regardless of what type of project + you are building. + - The GUI program entry point, winmain(), has been removed. You can now use + the normal main() entry point or some other non-standard entry point + provided by your compiler. + - Renamed directed_graph::node::item to directed_graph::node::data + +Bug fixes: + - Fixed some build issues in gcc 4.2 involving some uses of the std_allocator + - Fixed some build issues in Visual Studio involving the dir_nav component + and building with NO_MAKEFILE #defined. + - Moved the #define that disables the old WinSock API into the sockets cpp + file. This should avoid conflicts with people who are using the old WinSock + API. + - Changed the tuple template slightly to avoid a bug in Visual Studio 7.1 + that caused a compile time error in some instances. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.12" date="Nov 18, 2007"> +New Features: + - Added a destroy() function to the map, set, hash_map, and hash_set objects. + - Added the tuple object + - Added an overload of connect() that has a timeout + - Added rand_kernel_3 as a random number generator that uses the Mersenne Twister + algorithm. + - Added the directed_graph object + - Added the graph_contains_undirected_cycle() and graph_contains_directed_cycle() + functions. + - Added the std_allocator object. It is a STL style allocator that can use + the dlib memory manager objects. + - std::string manipulation functions: + - Added the cast_to_string() function. + - Added the tolower() function + - Added the toupper() function + - Added the ltrim() function + - Added the rtrim() function + - Added the trim() function + - Added the lpad() function + - Added the rpad() function + - Added the pad() function + +Non-Backwards Compatible Changes: + - Changed the default logging level from LNONE to LERROR + - Renamed the ASSERT macro to DLIB_ASSERT and CASSERT to DLIB_CASSERT. + This rename avoids a conflict with a macro inside MFC. + - Changed the logger so that settings are inherited when a new logger + is instantiated rather than just having the new logger use the + default settings. + - Removed the logger::clear() function since it no longer really + makes sense given the above change. + - Removed the get_main_thread_id() function and replaced it with the + is_dlib_thread() function. + +Bug fixes: + - Pushed some things into cpp files because doing so avoids build and/or + runtime errors on some platforms. + +Other: + - Changed the string_cast() function so that it will recognize the words true + and false as boolean values. Also improved the error message inside the + string_cast_error exception object. + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.11" date="Oct 25, 2007"> +New Features: + - Added the covariance() function + - Added the rgb_alpha_pixel pixel type and modified all relevant functions to + support it. + +Non-Backwards Compatible Changes: + - The GUI changes that are non-backwards compatible: + - The alpha parameter is now an unsigned char instead of unsigned int + and its range is now 0 to 255 instead of 0 to 256. + - The image_widget no longer has any member functions dealing with + alpha values. If you want to use alpha blending you just give it an + image that has an alpha channel. The same goes for draw_image(). + - There are now more fields in the pixel_traits template. So if you were + defining your own pixels before you will need to update your pixel_traits + specializations. + +Bug fixes: + - Made some functions non-inline and put some things on the stack + instead of heap. Doing this avoids some problems with certain + kinds of builds in visual studio. + +Other: + - Modified the message_box() function so that it is safe to call end_program() + from within its callback event. + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.10" date="Oct 09, 2007"> +New Features: + - Modified the GUI drawing functions to take an alpha argument to allow + alpha blending. + - Added the svm_nu_cross_validate() function to perform k-fold + cross validation using the svm_nu_train() function. + - Added the boost enable_if templates + - Added the rand_float extension to the rand object. + - New matrix features: + - Added the pinv() function + - Changed round_zeros() to use the machine epsilon instead of 1e-6 as + its default epsilon. + - Modified the matrix object so that you can declare them with + a static dimension and a dynamic dimension. E.g. matrix<float,0,10> + is now legal and declares a matrix with a fixed number of columns(10) + and a variable number of rows. + - Added the equal() function to compare two matrices of floating + point numbers for near equality. + - Changed the matrix so that operator(long) works for both + column vectors and now also for row vectors. + - Added a set_size() and constructor that takes a single long for use in + sizing row and column vectors. + - Added the scale_columns() function + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed an error in svm_nu_train() where it would incorrectly + complain of incorrect nu values for some datasets. + - Added a missing std:: qualifier at two points in the dlib/vector code that + could cause a compiler error in some instances. + +Other: + - Added a term index to the documentation. + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.9" date="Sep 25, 2007"> +New Features: + - Added a nu support vector classifier training function. + - Added a multilayer neural network object. + - Added the "destructive aliasing" checks into the matrix code. Now temporary + matrices are only created during assignment if the right hand side aliases + the left hand side in a destructive way. This removes many of the previous + uses of temporary matrices. + - Made the sum() matrix function be able to sum matrices of matrices + - New matrix functions: + - acos(), asin(), atan(), ceil(), cos(), cosh(), exp(), floor(), log(), + log10(), mean(), norm(), pow(), reciprocal(), round_zeros(), sin(), + sinh(), sqrt(), tan(), tanh(), variance(), and more overloads of + uniform_matrix(). + +Non-Backwards Compatible Changes: + +Bug fixes: + - Added missing nr() and nc() functions to the uniform_matrix() and + identity_matrix() functions. + - Forgot to add a destructor for the dynamically sized matrix resulting in a + memory leak. This is now fixed. + - Fixed various potential compile time errors + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.8" date="Sep 11, 2007"> +New Features: + - Added a copy of the boost noncopyable base class. + - added some smart pointers: + - added shared_ptr + - added weak_ptr + - added scoped_ptr + +Non-Backwards Compatible Changes: + +Bug fixes: + +Other: + - Cleaned up the assert code and removed the need for the dlib/error.ccp file + - Made the matrix take better advantage of the compile time sized + dimensions when it can. + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.7" date="Aug 26, 2007"> +New Features: + - Made it so that command line options have a default conversion to bool + and the bool tells you if they are on the command line or not. + - Added an implicit conversion to a scalar to the matrix object + when it is of dimension 1x1. + - Added the thread_function object + - Added a function to compute the singular value decomposition of a matrix. + +Non-Backwards Compatible Changes: + - Added two new arguments to the on_request() function. They allow you to + see what HTTP headers the client sends you and to control which ones + you send back. + +Bug fixes: + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.6" date="Aug 18, 2007"> +New Features: + - matrix object additions: + - Added some functions to convert between matrix and pixel objects. + - Added the clamp() function that operates on matrix objects. + - Added the sigmoid function. + - Made the matrix object capable of being sized at runtime in addition + to its original compile time static sizing capability. + - Added 3 and 4 argument versions of pointwise_multiply() + - Added the +=, -=, *= and /= operators to the matrix object. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed the line numbering in the color pretty printer. Wasn't being + done correctly. + - Fixed a bug in the matrix round() function. + - Fixed some miscellaneous compile time errors + - Fixed a bug in the matrix removerc() function. + - Added some missing checks to catch invalid negative index inputs to + matrix objects. + - Fixed a bug in the matrix inv() function. It could sometimes + segfault if used on certain singular matrices + +Other: + - string_cast() can now convert hex strings to integers + - You can now say myarray2d.set_size(0,0) and have it do what + you would naturally expect. + - Added some #pragma statements that tell visual studio + to link the right system libraries automatically. + So now you don't have to add these things in the + project settings anymore. + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.5" date="Jul 12, 2007"> +New Features: + - Added the set_all_logging_levels(), set_all_logging_output_streams() + functions + - Added the configure_loggers_from_file() function which allows you to + easily configure all logger objects using a textual configuration + file. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Added a workaround into the code that avoids a potential compilation + error on Mac OS X systems. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.4" date="Jun 30, 2007"> +New Features: + +Non-Backwards Compatible Changes: + +Bug fixes: + - Fixed a bug in the POSIX version of the hostname_to_ip() function. It was + screwy if you asked for more than the first IP address (the same address + might be returned more than once). + - Fixed a bug in the pipe object's timeout functions. The timeouts weren't + working correctly. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.3" date="Jun 25, 2007"> +New Features: + - Added the wait_for_num_blocked_dequeues(), enable_enqueue(), + disable_enqueue(), and is_enqueue_enabled() functions to the pipe object. + - The pipe object can now be used with a zero length buffer. + +Non-Backwards Compatible Changes: + - There is no longer a pipe::kernel_1a_c typedef since the pipe + no longer has any requirements to check (due to the change of allowing + zero length buffer sizes) + +Bug fixes: + +Other: + - Made the ASSERT and CASSERT macros call dlib_assert_breakpoint() when they + fail. This way you can easily set a breakpoint on them in a debugging + tool by breaking on calls to this new function. + - Fixed some typos and unclear parts of the pipe spec. + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.2" date="Jun 11, 2007"> +New Features: + - Added a thread safe version of the config_reader object (in the form of an + extension to the config_reader) + - Added the wait_until_empty() function to the pipe object. + +Non-Backwards Compatible Changes: + - Removed the connection::close() and listener::close() functions. They have + been replaced by destructors. To upgrade old code all you have to do is + replace statements of the form "object->close();" with "delete object;". + Both statements do exactly the same thing. However, for connection objects, + you should probably be using the close_gracefully() function instead. + +Bug fixes: + - Removed a potential compile time error in the dng image format handling code. + - Fixed a bug in the bigint object. The destructor was using "delete" + when it should have been using "delete []" + - Fixed a resource leak in the POSIX version hostname_to_ip() + - Fixed a significant memory leak in memory_manager_kernel_1 + - Fixed a memory leak that could occur in memory_manager_kernel_2 + and memory_manager_kernel_3 when the constructor for the object + being constructed threw an exception. + - Added a missing delete statement to plug a memory leak + in the md5 computation code. + - Fixed an uninitialized variable warning from valgrind + (in lz77_buffer/lz77_buffer_kernel_2.h). I think this could + also potentially result in an error when decoding data but I'm not totally + sure. But either way it is fixed now. + - Changed a call to memcpy to memmove in the sockstreambuf_kernel_2 + implementation since the copy could potentially be of overlapped memory. + +Other: + - Changed the connection::read() and connection::write() functions to take + longs instead of unsigned longs as the buffer sizes. They also now + return longs instead of ints. This should be a backwards compatible change. + - Started using the valgrind tool to check for memory errors in the project and + found a few things. Very nice tool :) + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.1" date="Jun 04, 2007"> +New Features: + - Added the multithreaded_object extension to the threads API + - Added the load_dng() and save_dng() functions which can load and store + the DNG lossless compressed image format (which I just made up). + +Non-Backwards Compatible Changes: + - Changed the serialization format for bool to use a 1 byte code rather than 2 + bytes. So this breaks compatibility with the old format. + +Bug fixes: + - The serialization for bool didn't always work right. This is now fixed. + +Other: + +</old> + +<!-- ******************************************************************************* --> + +<old name="15.0" date="May 16, 2007"> +New Features: + - New faster version of the bigint object (bigint_kernel_2) that uses + the Fast Fourier Transform to perform multiplications. + - The base_window can now be an "undecorated" window. This new type is suitable + for making things like popup menus and the like. + - Added the on_focus_lost() event to the base_window object + - Added the on_focus_gained() event to the base_window object + - Added the on_window_moved() event to the base_window object + - Added the get_pos() function to the base_window object + - Updated the gui_widgets's drawable interface stuff to support the three + new event types and the new window type. + - Added the drawable::draw_rectangle() function + - Added serialization support for std::complex. + - Added the assign_image() function + +Non-Backwards Compatible Changes: + - Removed the color arguments from the drawable_window object's constructor and + added a new boolean argument (if it is an undecorated window or not). This + probably won't break any code but if it does you should get a compiler error + about it. + - Made it so you must disable the events in the destructor for your + drawable gui widgets. Doing so avoids potential race conditions when + destructing drawable objects. + - Made it so that you are required to call close_window() in a window object's + destructor. This avoids a potential race condition. + +Bug fixes: + - Added a workaround for a bug in MinGW that caused the regression test suite + to crash when compiled with -O3. + - Fixed a potential bug in the X Windows version of the gui_core component. + Added an extra XFlush() to end_program() because without it a + program can crash when calling end_program() in certain instances. + - The spec for the pipe object said that objects you enqueue into it + had an "initial value for their type" after the function completes. This + is incorrect, they are swapped into the pipe so they have an undefined + value afterwards. I fixed the spec for the pipe to say this. + - Fixed a bug in the font rendering functions in the gui_widgets + component. It could cause a segmentation fault sometimes. + - Fixed some potential deadlocks in the windows version of the gui_core + component. + - Fixed a bug in the rsignaler object. When you called wait() or + wait_or_timeout() it only unlocked the associated rmutex once (it could be + locked more than once and thus might cause a deadlock since the thread + calling wait() wouldn't actually unlock the mutex in this case). + - Fixed the initialize_array() function in memory_manger_kernel_3 to be + exception safe. Previously if an exception occurred while creating + an array then a resource leak was created. + +Other: + - Changed the package format for the library somewhat. The examples are now + located in their own top level folder. Additionally, the HTML version of the + documentation also comes in the same archive as the source rather than in a + separate download. + - Started using major and minor version numbers rather than just major ones. + +</old> + +<!-- ******************************************************************************* --> + +<old name="14" date="Apr 11, 2007"> +New Features: + - Added operator<< and operator>> iostream operators to the vector object. + +Non-Backwards Compatible Changes: + - Changed the xml_parser's document_handler interface: + made empty element tags (<like_this/>) trigger the end_element() callback + and removed the is_empty bool from start_element(). + +Bug fixes: + - Fixed a potential race condition between the destruction of the thread pool + and the "program ending handlers" stuff. + +Other: + - Made the xml parser more robust to different types of new line characters. + - Modified the source slightly so that it works with mingw. + +</old> + +<!-- ******************************************************************************* --> + +<old name="13" date="Mar 01, 2007"> +New Features: + - The config_reader is now enumerable. + - Added the image_widget gui object. + - Added nr() and nc() to the array2d object. + - Added the shutdown_connection() function to the iostream extension + to the server object. + - Added the timer_kernel_2 implementation which is a version of the timer object + that is more efficient in its allocation of threads. + - Added the timeout object. + - There is now a CMakeLists.txt file located in the dlib folder. See + dlib/examples/CMakeLists.txt and dlib/test/CMakeLists.txt for examples + that use CMake to build projects using this library. + - Added the register_program_ending_handler() function to the threading API. + +Non-Backwards Compatible Changes: + - Removed the config_reader::get_blocks() function. Use the + new enumerable interface for the config_reader instead. + - The array2d object now uses longs instead of unsigned longs to report + its dimensions and access its elements. + - Added a uint64 to the on_connect() callback in the iostream + extension to the server object. + - timer::set_delay_time() now throws and timer::start() now may throw + std::bad_alloc. + +Bug fixes: + - Fixed a bug in end_program(). In X Windows it might not cause the + program to end right away if it was called from outside the event + handling thread. + - Fixed a bug in the implementation of the timeout part of the + close_gracefully() function. + +Other: + - The library now works on HP-UX + - The regression test suite now has command line arguments that + enable tests to send debug messages to a file. + +</old> + +<!-- ******************************************************************************* --> + +<old name="12" date="Feb 07, 2007"> +New Features: + - The http server extension now supports the POST HTTP method. + - The attribute list object in the xml_parser is now enumerable. + - Added the threaded object extension + - Added the uintn.h file which defines fixed sized unsigned integral types. + +Non-Backwards Compatible Changes: + - Renamed the on_get() callback in the http extension to the server object to + on_request() + - Removed the network byte order functions from the sockets api. (They are still + really there though since they come from actual OS header files. But + officially they have been replaced by the byte_orderer component). + - Renamed dlib/uint64.h to dlib/uintn.h + +Bug fixes: + +Other: + - The command line parser will now let you declare long named options with - + characters in them. + - Made it so you can use the COMPILE_TIME_ASSERT macros anywhere rather than + just inside functions. + +</old> + +<!-- ******************************************************************************* --> + +<old name="11" date="Dec 27, 2006"> +New Features: + - For dlib::matrix + - Added the tmp() function + - Added optimized specializations of inv() and det() for 1x1, 2x2, 3x3 and + 4x4 matrices. + - Added the removerc() function + - Sockets related + - Added the connect() function + - Added the is_ip_address() function. + - Added the close_gracefully() function + - Added the iostream extension to the server object. + - Added the http extension to the server object. + +Non-Backwards Compatible Changes: + - Changed the cpp_tokenizer to not convert characters to their html form. + +Bug fixes: + - Removed some potential compile time errors. See the change log for details. + +Other: + - Improved the web site + - Added some more example code + - Added more colors to cpp_pretty_printer_kernel_1. +</old> + +<!-- ******************************************************************************* --> + +<old name="10" date="Nov 28, 2006"> +New Features: + - std::map is now serializable + - Added the matrix object and a bunch of supporting code. + - Added the list_box graphical widget + - Added the fill_rect_with_vertical_gradient() function to the + drawable interfaces list of drawing helpers. + - Added the open_file_box() function which provides a simple file chooser. + +Non-Backwards Compatible Changes: + +Bug fixes: + - Made timestamper::get_timestamp() be a const function like it should. Fixes + some compile errors. + - Fixed a bug in the font::draw_string() function. It didn't redraw + multi-line strings right. + - Fixed a bug in the scroll_bar object that would cause a compile + error if you tried to call its width() function. + - Fixed a bug in the array_kernel_1 object. It would cause a segmentation fault + when used sometimes. + +Other: +</old> + +<!-- ******************************************************************************* --> + +<old name="9" date="Oct 23, 2006"> +New Features: + - Added the following image transformation functions: + - Added the equalize_histogram() function + - Added the spatially_filter_image() function + - Added the threshold_image() function + - Added the binary_dilation() function + - Added the binary_erosion() function + - Added the binary_open() function + - Added the binary_close() function + - Added the binary_intersection() function + - Added the binary_difference() function + - Added the binary_complement() function + - Added the clear(), load_from() and default constructor back into the + config_reader. + - Made the member_function_pointer copyable and also added operator== and != + to it. + +Non-Backwards Compatible Changes: + - Made the vector object templated so you can use types other than double with it. + But now you + have to specify what type you want to use which is slightly different. + - The asc_pair_remover and asc_remover abstract classes now take a third template + argument. I highly doubt this effects any code outside the library but it is + possible. + +Bug fixes: + - Fixed a bug in the base_window::set_size() function. If you specified a size + of (0,0) it caused your program to error out. This has now been fixed. + - Fixed a bug in the scroll_bar widget. + - Fixed a bug in save_bmp(). For some image sizes it would output a goofy + looking skewed image. + +Other: + - Switched everything that used to call operator< directly to instead use + std::less or to take a template argument that provides a compare functor that + defaults to std::less. +</old> + +<!-- ******************************************************************************* --> + +<old name="8" date="Oct 03, 2006"> +New Features: + - Added the assign_pixel() function + - Added the hsi pixel type + - Added the save_bmp() function + - Added the static_switch template + +Non-Backwards Compatible Changes: + - Changed how the config_reader works. It now has a more powerful syntax and + improved interface. Converting any old code to use the new version should be + simple since the new file syntax is very nearly backwards compatible with the + old syntax. (i.e. You probably won't have to change anything about your + config files) + - Renamed the dlib/image_loader.h file to dlib/image_io.h since it now includes + the image saver stuff. + - Renamed the pixel struct to rgb_pixel + - Renamed pixel_traits::color to pixel_traits::rgb + - Renamed pixel_traits::scalar to pixel_traits::grayscale + +Bug fixes: + - Fixed a bug in the load_bmp() function. It would load 24bit bmp files + incorrectly. + - Changed the logger so that it won't deadlock if you write something similar to + my_log << LINFO << function_that_also_logs();. Although this is a + dumb thing to do. But even so, it shouldn't deadlock. + - Fixed a potential linking problem with the vector object. + +Other: + - I decided I'm not going to support Borland v5.5.1 anymore. There are just too + many bugs in this compiler. It is very old at this point so I don't see this + being a big deal. + - Made the drawable::draw_image() and load_bmp() functions able to handle images + of any type of pixel. + - Pulled the imaging, algorithmic and metaprogramming stuff out of the + miscellaneous section of the web page and gave them all their own sections. +</old> + +<!-- ******************************************************************************* --> + +<old name="7" date="Sep 18, 2006"> +New Features: + - Added a logger header that prints the date and time. + - Added the LTRACE logging level + - Added a buffered implementation of sockstreambuf. + +Non-Backwards Compatible Changes: + - Changed the specs to say that sockstreambuf may be buffered. + sockstreambuf_kernel_1 is still just as it always has been though. So all old + code will still work just as it always has. But all the same, the specs have + been changed and now allow for an implementation that is not 100% backwards + compatible. + - rand_kernel_2 now emits a different string of random numbers. + +Bug fixes: + - Changed the logger object's implementation to not try to register + a thread end handler for the main program thread anymore. This was + technically a bug according to the spec but it actually did end up + working the way it was supposed to. But even so, it shouldn't have + been doing that. + - Changed binary_search_tree_kernel_1 so that it avoids a bug in the version of + gcc on SuSE Enterprise Linux 9. + - Fixed a bug in the rand_kernel_2 implementation. It wasn't giving good + random numbers. + +Other: + - Modified the code so that you don't get any warnings when -Wall is used with + GCC. +</old> + +<!-- ******************************************************************************* --> + +<old name="6" date="Aug 30, 2006"> +New Features: + - Added the ASSERT_ARE_SAME_TYPE macro + - Added the is_same_type template + - Added the get_main_thread_id() function to the threading API + - Added the thread_specific_data extension to the threading API + - Added the logger object. + - Added the auto_unlock object to the threading API. + +Non-Backwards Compatible Changes: + +Bug fixes: + +Other: + - Added an example that is specifically about using threads + - Added two examples about using the logger object +</old> + +<!-- ******************************************************************************* --> + +<old name="5" date="Aug 18, 2006"> +New Features: + - Added the memory_manager_stateless object and two implementations of it. + - Added the MACOSX macro to dlib/platform.h + - Added a templated version of create_new_thread() that allow you to start + a thread with a member function. + - Added the register_thread_end_handler() function to the threading kernel API. + - Added memory_manager_kernel_3 + +Non-Backwards Compatible Changes: + - Changed the meaning of the memory_manager_global::get_number_of_allocations() + function because the previous definition of it didn't really make sense for + this object. + - Changed the threading API to wait for all outstanding threads to terminate + before allowing the program to end. It used to just let the OS trash those + threads when main() ended but this isn't a safe or portable thing to do. I + used to assume the user would make sure all their threads were done and had + cleaned up whatever they were doing before main() ended but this is too much + of a burden on the end user. So now the library will wait for your threads to + end. You still need to have some way of telling them it is time to stop though. + +Bug fixes: + - Fixed a minor bug in dlib/timer/timer_kernel_1.h. Its implementation was + slightly off according to the specification of a timer object. + +Other: + - The byte_order object is now capable of flipping entire arrays. + - Made it so that the ENABLE_ASSERTS macro is defined whenever ASSERT is + on. + - Made the array container use the memory managers. + +</old> + +<!-- ******************************************************************************* --> + +<old name="4" date="Jul 18, 2006"> +New Features: + - Added functions to explicitly convert to/from little and big endian to the + byte_order object. + - Added the allocate_array() and deallocate_array() functions to the + memory_manager. + - Created the memory_manager_global object + - Added the remove_last_in_order(), position_enumerator() and + remove_current_element() functions to the binary_search_tree object. + +Non-Backwards Compatible Changes: + - I put an #error directive in the old GUI component to notify anyone + trying to use it that it is deprecated. I will be removing it from the + library in a few months. + - Switched the reference_counter object back to not using the memory_manager. + I realized it isn't safe for this object to use the memory_manager since + it could result in memory_managers freeing each other's allocations. + - I redefined the pixel_traits template. It is now a lot simpler and more + convenient. + +Bug fixes: + - Fixed a minor bug in dlib/rand/rand_kernel_2.cpp + +Other: + - Added some more compile time checks to the byte_orderer object. + - Changed some includes and preprocessor macros around a little so now + everything but the GUI stuff compiles in mac OS X. + - Added inclusion guards to all the .cpp files + - Added the all_gui.cpp and all_console.cpp files. They + include all the .cpp files you need to make gui and + console applications respectively into one file. + - Made more containers use the memory_manager. + +</old> + +<!-- ******************************************************************************* --> + +<old name="3" date="May 06, 2006"> +New Features: + - Added the enqueue_or_timeout() and dequeue_or_timeout() functions + to the pipe object. + - Gave the mouse_tracker the ability to display the mouse position + relative to a user selected point. + - Added the message_box() function to the gui_widgets component. + - Gave the label widget the ability to draw newlines in strings. + - added the close_window() and is_closed() methods to the base_window + object. + - Added the rsignaler extension to the threading API. + - You can now control the thread pool timeout time by setting the + DLIB_THREAD_POOL_TIMEOUT #define. + - Added the get_from_clipboard() and put_on_clipboard() functions + to the gui_core component. + - Added the stop_and_wait() function to the timer object. + - Added the trigger_user_event() function and on_user_event() event + to the base_window object. This new event is also forwarded + to drawable interfaces inside the receiving window. + - Added the wrap_around() function to the named_rectangle widget. + - Added the top(), left(), right(), bottom(), width() and height() + functions to the drawable interface. + +Non-Backwards Compatible Changes: + - Made the radio_button and check_box widgets pass references to themselves + when they call their click handlers. + - Switched the sync_extension to use the rmutex and rsignaler objects + rather than the normal non-reentrant ones. ( Chances are that old + code that used this will still compile fine anyway. ) + - Changed the return type of rand::get_random_number() to be an + unsigned char. I also changed both the implementations of + rand because they weren't very good at all. + - Changed the functions related to drawing strings in the font class. + - Changed the drawable's rectangle to default to being empty + rather than being a single point. Most code should not notice + the difference. + +Bug fixes: + - The event handlers in gui_widgets/drawable.h were private. They + should be protected. This is now fixed. + - Fixed a bug in the way the scroll_bar was drawn when it was + the HORIZONTAL type. + - Changed how the thread pool destructs itself when the program + is ending. Previously it was possible to get an error on + NetBSD when the program was ending. This is now fixed. + - The functions related to setting the jump size in the scroll_bar + widget were private. They are now public. + - There was a bug in the MS Windows version of the gui_core component + where the members of the base_window would not work if called from + within the on_window_close() event. This has now been fixed. + - Made the set_pos() function work right for the mouse_tracker widget. + - Fixed a bug in the base64 object where the string "" could potentially + be decoded incorrectly. + - Made the global swap function for crc32_kernel_1 inline. This fixes a + potential linker error. + - Fixed some potential deadlocking that could occur while using the + gui widgets. + +Other: + - I moved all the regression tests into the dlib/test folder and + made a nice driver program to run all of them. + - I have been using the sourceforge compile farms to test the library + on various platforms. It now works for Solaris and some of the BSDs + in addition to Linux and Windows. +</old> + + +<!-- ******************************************************************************* --> + + +<old name="2" date="Apr 08, 2006"> +New Features: + - Added the array_expand extension to the array object. + - Added the cmd_line_parser_check extension to the command line parser. + - Added the pipe object. + - All applicable container classes now use the memory_manager component for + their memory allocation. + - New implementations of the memory_manager object. + - Added the copy_functor class. + +Non-Backwards Compatible Changes: + - Moved the wrap_string, narrow, and string_cast functions + to a new file. You now have to include dlib/string.h to get + them. (This makes a bunch of other things work right in gcc 2.95) + - Renamed the _L macro to _dT + - Removed the scopy class + - Simplified the interface to the memory manager. It is basically the same + though. + - Removed the max_size() methods from the hash_table and binary_search_tree + objects. + - Removed the T_is_POD template arguments from the hash_table and + binary_search_tree objects. + - Simplified the template arguments to all checking components and extensions. + They now take the class they are to extend or check as their only template + argument. This only affects you if you haven't been using the kernel_nx + typedefs. + +Bug fixes: + +Other: + - I changed a few things around and now a majority of the library + again compiles under gcc 2.95. But some things don't and I currently + don't plan on making them work because it involves hackish workarounds + of 2.95's bugs. + - Changed the compress_stream_kernel_1 object so that it will detect data + corruptions better. This change will prevent it from correctly decompressing + data that was compressed with a previous version and has an uncompressed size + greater than about 20,000 bytes. + - There is a new cpp file you need to compile: dlib/error.cpp + - Moved all the regression testing stuff into the dlib/test folder and made + a nicer test driver to run them. +</old> + + +<!-- ******************************************************************************* --> + +<old name="1" date="Mar 19, 2006"> +New Features: + - Created the byte_orderer object. + - Created the mouse_tracker gui widget. + - The sliding_buffer object is now enumerable and serializable. + - Added the get_filesystem_roots() function to the dir_nar component. + - Added the create_directory() function to the misc_api component. + +Non-Backwards Compatible Changes: + - The ASSERT macro is now only enabled if DEBUG or ENABLE_ASSERTS + is defined. + +Bug fixes: + - Fixed a minor bug in the cmd_line_parser object. If you gave + an option such as --option=arg when option didn't take any + arguments it could hang your program. + - Fixed a bug in wait_or_timeout() in the posix version of the threading + api. The time to wait for was being calculated incorrectly and could + result in an excessive number of spurious returns. + - Fixed a minor bug in the on_keydown() event for windows. + I had it set such that the shift and ctrl bools would be false + if they were the actual keys being pressed. This isn't what the + specs say should happen but I had a comment in the windows code + that made it clear that I did it on purpose. Go figure :) + This is now fixed. + +Other: + - Improved the cpp_tokenizer object's ability to recognize numerical + constants. + - Improved the text_field gui widget. + - There are now two assert macros. One called ASSERT + and another CASSERT. They both do the same thing but ASSERT + is only enabled when DEBUG or ENABLE_ASSERTS is defined. + All the old ASSERT statements were changed to CASSERT statements. +</old> + +<!-- ******************************************************************************* --> + +<old name="2006-02-23.01"> +New Features: + - Added array_kernel_2 which is a simple layer on top of a C array. + - Added the tabbed_display GUI widget + - Added the widget_group GUI widget + - Added the named_rectangle GUI widget + - Added the pixel_traits template + +Non-Backwards Compatible Changes: + - The default maximum size for an array object is now 0 rather than + 20,000. +Bug fixes: + +Other: + - made the cpp_pretty_printer a little better about how it handles + C style code. Also added support for /*!A html_anchor_name !*/ + style comments. +</old> + +<!-- ******************************************************************************* --> + +<old name="2006-01-31.02"> +New Features: + - Created the array2d object. + - Created the base64 object. + - Created the pixel struct. + - Created the load_bmp() function which can load a BMP image file + into an array2d object of pixels. + - Created the drawable::draw_image() function + +Non-Backwards Compatible Changes: + - In the drawable interface I made the z order a long rather + than unsigned long. + - The cpp_tokenizer object now has a NUMBER token type. + - removed the get_ prefix from functions in the cmd_line_parser + and cmd_line_parser_option objects. Also changed the + cmd_line_parser_option::operator[] function to a normal member + function called argument(). + +Bug fixes: + +Other: + - cpp_pretty_printer now colors numeric literals a shade of yellow. +</old> + +<!-- ******************************************************************************* --> + +<old name="2006-01-15.03"> +New Features: + - Created the member_function_pointer object. + - Created the button_action object. + - Created the arrow_button object. + - Created the check_box object. + - Created the radio_button object. + - Created the scroll_bar object. + - More drawing functions to draw various things + onto a canvas object. + - Added enable/disable functions to the + drawable interface. + +Non-Backwards Compatible Changes: + - The gui widgets are no longer templated at the + class level. + - The drawable object's constructor now takes a + bit set rather than a bunch of bools to tell it + which events to enable. + - I changed the names of some of the functions in the + gui_widgets component so that they all reflected a + uniform naming style. + +Bug fixes: + - Fixed a minor bug in the cpp_tokenizer. + - Minor bug in the timer object. See change log for + details. + +Other: + - Made the timer object a little more robust +</old> + + +<!-- ******************************************************************************* --> + +</release_notes> + </body> +</doc> diff --git a/ml/dlib/docs/docs/right.gif b/ml/dlib/docs/docs/right.gif Binary files differnew file mode 100644 index 00000000..50e2637d --- /dev/null +++ b/ml/dlib/docs/docs/right.gif diff --git a/ml/dlib/docs/docs/stylesheet.xsl b/ml/dlib/docs/docs/stylesheet.xsl new file mode 100644 index 00000000..19338fea --- /dev/null +++ b/ml/dlib/docs/docs/stylesheet.xsl @@ -0,0 +1,1201 @@ +<?xml version="1.0" encoding="utf8" ?> + +<!-- + To the extent possible under law, Davis E King has waived all copyright and + related or neighboring rights to dlib documentation (XML, HTML, and XSLT files). + This work is published from United States. +--> + + <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gcse="googleCustomSearch"> + <xsl:output method='html' version='1.0' encoding='UTF-8' indent='no' /> + <xsl:strip-space elements="*" /> + <xsl:preserve-space elements="pre code_box preserve_space" /> + + + <!-- ************************************************************************* --> + + <xsl:variable name="is_chm">true</xsl:variable> + <xsl:variable name="main_menu">main_menu.xml</xsl:variable> + <xsl:variable name="project_name">dlib C++ Library</xsl:variable> + + <!-- ************************************************************************* --> + + <!-- This is the ID you get from Google Webmaster Tools --> + <xsl:variable name="google_verify_id">02MiiaFNVzS5/u0eQhsy3/knioFHsia1X3DXRpHkE6I=</xsl:variable> + <xsl:variable name="google_verify_id2">DGSSJMKDomaDaDTIRJ8jDkv0YMx9Cz7OESbXHjjr6Jw</xsl:variable> + + <!-- ************************************************************************* --> + + <xsl:variable name="last_modified_date_var">_LAST_MODIFIED_DATE_</xsl:variable> + <xsl:variable name="current_release_var">_CURRENT_RELEASE_</xsl:variable> + <xsl:template match="last_modified_date"><xsl:value-of select="$last_modified_date_var"/></xsl:template> + <xsl:template match="current_release"><xsl:value-of select="$current_release_var"/></xsl:template> + + <!-- ************************************************************************* --> + + <xsl:variable name="gray">#E3E3E3</xsl:variable> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz </xsl:variable> + <xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ </xsl:variable> + <xsl:variable name="badletters">'?()<> /\&~!@#$%^*_+=-[]{}</xsl:variable> + + <!-- ************************************************************************* --> + + <xsl:template match="/doc"> + <html> + <head> + <link rel="shortcut icon" href="dlib-icon.ico"/> + <xsl:if test="$is_chm != 'true'"> + <meta property="og:image" content="http://dlib.net/dlib-logo-small.png"/> + </xsl:if> + + <!-- Verify with Google --> + <meta name="verify-v1" content="{$google_verify_id}" /> + <meta name="google-site-verification" content="{$google_verify_id2}" /> + <title> + <xsl:value-of select="$project_name"/> + <xsl:if test="title"> + - <xsl:value-of select="title" /> + </xsl:if> + </title> + + <script type="text/javascript" src="dlib.js"></script> + <link rel="stylesheet" type="text/css" href="dlib.css"/> + + <xsl:if test="$is_chm != 'true'"> + <script> <!-- Google Analytics --> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-51919357-1', 'dlib.net'); + ga('send', 'pageview'); + </script> + </xsl:if> + </head> + + + + <body> + <a name="top" /> + <div id="page_header"> + <xsl:if test="$is_chm != 'true'"> + <div style="float:right;width:450px"> + <script> + (function() { + var cx = '017764538452368798135:fin3a18x_ns'; + var gcse = document.createElement('script'); + gcse.type = 'text/javascript'; + gcse.async = true; + gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + + '//www.google.com/cse/cse.js?cx=' + cx; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(gcse, s); + })(); + </script><gcse:search></gcse:search> + </div> + </xsl:if> + <a href="http://dlib.net"><img src="dlib-logo.png"/></a> + </div> + + + <div id="top_content"> + <div id="main_menu" class="menu"> + <xsl:apply-templates select="document($main_menu)/doc/menu"/> + </div> + + <!-- ************************************************************************* --> + <div id="main_text"> + <xsl:if test="title"> + <div id="main_text_title"> <xsl:value-of select="title" /> </div> + </xsl:if> + + <div id="main_text_body"> + <xsl:apply-templates select="body"/> + <xsl:for-each select="questions"> + <xsl:sort select="translate(@group,$lcletters, $ucletters)"/> + <xsl:if test="@group"><h2><xsl:value-of select="@group"/></h2></xsl:if> + <ul> + <xsl:for-each select="question"> + <xsl:sort select="translate(@text,$lcletters, $ucletters)"/> + <li><a href="#{translate(@text,$badletters,'')}"><xsl:value-of select="@text"/></a></li> + </xsl:for-each> + </ul> + </xsl:for-each> + </div> + </div> + + <!-- ************************************************************************* --> + <xsl:choose> + <xsl:when test="menu/@from_file"> + <div id="right_menu" class="menu"> + <xsl:apply-templates select="document(menu/@from_file)/doc/menu"> + <xsl:with-param name="file_name" select="concat(substring-before(menu/@from_file,'.'),'.html')" /> + </xsl:apply-templates> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:if test="menu"> + <div id="right_menu" class="menu"> + <xsl:apply-templates select="menu"/> + </div> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + <!-- ************************************************************************* --> + </div> + + <div id="bottom_content"> + <xsl:apply-templates select="components"/> + <xsl:apply-templates select="questions"/> + </div> + + </body> + </html> + </xsl:template> + + + + + + <!-- ************************************************************************* --> + + <xsl:template match="section"> + <xsl:param name="file_name" /> + <b><xsl:value-of select="name"/></b> + <ul class="tree"> + <xsl:if test="$is_chm = 'true'"> + <xsl:for-each select="item | chm/item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:for-each> + </xsl:if> + <xsl:if test="$is_chm != 'true'"> + <xsl:for-each select="item | web/item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:for-each> + </xsl:if> + </ul> + <br/> + </xsl:template> + + <xsl:template match="top"> + <xsl:param name="file_name" /> + <xsl:apply-templates> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="bottom"> + <xsl:param name="file_name" /> + <xsl:apply-templates> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="download_button"> + <xsl:variable name="linktext"><xsl:apply-templates select="link"/></xsl:variable> + <a href="{$linktext}" id="download_button" class="menu"><xsl:apply-templates select="name"/></a> + </xsl:template> + + + <xsl:template match="menu"> + <xsl:param name="file_name" /> + <div class="menu_top"> + <xsl:apply-templates select="top"> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </div> + <div class="menu_footer"> + <xsl:apply-templates select="bottom"> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </div> + </xsl:template> + + <xsl:template match="item"> + <xsl:param name="file_name" /> + <li> + <xsl:choose> + <xsl:when test="@nolink = 'true'"> + <xsl:choose> + <xsl:when test="name"> + <a onclick="Toggle(this)" class="sub menu"><img src="plus.gif"/><xsl:value-of select="name"/></a> + <xsl:apply-templates select="sub"> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="name"> + <xsl:choose> + <xsl:when test="sub"> + <xsl:choose> + <xsl:when test="link"> + <xsl:variable name="linktext"><xsl:apply-templates select="link"/></xsl:variable> + <a href="{$linktext}" style="float:right"><img src="right.gif" border="0"/></a> + <a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0"/><xsl:value-of select="name"/></a> + <xsl:apply-templates select="sub"> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <a href="{$file_name}#{name}" style="float:right"><img src="down.gif" border="0" /></a> + <a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0"/><xsl:value-of select="name"/></a> + <xsl:apply-templates select="sub"> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="link"> + <xsl:variable name="linktext"><xsl:apply-templates select="link"/></xsl:variable> + <a href="{$linktext}" class="menu"><xsl:value-of select="name"/></a> + </xsl:when> + <xsl:otherwise> + <a href="{$file_name}#{name}" class="menu"><xsl:value-of select="name"/></a> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <a href="{$file_name}#{.}" class="menu"><xsl:value-of select="."/></a> + </xsl:otherwise> + </xsl:choose> + </li> + </xsl:template> + + <xsl:template match="sub"> + <xsl:param name="file_name" /> + <ul style="display:none;"> + <xsl:for-each select="item"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."> + <xsl:with-param name="file_name" select="$file_name" /> + </xsl:apply-templates> + </xsl:for-each> + </ul> + </xsl:template> + + + <!-- ************************************************************************* --> + + <xsl:template match="questions"> + + <xsl:for-each select="question"> + <xsl:sort select="translate(@text,$lcletters, $ucletters)"/> + + <a name = "{@text}"/> + <a name = "{translate(@text,$badletters,'')}"> + <div class="question"> + <a href="#top"><font size='2'><center>[top]</center></font></a> + <h2><xsl:value-of select="@text"/></h2> + <xsl:apply-templates select="."/> + </div> + </a> + </xsl:for-each> + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="components"> + + <xsl:for-each select="component"> + <xsl:sort select="translate(name,$lcletters, $ucletters)"/> + <xsl:variable name="checked" select="@checked"/> + + <a name = "{name}"/> + <div class="component" > + + <a href="#top"><font size='2'><center>[top]</center></font></a> + <h1 style="margin:0px;"><xsl:value-of select="name"/> + </h1> + <BR/> + <BR/> + <xsl:apply-templates select="description"/> + + <BR/> + <xsl:apply-templates select="examples"/> + <div class='include_file_more_details_wrapper'> + <xsl:if test="spec_file"> + <xsl:choose> + <xsl:when test="spec_file/@link = 'true'"> + <a class='more_details' href="{spec_file}.html#{name}">More Details...</a> + </xsl:when> + <xsl:otherwise> + <a class='more_details' href="{spec_file}.html">More Details...</a> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:if test="file"> + <div class='include_file'>#include <<xsl:value-of select="file"/>></div> + </xsl:if> + </div> + + <xsl:apply-templates select="implementations"> + <xsl:with-param name="checked" select="$checked" /> + </xsl:apply-templates> + + + <xsl:if test="extensions"> + <br/> + <center> + <h1>Extensions to <xsl:value-of select="name"/></h1> + </center> + + <xsl:for-each select="extensions/extension"> + <xsl:sort select="translate(name,$lcletters, $ucletters)"/> + <div class="extension"> + <a name="{name}"><B><font size='5'><xsl:value-of select="name"/></font></B></a><Br/> + <BR/> + <xsl:apply-templates select="description"/> + <BR/> + <BR/> + <xsl:apply-templates select="examples"/> + <xsl:choose> + <xsl:when test="spec_file/@link = 'true'"> + <a class='more_details_extension' href="{spec_file}.html#{name}">More Details...</a> + </xsl:when> + <xsl:otherwise> + <a class='more_details_extension' href="{spec_file}.html">More Details...</a> + </xsl:otherwise> + </xsl:choose> + + + <xsl:apply-templates select="implementations"> + <xsl:with-param name="checked" select="$checked" /> + </xsl:apply-templates> + </div> + </xsl:for-each> + </xsl:if> + + </div> + </xsl:for-each> + </xsl:template> + + <!-- This template outputs a length 1 string if there is a python example program --> + <xsl:template name="has_python_example"> + <xsl:for-each select="example"> + <xsl:if test="substring-before(.,'.py.html') != ''">1</xsl:if> + </xsl:for-each> + </xsl:template> + <!-- This template outputs a length 1 string if there is a C++ example program --> + <xsl:template name="has_cpp_example"> + <xsl:for-each select="example"> + <xsl:if test="substring-before(.,'.cpp.html') != ''">1</xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template match="examples"> + <xsl:variable name="has_python"><xsl:call-template name="has_python_example"/></xsl:variable> + <xsl:variable name="has_cpp"><xsl:call-template name="has_cpp_example"/></xsl:variable> + <xsl:variable name="numpy" select="string-length($has_python)"/> + <xsl:variable name="numcpp" select="string-length($has_cpp)"/> + + <xsl:if test="$numcpp != 0"> <BR/>C++ Example Programs: </xsl:if> + <xsl:for-each select="example"> + <xsl:variable name="fname" select="substring-before(.,'.cpp.html')"/> + <xsl:variable name="name" select="substring-before(.,'.html')"/> + <xsl:if test="$fname != ''"> + <xsl:choose> + <xsl:when test="position() >= last()-$numpy"> + <a href="{.}"><xsl:value-of select="$name"/></a> + </xsl:when> + <xsl:otherwise> + <a href="{.}"><xsl:value-of select="$name"/></a>, + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + + <xsl:if test="$numpy != 0"> <BR/>Python Example Programs: </xsl:if> + <xsl:for-each select="example"> + <xsl:variable name="fname" select="substring-before(.,'.py.html')"/> + <xsl:variable name="name" select="substring-before(.,'.html')"/> + <xsl:if test="$fname != ''"> + <xsl:choose> + <xsl:when test="position() >= last()"> + <a href="{.}"><xsl:value-of select="$name"/></a> + </xsl:when> + <xsl:otherwise> + <a href="{.}"><xsl:value-of select="$name"/></a>, + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template match="implementations"> + <xsl:param name="checked" /> + <BR/><BR/><B>Implementations:</B> + + <xsl:choose> + <xsl:when test="implementation/typedefs"> + <xsl:for-each select="implementation"> + <blockquote> + <a href="{file}.html"><xsl:value-of select="name"/></a>: + <xsl:if test="typedefs"><br/></xsl:if> + <xsl:apply-templates select="description"/> + <xsl:apply-templates select="typedefs"> + <xsl:with-param name="checked" select="$checked"/> + </xsl:apply-templates> + </blockquote> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <blockquote> + <xsl:for-each select="implementation"> + <a href="{file}.html"><xsl:value-of select="name"/></a>: + <xsl:apply-templates select="description"/> + <br/> + </xsl:for-each> + </blockquote> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="typedefs"> + <xsl:param name="checked" /> + + + <div class="typedefs"><table CELLSPACING='0' CELLPADDING='0' bgcolor="white" > + <xsl:for-each select="typedef"> + + <xsl:choose> + <xsl:when test="$checked = 'true'"> + <tr><td bgcolor="{$gray}" valign="top"> + <div class="tdn"><xsl:value-of select="name"/></div> + </td><td width="100%" bgcolor="{$gray}"> + <xsl:apply-templates select="description"/> + </td></tr> + + <tr><td valign="top"> + <div class="tdn"><xsl:value-of select="name"/>_c</div> + </td><td width="100%"> + is a typedef for <xsl:value-of select="name"/> that checks its preconditions. + </td></tr> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="position() mod 2 = 0"> + <tr><td valign="top"> + <div class="tdn"><xsl:value-of select="name"/></div> + </td><td width="100%"> + <xsl:apply-templates select="description"/> + </td></tr> + </xsl:when> + <xsl:otherwise> + <tr><td bgcolor="{$gray}" valign="top"> + <div class="tdn"><xsl:value-of select="name"/></div> + </td><td width="100%" bgcolor="{$gray}"> + <xsl:apply-templates select="description"/> + </td></tr> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </table></div> + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="release_notes"> + <h1 style="margin:0px;">Release <xsl:value-of select="$current_release_var"/></h1> + <u>Release date</u>: <xsl:value-of select="$last_modified_date_var"/> + <br/> + <u>Major Changes in this Release</u>: + <table cellspacing="5" cellpadding="0" width="100%"> + <tr> + <td width="15"></td> + <td><pre><xsl:value-of select="current"/></pre></td> + </tr> + </table> + + <xsl:for-each select="old"> + <xsl:if test="position() < 10"> + <hr/> + <h1 style="margin:0px;">Release <xsl:value-of select="@name"/></h1> + <xsl:if test="@date"> + <u>Release date</u>: <xsl:value-of select="@date"/> + </xsl:if> + <br/> + <u>Major Changes in this Release</u>: + <table cellspacing="5" cellpadding="0" width="100%"> + <tr> + <td width="15"></td> + <td><pre><xsl:value-of select="."/></pre></td> + </tr> + </table> + </xsl:if> + </xsl:for-each> + <br/> + <br/> + <br/> + <center><a href="old_release_notes.html">Old Release Notes</a></center> + <br/> + + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="old_release_notes"> + <xsl:for-each select="document('release_notes.xml')/doc/body/release_notes/old"> + <xsl:if test="position() >= 10"> + <h1 style="margin:0px;">Release <xsl:value-of select="@name"/></h1> + <xsl:if test="@date"> + <u>Release date</u>: <xsl:value-of select="@date"/> + </xsl:if> + <br/> + <u>Major Changes in this Release</u>: + <table cellspacing="5" cellpadding="0" width="100%"> + <tr> + <td width="15"></td> + <td><pre><xsl:value-of select="."/></pre></td> + </tr> + </table> + <xsl:if test="position() != last()"> + <hr/> + </xsl:if> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="description"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="body"> + <xsl:choose> + <xsl:when test="@from_file"> + <xsl:apply-templates select="document(@from_file)"/> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="text"> + <br/> + <pre><xsl:apply-templates/></pre> + </xsl:template> + + + <xsl:template match="h3"> + <a name="{.}"/> + <h3> + <xsl:apply-templates/> + </h3> + </xsl:template> + + <xsl:template match="h2"> + <a name="{.}"/> + <h2> + <xsl:apply-templates/> + </h2> + </xsl:template> + + <xsl:template match="h1"> + <a name="{.}"/> + <h1> + <xsl:apply-templates/> + </h1> + </xsl:template> + + <xsl:template match="preserve_space"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="p"> + <p> + <xsl:apply-templates/> + </p> + </xsl:template> + <xsl:template match="center"> + <center> + <xsl:apply-templates/> + </center> + </xsl:template> + <xsl:template match="pre"> + <pre> + <xsl:apply-templates/> + </pre> + </xsl:template> + <xsl:template match="blockquote"> + <blockquote> + <xsl:apply-templates/> + </blockquote> + </xsl:template> + <xsl:template match="anchor"> + <a name="{.}"/> + </xsl:template> + <xsl:template match="br"> + <br/> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="youtube"> + <iframe width="900" height="506" src="{@src}" frameborder="0" allowfullscreen='1'></iframe> + </xsl:template> + + <xsl:template match="a"> + <a href="{@href}"> + <xsl:apply-templates/> + </a> + </xsl:template> + <xsl:template match="script"> + <script type="{@type}" language="{@language}" src="{@src}"> + <xsl:apply-templates/> + </script> + </xsl:template> + <xsl:template match="tt"> + <tt> + <xsl:apply-templates/> + </tt> + </xsl:template> + <xsl:template match="chm"> + <xsl:if test="$is_chm = 'true'"> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + <xsl:template match="web"> + <xsl:if test="$is_chm != 'true'"> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + <xsl:template match="td"> + <xsl:if test="@colspan"> + <td align="center" colspan="{@colspan}"> + <xsl:apply-templates/> + </td> + </xsl:if> + <xsl:if test="not(@colspan)"> + <td align="center"> + <xsl:apply-templates/> + </td> + </xsl:if> + </xsl:template> + <xsl:template match="tr"> + <tr> + <xsl:apply-templates/> + </tr> + </xsl:template> + <xsl:template match="table"> + <table> + <xsl:apply-templates/> + </table> + </xsl:template> + <xsl:template match="more_details"> + <a style="float:none" class='more_details'>More Details...</a> + </xsl:template> + <xsl:template match="div"> + <div id="{@id}"><xsl:apply-templates/></div> + </xsl:template> + <xsl:template match="li"> + <li> + <xsl:apply-templates/> + </li> + </xsl:template> + <xsl:template match="ul"> + <xsl:if test="@style"> + <ul style="{@style}"> + <xsl:apply-templates/> + </ul> + </xsl:if> + <xsl:if test="not(@style)"> + <ul> + <xsl:apply-templates/> + </ul> + </xsl:if> + </xsl:template> + <xsl:template match="ol"> + <ol> + <xsl:apply-templates/> + </ol> + </xsl:template> + <xsl:template match="u"> + <u> + <xsl:apply-templates/> + </u> + </xsl:template> + <xsl:template match="i"> + <i> + <xsl:apply-templates/> + </i> + </xsl:template> + <xsl:template match="b"> + <b> + <xsl:apply-templates/> + </b> + </xsl:template> + <xsl:template match="U"> + <u> + <xsl:apply-templates/> + </u> + </xsl:template> + <xsl:template match="I"> + <i> + <xsl:apply-templates/> + </i> + </xsl:template> + <xsl:template match="B"> + <b> + <xsl:apply-templates/> + </b> + </xsl:template> + <xsl:template match="font"> + <xsl:if test="@style"> + <font color="{@color}" style="{@style}"> + <xsl:apply-templates/> + </font> + </xsl:if> + <xsl:if test="not(@style)"> + <font color="{@color}"> + <xsl:apply-templates/> + </font> + </xsl:if> + </xsl:template> + <xsl:template match="image"> + <img src="{@src}" border="0"/> + </xsl:template> + <xsl:template match="img"> + <img src="{@src}" border="0" height="{@height}" width="{@width}" alt="{@alt}"> + <xsl:apply-templates/> + </img> + </xsl:template> + <xsl:template match="video"> + <video controls="true" poster="{@src}.png"> + <source src="{@src}.webm" type="video/webm"/> + <source src="{@src}.mp4" type="video/mp4"/> + <xsl:apply-templates/> + </video> + </xsl:template> + + <xsl:template name="term_list_go"> + <xsl:param name="num"/> + <xsl:if test="$num < 27"> + <xsl:variable name="cur_letter" select="substring($ucletters, $num, 1)"/> + + <div style="padding:1em"> + <div style="display: inline-block;width:100% "> + <a name="{$cur_letter}"/> + + <h1><xsl:value-of select="$cur_letter"/></h1> + <xsl:for-each select="term"> + <xsl:sort order="ascending" select="translate(@name,$lcletters, $ucletters)"/> + <xsl:variable name="alt" select="1+(position() mod 2)"/> + <xsl:variable name="line" select="concat('line',format-number($alt,'0'))"/> + <xsl:if test="$cur_letter = substring(translate(@name,$lcletters, $ucletters),1,1)"> + <xsl:choose> + <xsl:when test="@link"> + <div class='{$line}'><div class='name'><a href="{@link}"><xsl:value-of select="@name"/></a></div> + <div class='inc'><xsl:if test='@include'><b>#include <<xsl:value-of select="@include"/>></b></xsl:if></div> + </div> + </xsl:when> + <xsl:when test="@file"> + <div class='{$line}'><div class='name'><a href="{@file}#{@name}"><xsl:value-of select="@name"/></a></div> + <div class='inc'><xsl:if test='@include'><b>#include <<xsl:value-of select="@include"/>></b></xsl:if></div> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@name"/> + <div style="padding-left: 50px;"> + <xsl:for-each select="term"> + <xsl:sort order="ascending" select="translate(@name,$lcletters, $ucletters)"/> + <xsl:variable name="alt2" select="1+(($alt+position()) mod 2)"/> + <xsl:variable name="line2" select="concat('line',format-number($alt2,'0'))"/> + <div class='{$line2}'><div class='name'><a href="{@link}"><xsl:value-of select="@name"/></a></div> + <div class='inc'><xsl:if test='@include'><b>#include <<xsl:value-of select="@include"/>></b></xsl:if></div> + </div> + </xsl:for-each> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + </div> + </div> + + <xsl:call-template name="term_list_go" > + <xsl:with-param name="num" select="$num + 1"/> + </xsl:call-template> + + </xsl:if> + </xsl:template> + + + <xsl:template match="term_list"> + <center> + <div style="font-size:1.2em"> + <a href="#A">[A]</a> + <a href="#B">[B]</a> + <a href="#C">[C]</a> + <a href="#D">[D]</a> + <a href="#E">[E]</a> + <a href="#F">[F]</a> + <a href="#G">[G]</a> + <a href="#H">[H]</a> + <a href="#I">[I]</a> + <a href="#J">[J]</a> + <a href="#K">[K]</a> + <a href="#L">[L]</a> + <a href="#M">[M]</a> + <a href="#N">[N]</a> + <a href="#O">[O]</a> + <a href="#P">[P]</a> + <a href="#Q">[Q]</a> + <a href="#R">[R]</a> + <a href="#S">[S]</a> + <a href="#T">[T]</a> + <a href="#U">[U]</a> + <a href="#V">[V]</a> + <a href="#W">[W]</a> + <a href="#X">[X]</a> + <a href="#Y">[Y]</a> + <a href="#Z">[Z]</a> + </div> + </center> + <xsl:call-template name="term_list_go" > + <xsl:with-param name="num" select="1"/> + </xsl:call-template> + </xsl:template> + + + + <!-- This function turns a string of the form 2006-03-21T02:35:20+00:00 into a nice + normal looking date --> + <xsl:template name="format-date"> + <xsl:param name="xsd-date"/> + <xsl:variable name="date" select="substring-before($xsd-date,'T')"/> + <xsl:variable name="time" select="substring-after($xsd-date,'T')"/> + + <xsl:variable name="year" select="substring($date,1,4)"/> + <xsl:variable name="month" select="substring($date,6,2)"/> + <xsl:variable name="day" select="substring($date,9,2)"/> + <xsl:variable name="lhour" select="substring($time,1,2)"/> + <xsl:variable name="lminute" select="substring($time,4,2)"/> + <xsl:variable name="second" select="substring($time,7,2)"/> + + <xsl:variable name="ohour" select="substring($time,10,2)"/> + <xsl:variable name="ominute" select="substring($time,13,2)"/> + + + <xsl:choose> + <xsl:when test="$month = 1">Jan </xsl:when> + <xsl:when test="$month = 2">Feb </xsl:when> + <xsl:when test="$month = 3">Mar </xsl:when> + <xsl:when test="$month = 4">Apr </xsl:when> + <xsl:when test="$month = 5">May </xsl:when> + <xsl:when test="$month = 6">Jun </xsl:when> + <xsl:when test="$month = 7">Jul </xsl:when> + <xsl:when test="$month = 8">Aug </xsl:when> + <xsl:when test="$month = 9">Sep </xsl:when> + <xsl:when test="$month = 10">Oct </xsl:when> + <xsl:when test="$month = 11">Nov </xsl:when> + <xsl:when test="$month = 12">Dec </xsl:when> + </xsl:choose> + + <xsl:variable name="op" select="substring($time,9,1)"/> + <xsl:if test="$op = '-'"> + <xsl:variable name="hour" select="format-number(number($lhour)-number($ohour),'00')"/> + <xsl:variable name="minute" select="format-number(number($lminute)-number($ominute),'00')"/> + <xsl:value-of select="$day"/>, <xsl:value-of select="$year"/> + (<xsl:value-of select="$hour"/>:<xsl:value-of select="$minute"/>:<xsl:value-of select="$second"/> UTC) + </xsl:if> + <xsl:if test="$op = '+'"> + <xsl:variable name="hour" select="format-number(number($lhour)+number($ohour),'00')"/> + <xsl:variable name="minute" select="format-number(number($lminute)+number($ominute),'00')"/> + <xsl:value-of select="$day"/>, <xsl:value-of select="$year"/> + (<xsl:value-of select="$hour"/>:<xsl:value-of select="$minute"/>:<xsl:value-of select="$second"/> UTC) + </xsl:if> + + </xsl:template> + + + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ******* Subversion stylesheet stuff ******************** --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + + + <!-- ************************************************************************* --> + + + <xsl:template match="log"> + <xsl:for-each select="logentry"> + <xsl:sort order="descending" data-type="number" select="./@revision"/> + <u>Revision</u>: <xsl:value-of select="substring(@node,1,16)"/> <br/> + <u>Author</u>: <a href="mailto:{author/@email}"><xsl:value-of select="author"/></a> <br/> + <u>Date</u>: <xsl:call-template name="format-date"><xsl:with-param name="xsd-date" select="date"/></xsl:call-template> <br/> + <xsl:apply-templates select="msg"/> + <xsl:apply-templates select="paths"/> + <hr class="fullhr"/> + </xsl:for-each> + </xsl:template> + + + + + + <!-- ************************************************************************* --> + + <xsl:template name="paths"> + <xsl:param name="type"/> + <xsl:param name="name"/> + <xsl:param name="color"/> + + <xsl:if test="path[@action=$type]"> + + <div class="logb"> + <div class="bsolid"><b><font color="{$color}"><xsl:value-of select="$name"/></font></b></div> + <xsl:for-each select="path[@action = $type]"> + <xsl:sort select="."/> + <xsl:choose> + <xsl:when test="position() mod 2 = 0"> + <div class="row1"><xsl:value-of select="."/></div> + </xsl:when> + <xsl:otherwise> + <div class="row2"><xsl:value-of select="."/></div> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </div> + </xsl:if> + </xsl:template> + + <!-- ************************************************************************* --> + <xsl:template match="paths"> + <xsl:call-template name="paths"> + <xsl:with-param name="type">M</xsl:with-param> + <xsl:with-param name="name">Modified</xsl:with-param> + <xsl:with-param name="color">black</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="paths"> + <xsl:with-param name="type">A</xsl:with-param> + <xsl:with-param name="name">Added</xsl:with-param> + <xsl:with-param name="color">blue</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="paths"> + <xsl:with-param name="type">D</xsl:with-param> + <xsl:with-param name="name">Deleted</xsl:with-param> + <xsl:with-param name="color">red</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="paths"> + <xsl:with-param name="type">R</xsl:with-param> + <xsl:with-param name="name">Deleted</xsl:with-param> + <xsl:with-param name="color">red</xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="msg"> + <p style="margin:0.4em"><xsl:value-of select="."/></p> + </xsl:template> + + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- XSLT for dealing with <code> blocks generated by the htmlify to-xml option --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + <xsl:template match="code"> + + <h1>Classes and Structs:</h1> + <xsl:for-each select="classes/class"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <xsl:apply-templates select="."/> + </xsl:for-each> + + <h1>Global Functions:</h1> + <xsl:for-each select="global_functions/function"> + <xsl:sort select="translate(concat(name,.),$lcletters, $ucletters)"/> + <div class="function"> + <a onclick="Toggle(this)" style="cursor: pointer"><img src="plus.gif" border="0"/><font color="blue"> + <u><b><xsl:value-of select="name"/>()</b></u></font></a> + <div style="display:none;"> + <br/> + <xsl:if test="scope != ''"> + <u>Scope</u>: <xsl:value-of select="scope"/> <br/> + </xsl:if> + <u>File</u>: <xsl:value-of select="file"/> <br/><br/> + <div style="margin-left:1.5em"> + <pre style="font-size:1.1em;"><xsl:value-of select="declaration"/>;</pre> + <font color="#009900"><pre><xsl:value-of select="comment"/></pre></font> + </div> + <br/> + </div> + </div> + </xsl:for-each> + + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="class"> + <div class="class"> + <a onclick="Toggle(this)" style="cursor: pointer"><img src="plus.gif" border="0"/><font color="blue"> + <u><b><xsl:value-of select="name"/></b></u></font></a> + <div style="display:none;"> + <br/> + <xsl:if test="scope != ''"> + <u>Scope</u>: <xsl:value-of select="scope"/> <br/> + </xsl:if> + <u>File</u>: <xsl:value-of select="file"/> <br/><br/> + <div style="margin-left:1.5em"> + <pre style="font-size:1.1em;"><xsl:value-of select="declaration"/>;</pre> <br/> + <font color="#009900"><pre><xsl:value-of select="comment"/></pre></font> <br/> + </div> + + <xsl:if test="protected_typedefs"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Protected Typedefs</u></font></a> + <div style="display:none;"> + <ul> + <xsl:for-each select="protected_typedefs/typedef"> + <li><xsl:value-of select="."/>;</li> + </xsl:for-each> + </ul> + </div> + <br/> + </xsl:if> + + <xsl:if test="public_typedefs"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0" style="size:2em"/><font color="blue"> + <u style="font-size:2em">Public Typedefs</u></font></a> + <div style="display:none;"> + <ul> + <xsl:for-each select="public_typedefs/typedef"> + <li><xsl:value-of select="."/>;</li> + </xsl:for-each> + </ul> + </div> + <br/> + </xsl:if> + + <xsl:if test="protected_variables"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Protected Variables</u></font></a> + <div style="display:none;"> + <ul> + <xsl:for-each select="protected_variables/variable"> + <li><xsl:value-of select="."/>;</li> + </xsl:for-each> + </ul> + </div> + <br/> + </xsl:if> + + <xsl:if test="public_variables"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Public Variables</u></font></a> + <div style="display:none;"> + <ul> + <xsl:for-each select="public_variables/variable"> + <li><xsl:value-of select="."/>;</li> + </xsl:for-each> + </ul> + </div> + <br/> + </xsl:if> + + <xsl:if test="protected_methods"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Protected Methods</u></font></a> + <div style="display:none;"> + <xsl:for-each select="protected_methods/method"> + <div class="function"> + <u>Method Name</u>: <b><xsl:value-of select="name"/></b> <br/><br/> + <div style="margin-left:1.5em"> + <pre style="font-size:1.1em;"><xsl:value-of select="declaration"/>;</pre> + <font color="#009900"><pre><xsl:value-of select="comment"/></pre></font> <br/> + </div> + </div> + </xsl:for-each> + </div> + <br/> + </xsl:if> + + <xsl:if test="public_methods"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Public Methods</u></font></a> + <div style="display:none;"> + <xsl:for-each select="public_methods/method"> + <div class="function"> + <u>Method Name</u>: <b><xsl:value-of select="name"/></b> <br/><br/> + <div style="margin-left:1.5em"> + <pre style="font-size:1.1em;"><xsl:value-of select="declaration"/>;</pre> + <font color="#009900"><pre><xsl:value-of select="comment"/></pre></font> <br/> + </div> + </div> + </xsl:for-each> + </div> + <br/> + </xsl:if> + + <xsl:if test="protected_inner_classes"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Protected Inner Classes</u></font></a> + <div style="display:none;"> + <xsl:for-each select="protected_inner_classes/class"> + <xsl:apply-templates select="."/> + </xsl:for-each> + </div> + <br/> + </xsl:if> + + <xsl:if test="public_inner_classes"> + <a onclick="BigToggle(this)" style="cursor: pointer"><img src="bigplus.gif" border="0"/><font color="blue"> + <u style="font-size:2em">Public Inner Classes</u></font></a> + <div style="display:none;"> + <xsl:for-each select="public_inner_classes/class"> + <xsl:apply-templates select="."/> + </xsl:for-each> + </div> + <br/> + </xsl:if> + + </div> + </div> + </xsl:template> + + <!-- ************************************************************************* --> + + <xsl:template match="code_box"> + <pre class="code_box"><xsl:apply-templates/></pre> + </xsl:template> + + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + <!-- ************************************************************************* --> + + + + +</xsl:stylesheet> diff --git a/ml/dlib/docs/docs/term_index.xml b/ml/dlib/docs/docs/term_index.xml new file mode 100644 index 00000000..f3a0f08e --- /dev/null +++ b/ml/dlib/docs/docs/term_index.xml @@ -0,0 +1,1801 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> + +<doc> + <title>Index</title> + + <!-- ************************************************************************* --> + + <body> + <term_list> + + <term file="algorithms.html" name="integrate_function_adapt_simp" include="dlib/numerical_integration.h"/> + + <term file="algorithms.html" name="numeric_constants" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="pi" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="e" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="sqrt_2" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="sqrt_3" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="light_spd" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="newton_G" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="planck_cst" include="dlib/numeric_constants.h"/> + + <term link="dlib/numeric_constants.h.html" name="log10_2" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="golden_ratio" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="euler_gamma" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="glaisher" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="catalan" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="khinchin" include="dlib/numeric_constants.h"/> + <term link="dlib/numeric_constants.h.html" name="apery" include="dlib/numeric_constants.h"/> + + <term file="dlib/revision.h.html" name="DLIB_MAJOR_VERSION" include="dlib/revision.h"/> + <term file="dlib/revision.h.html" name="DLIB_MINOR_VERSION" include="dlib/revision.h"/> + + + + <term file="dlib/algs.h.html" name="stack_based_memory_block" include="dlib/algs.h"/> + <term file="dlib/dnn/utilities_abstract.h.html" name="net_to_xml" include="dlib/dnn.h"/> + <term file="dlib/dnn/utilities_abstract.h.html" name="log1pexp" include="dlib/dnn.h"/> + <term file="dlib/dnn/utilities_abstract.h.html" name="randomize_parameters" include="dlib/dnn.h"/> + <term file="dlib/dnn/utilities_abstract.h.html" name="input_tensor_to_output_tensor" include="dlib/dnn.h"/> + <term file="dlib/dnn/utilities_abstract.h.html" name="output_tensor_to_input_tensor" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tuple_head" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tuple_tail" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="get_learning_rate_multiplier" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="get_weight_decay_multiplier" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="sstack" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="make_sstack" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="repeat_group" include="dlib/dnn.h"/> + + <term file="ml.html" name="add_layer" include="dlib/dnn.h"/> + <term file="ml.html" name="add_loss_layer" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="repeat_group" include="dlib/dnn.h"/> + <term file="ml.html" name="repeat" include="dlib/dnn.h"/> + <term file="ml.html" name="add_tag_layer" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag_id" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag1" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag2" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag3" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag4" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag5" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag6" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag7" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag8" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag9" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="tag10" include="dlib/dnn.h"/> + <term file="ml.html" name="add_skip_layer" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip1" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip2" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip3" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip4" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip5" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip6" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip7" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip8" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip9" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="skip10" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="layer" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="input_layer" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layers" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layers_until_tag" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layer_parameters" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layer_parameter_gradients" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layers_backwards" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layers_backwards_range" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="visit_layers_range" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="test_layer" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="layer_test_results" include="dlib/dnn.h"/> + + <term file="dlib/dnn/core_abstract.h.html" name="dnn_prefer_fastest_algorithms" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="set_dnn_prefer_fastest_algorithms" include="dlib/dnn.h"/> + <term file="dlib/dnn/core_abstract.h.html" name="set_dnn_prefer_smallest_algorithms" include="dlib/dnn.h"/> + + <term file="dlib/dnn/cuda_errors.h.html" name="cuda_error" include="dlib/dnn.h"/> + <term file="dlib/dnn/cuda_errors.h.html" name="cudnn_error" include="dlib/dnn.h"/> + <term file="dlib/dnn/cuda_errors.h.html" name="curand_error" include="dlib/dnn.h"/> + <term file="dlib/dnn/cuda_errors.h.html" name="cublas_error" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="fc_bias_mode" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="FC_HAS_BIAS" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="FC_NO_BIAS" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="layer_mode" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="CONV_MODE" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="FC_MODE" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="set_all_bn_running_stats_window_sizes" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="tensor" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="resizable_tensor" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="alias_tensor_instance" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="alias_tensor_const_instance" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="alias_tensor" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="image_plane" include="dlib/dnn.h"/> + <term file="dlib/dnn/tensor_abstract.h.html" name="have_same_dimensions" include="dlib/dnn.h"/> + <term file="dlib/dnn/gpu_data_abstract.h.html" name="gpu_data" include="dlib/dnn.h"/> + <term name="memcpy"> + <term link="dlib/dnn/tensor_abstract.h.html#memcpy" name="for tensors" include="dlib/dnn.h" /> + <term link="dlib/dnn/gpu_data_abstract.h.html#memcpy" name="for gpu_data" include="dlib/dnn.h" /> + </term> + + <term file="dlib/dnn/input_abstract.h.html" name="EXAMPLE_INPUT_LAYER" include="dlib/dnn.h"/> + <term file="ml.html" name="input" include="dlib/dnn.h"/> + <term file="ml.html" name="input_rgb_image" include="dlib/dnn.h"/> + <term file="ml.html" name="input_rgb_image_sized" include="dlib/dnn.h"/> + <term file="ml.html" name="input_rgb_image_pyramid" include="dlib/dnn.h"/> + + <term file="ml.html" name="dnn_trainer" include="dlib/dnn.h"/> + + <term file="dlib/dnn/trainer_abstract.h.html" name="force_flush_to_disk" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="EXAMPLE_LOSS_LAYER_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_binary_hinge_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_binary_log_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_multimulticlass_log_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_multiclass_log_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_multiclass_log_per_pixel_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_multiclass_log_per_pixel_weighted_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_mean_squared_per_pixel_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_ranking_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_dot_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="loss_epsilon_insensitive_" include="dlib/dnn.h"/> + <term file="ml.html" name="loss_metric_" include="dlib/dnn.h"/> + <term file="ml.html" name="loss_mean_squared_" include="dlib/dnn.h"/> + <term file="ml.html" name="loss_mean_squared_multioutput_" include="dlib/dnn.h"/> + <term file="ml.html" name="loss_mmod_" include="dlib/dnn.h"/> + <term file="dlib/dnn/loss_abstract.h.html" name="mmod_options" include="dlib/dnn.h"/> + + <term file="dlib/dnn/solvers_abstract.h.html" name="EXAMPLE_SOLVER" include="dlib/dnn.h"/> + <term file="dlib/dnn/solvers_abstract.h.html" name="sgd" include="dlib/dnn.h"/> + <term file="dlib/dnn/solvers_abstract.h.html" name="adam" include="dlib/dnn.h"/> + + <term file="dlib/dnn/layers_abstract.h.html" name="num_fc_outputs" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="num_con_outputs" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="EXAMPLE_COMPUTATIONAL_LAYER_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="fc_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="con_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="mult_prev_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="extract_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="upsample_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="cont_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="scale_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="l2normalize_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="dropout_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="multiply_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="bn_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="affine_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="max_pool_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="avg_pool_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="relu_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="prelu_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="sig_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="htan_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="softmax_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="softmax_all_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="add_prev_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="concat_" include="dlib/dnn.h"/> + <term file="dlib/dnn/layers_abstract.h.html" name="inception" include="dlib/dnn.h"/> + + <term name="mat"> + <term link="linear_algebra.html#mat" name="general use" include="dlib/matrix.h" /> + <term link="dlib/dnn/tensor_abstract.h.html#mat" name="for tensors" include="dlib/dnn.h" /> + </term> + <term file="linear_algebra.html" name="matrix" include="dlib/matrix.h"/> + <term file="linear_algebra.html" name="move_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="intersect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="area" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="translate_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="resize_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="resize_rect_width" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="resize_rect_height" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="centered_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="set_aspect_ratio" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="set_rect_area" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="center" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="nearest_point" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="nearest_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="distance_to_rect_edge" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="distance_to_line" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="clip_line_to_rectangle" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="shrink_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="grow_rect" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="dcenter" include="dlib/geometry.h"/> + + <term file="algorithms.html" name="kalman_filter" include="dlib/filtering.h"/> + <term file="algorithms.html" name="rls_filter" include="dlib/filtering.h"/> + + <term file="algorithms.html" name="momentum_filter" include="dlib/filtering.h"/> + <term file="algorithms.html" name="rect_filter" include="dlib/filtering.h"/> + <term file="algorithms.html" name="find_optimal_rect_filter" include="dlib/filtering.h"/> + <term file="algorithms.html" name="find_optimal_momentum_filter" include="dlib/filtering.h"/> + + <term file="dlib/error.h.html" name="error_type" include="dlib/error.h"/> + <term file="dlib/error.h.html" name="error" include="dlib/error.h"/> + <term file="dlib/error.h.html" name="fatal_error" include="dlib/error.h"/> + <term file="dlib/error.h.html" name="thread_error" include="dlib/error.h"/> + <term file="dlib/error.h.html" name="socket_error" include="dlib/error.h"/> + <term file="dlib/error.h.html" name="impossible_labeling_error" include="dlib/error.h"/> + + <term file="dlib/optimization/optimization_abstract.h.html" name="central_differences" include="dlib/optimization.h"/> + <term file="dlib/optimization/optimization_abstract.h.html" name="line_search_funct" include="dlib/optimization.h"/> + <term file="dlib/optimization/optimization_line_search_abstract.h.html" name="optimize_single_variable_failure" include="dlib/optimization.h"/> + <term file="dlib/optimization/optimization_bobyqa_abstract.h.html" name="bobyqa_failure" include="dlib/optimization.h"/> + <term file="dlib/optimization/optimization_oca_abstract.h.html" name="oca_problem" include="dlib/optimization.h"/> + <term file="dlib/svm/svm_abstract.h.html" name="platt_scale" include="dlib/svm.h"/> + <term file="ml.html" name="learn_platt_scaling" include="dlib/svm.h" /> + <term file="ml.html" name="structural_svm_problem" include="dlib/svm.h"/> + <term file="ml.html" name="structural_svm_problem_threaded" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_svm_object_detection_problem" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_object_detection_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="svm_struct_controller_node" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="svm_struct_processing_node" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="sequence_labeler" include="dlib/svm.h"/> + <term file="dlib/svm/sequence_labeler_abstract.h.html" name="contains_invalid_labeling" include="dlib/svm.h"/> + <term file="ml.html" name="structural_svm_sequence_labeling_problem" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_sequence_labeling_trainer" include="dlib/svm_threaded.h"/> + + <term file="ml.html" name="sequence_segmenter" include="dlib/svm.h"/> + <term file="dlib/svm/sequence_segmenter_abstract.h.html" name="total_feature_vector_size" include="dlib/svm.h"/> + <term file="ml.html" name="structural_sequence_segmentation_trainer" include="dlib/svm_threaded.h"/> + + <term file="ml.html" name="is_forced_assignment_problem" include="dlib/svm.h"/> + <term file="ml.html" name="is_assignment_problem" include="dlib/svm.h"/> + <term file="ml.html" name="is_track_association_problem" include="dlib/svm.h"/> + <term file="ml.html" name="is_graph_labeling_problem" include="dlib/svm_threaded.h"/> + <term file="dlib/svm/structural_svm_graph_labeling_problem_abstract.h.html" name="sizes_match" include="dlib/svm_threaded.h"/> + <term file="dlib/svm/structural_svm_graph_labeling_problem_abstract.h.html" name="all_values_are_nonnegative" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="assignment_function" include="dlib/svm.h"/> + <term file="ml.html" name="track_association_function" include="dlib/svm.h"/> + <term file="dlib/svm/track_association_function_abstract.h.html" name="feature_extractor_track_association" + include="dlib/svm.h"/> + <term file="dlib/svm/svm_abstract.h.html" name="labeled_detection" include="dlib/svm.h"/> + <term file="ml.html" name="graph_labeler" include="dlib/graph_cuts.h"/> + <term file="ml.html" name="test_assignment_function" include="dlib/svm.h"/> + <term file="ml.html" name="test_track_association_function" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="test_graph_labeling_function" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="cross_validate_assignment_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_track_association_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="cross_validate_graph_labeling_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_svm_assignment_problem" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_svm_graph_labeling_problem" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_assignment_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_track_association_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="structural_graph_labeling_trainer" include="dlib/svm_threaded.h"/> + + <term file="dlib/optimization/optimization_solve_qp2_using_smo_abstract.h.html" name="invalid_nu_error" include="dlib/optimization.h"/> + <term file="dlib/optimization/optimization_solve_qp2_using_smo_abstract.h.html" name="maximum_nu" include="dlib/optimization.h"/> + + <term file="optimization.html" name="derivative" include="dlib/optimization.h"/> + <term file="optimization.html" name="make_line_search_function" include="dlib/optimization.h"/> + <term file="optimization.html" name="poly_min_extrap" include="dlib/optimization.h"/> + <term file="optimization.html" name="lagrange_poly_min_extrap" include="dlib/optimization.h"/> + <term file="optimization.html" name="line_search" include="dlib/optimization.h"/> + <term file="optimization.html" name="backtracking_line_search" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_min" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_min_box_constrained" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_box_constrained" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_global" include="dlib/global_optimization.h"/> + <term file="optimization.html" name="find_min_global" include="dlib/global_optimization.h"/> + <term file="optimization.html" name="isotonic_regression" include="dlib/optimization.h"/> + <term file="optimization.html" name="global_function_search" include="dlib/global_optimization.h"/> + <term file="optimization.html" name="upper_bound_function" include="dlib/global_optimization.h"/> + <term file="optimization.html" name="call_function_and_expand_args" include="dlib/global_optimization.h"/> + <term file="dlib/global_optimization/find_max_global_abstract.h.html" name="FOREVER" include="dlib/global_optimization.h"/> + <term file="dlib/global_optimization/find_max_global_abstract.h.html" name="max_function_calls" include="dlib/global_optimization.h"/> + <term file="optimization.html" name="max_cost_assignment" include="dlib/optimization.h"/> + <term link="optimization.html#max_cost_assignment" name="Hungarian Algorithm" include="dlib/optimization.h"/> + <term file="optimization.html" name="max_sum_submatrix" include="dlib/optimization.h"/> + <term file="dlib/optimization/max_cost_assignment_abstract.h.html" name="assignment_cost" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_least_squares" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_least_squares_lm" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_min_trust_region" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_trust_region" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_factor_graph_nmplp" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_factor_graph_viterbi" include="dlib/optimization.h"/> + + <term file="optimization.html" name="find_max_parse_cky" include="dlib/optimization.h"/> + <term file="optimization.html" name="parse_tree_to_string" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_trees_not_rooted_with_tag" include="dlib/optimization.h"/> + <term link="optimization.html#parse_tree_to_string" name="parse_tree_to_string_tagged" include="dlib/optimization.h"/> + <term link="optimization.html#parse_tree_to_string" name="parse_trees_to_string" include="dlib/optimization.h"/> + <term link="optimization.html#parse_tree_to_string" name="parse_trees_to_string_tagged" include="dlib/optimization.h"/> + <term file="dlib/optimization/find_max_parse_cky_abstract.h.html" name="parse_tree_to_string_error" include="dlib/optimization.h"/> + <term file="dlib/optimization/find_max_parse_cky_abstract.h.html" name="constituent" include="dlib/optimization.h"/> + <term file="dlib/optimization/find_max_parse_cky_abstract.h.html" name="parse_tree_element" include="dlib/optimization.h"/> + <term file="dlib/optimization/find_max_parse_cky_abstract.h.html" name="END_OF_TREE" include="dlib/optimization.h"/> + + <term file="optimization.html" name="find_max_factor_graph_potts" include="dlib/graph_cuts.h" /> + <term file="optimization.html" name="min_cut" include="dlib/graph_cuts.h" /> + <term file="optimization.html" name="graph_cut_score" include="dlib/graph_cuts.h" /> + <term file="optimization.html" name="potts_model_score" include="dlib/graph_cuts.h" /> + <term file="dlib/graph_cuts/find_max_factor_graph_potts_abstract.h.html" name="make_potts_grid_problem" include="dlib/graph_cuts.h" /> + <term file="dlib/graph_cuts/min_cut_abstract.h.html" name="node_label" include="dlib/graph_cuts.h" /> + <term link="dlib/graph_cuts/min_cut_abstract.h.html#node_label" name="SOURCE_CUT" include="dlib/graph_cuts.h" /> + <term link="dlib/graph_cuts/min_cut_abstract.h.html#node_label" name="SINK_CUT" include="dlib/graph_cuts.h" /> + <term link="dlib/graph_cuts/min_cut_abstract.h.html#node_label" name="FREE_NODE" include="dlib/graph_cuts.h" /> + + <term file="optimization.html" name="solve_trust_region_subproblem" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_trust_region_subproblem_bounded" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_min_single_variable" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_min_using_approximate_derivatives" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_min_bobyqa" include="dlib/optimization.h"/> + <!-- DEPRECATED <term file="optimization.html" name="find_optimal_parameters" include="dlib/optimization/find_optimal_parameters.h"/> --> + <term file="optimization.html" name="elastic_net" include="dlib/optimization/elastic_net.h"/> + <term file="optimization.html" name="solve_qp_box_constrained" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_qp_box_constrained_blockdiag" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_qp_using_smo" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_gap_between_convex_hulls" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_qp2_using_smo" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_qp3_using_smo" include="dlib/optimization.h"/> + <term file="optimization.html" name="solve_qp4_using_smo" include="dlib/optimization.h"/> + <term file="optimization.html" name="oca" include="dlib/optimization.h"/> + <term file="optimization.html" name="mpc" include="dlib/control.h"/> + <term link="optimization.html#find_min_bobyqa" name="BOBYQA" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_single_variable" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_using_approximate_derivatives" include="dlib/optimization.h"/> + <term file="optimization.html" name="find_max_bobyqa" include="dlib/optimization.h"/> + <term file="optimization.html" name="objective_delta_stop_strategy" include="dlib/optimization.h"/> + <term file="optimization.html" name="gradient_norm_stop_strategy" include="dlib/optimization.h"/> + <term file="optimization.html" name="negate_function" include="dlib/optimization.h"/> + <term file="optimization.html" name="clamp_function" include="dlib/optimization.h"/> + <term file="optimization.html" name="cg_search_strategy" include="dlib/optimization.h"/> + <term file="optimization.html" name="bfgs_search_strategy" include="dlib/optimization.h"/> + <term file="optimization.html" name="newton_search_strategy" include="dlib/optimization.h"/> + <term file="optimization.html" name="newton_search_strategy_obj" include="dlib/optimization.h"/> + <term file="optimization.html" name="lbfgs_search_strategy" include="dlib/optimization.h"/> + + <term file="bayes.html" name="set_node_value" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_value" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_is_evidence" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="set_node_as_evidence" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="set_node_as_nonevidence" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="set_node_num_values" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_num_values" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_probability" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="set_node_probability" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="assignment" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="joint_probability_table" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="conditional_probability_table" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="bayes_node" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="bayesian_network_gibbs_sampler" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="bayesian_network_join_tree" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_first_parent_assignment" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_next_parent_assignment" include="dlib/bayes_utils.h"/> + <term file="bayes.html" name="node_cpt_filled_out" include="dlib/bayes_utils.h"/> + + <term file="algorithms.html" name="hash_samples" include="dlib/graph_utils_threaded.h"/> + <term file="algorithms.html" name="hash_similar_angles_64" include="dlib/lsh.h"/> + <term file="algorithms.html" name="hash_similar_angles_128" include="dlib/lsh.h"/> + <term file="algorithms.html" name="hash_similar_angles_256" include="dlib/lsh.h"/> + <term file="algorithms.html" name="hash_similar_angles_512" include="dlib/lsh.h"/> + <term file="algorithms.html" name="projection_hash" include="dlib/lsh.h"/> + <term file="algorithms.html" name="create_random_projection_hash" include="dlib/lsh.h"/> + <term file="algorithms.html" name="create_max_margin_projection_hash" include="dlib/lsh.h"/> + <term file="imaging.html" name="randomly_sample_image_features" include="dlib/statistics.h"/> + <term file="algorithms.html" name="disjoint_subsets" include="dlib/disjoint_subsets.h"/> + <term file="algorithms.html" name="disjoint_subsets_sized" include="dlib/disjoint_subsets.h"/> + <term link="algorithms.html#disjoint_subsets" name="union-find" include="dlib/disjoint_subsets.h"/> + <term file="linear_algebra.html" name="rectangle" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="drectangle" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="border_enumerator" include="dlib/geometry.h"/> + <term file="graph_tools.html" name="edge" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="is_join_tree" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="create_join_tree" include="dlib/graph_utils.h"/> + <term file="algorithms.html" name="set_intersection_size" include="dlib/set_utils.h"/> + <term file="algorithms.html" name="set_intersection" include="dlib/set_utils.h"/> + <term file="algorithms.html" name="set_union" include="dlib/set_utils.h"/> + <term file="algorithms.html" name="set_difference" include="dlib/set_utils.h"/> + + <term file="algorithms.html" name="hsort_array" include="dlib/sort.h"/> + <term file="algorithms.html" name="put_in_range" include="dlib/algs.h"/> + <term file="algorithms.html" name="isort_array" include="dlib/sort.h"/> + + <term file="algorithms.html" name="median" include="dlib/algs.h"/> + <term file="algorithms.html" name="qsort_array" include="dlib/sort.h"/> + <term file="algorithms.html" name="split_array" include="dlib/array.h"/> + <term file="algorithms.html" name="rand" include="dlib/rand.h"/> + <term link="algorithms.html#rand" name="Mersenne Twister" include="dlib/rand.h"/> + <term file="graph_tools.html" name="graph_contains_undirected_cycle" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="graph_has_symmetric_edges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="graph_contains_directed_cycle" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="copy_graph_structure" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="copy_graph" include="dlib/graph_utils.h"/> + + <term file="graph_tools.html" name="create_moral_graph" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="triangulate_graph_and_find_cliques" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="graph_contains_length_one_cycle" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="find_connected_nodes" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="graph_is_connected" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="is_clique" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="is_maximal_clique" include="dlib/graph_utils.h"/> + <term file="algorithms.html" name="square_root" include="dlib/algs.h"/> + <term file="linear_algebra.html" name="vector" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="point" include="dlib/geometry.h"/> + <term file="dlib/geometry/vector_abstract.h.html" name="dpoint" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="rotate_point" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="point_rotator" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="point_transform" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="point_transform_affine" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="rectangle_transform" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="camera_transform" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="point_transform_affine3d" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="rotate_around_x" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="rotate_around_y" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="rotate_around_z" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="translate_point" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="find_affine_transform" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="find_similarity_transform" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="point_transform_projective" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="find_projective_transform" include="dlib/geometry.h"/> + <term file="linear_algebra.html" name="rotation_matrix" include="dlib/geometry.h"/> + <term file="algorithms.html" name="running_stats" include="dlib/statistics.h"/> + <term file="algorithms.html" name="running_stats_decayed" include="dlib/statistics.h"/> + <term file="algorithms.html" name="running_scalar_covariance_decayed" include="dlib/statistics.h"/> + <term file="algorithms.html" name="running_gradient" include="dlib/statistics/running_gradient.h"/> + <term file="algorithms.html" name="find_upper_quantile" include="dlib/statistics/running_gradient.h"/> + <term file="dlib/statistics/running_gradient_abstract.h.html" name="probability_gradient_greater_than" include="dlib/statistics/running_gradient.h"/> + <term file="dlib/statistics/running_gradient_abstract.h.html" name="probability_gradient_less_than" include="dlib/statistics/running_gradient.h"/> + <term file="algorithms.html" name="count_steps_without_decrease_robust" include="dlib/statistics/running_gradient.h"/> + <term file="algorithms.html" name="count_steps_without_decrease" include="dlib/statistics/running_gradient.h"/> + <term file="algorithms.html" name="count_steps_without_increase" include="dlib/statistics/running_gradient.h"/> + <term file="algorithms.html" name="running_scalar_covariance" include="dlib/statistics.h"/> + <term file="algorithms.html" name="mean_sign_agreement" include="dlib/statistics.h"/> + <term file="algorithms.html" name="correlation" include="dlib/statistics.h"/> + <term file="algorithms.html" name="covariance" include="dlib/statistics.h"/> + <term file="algorithms.html" name="r_squared" include="dlib/statistics.h"/> + <term file="algorithms.html" name="mean_squared_error" include="dlib/statistics.h"/> + <term file="algorithms.html" name="running_covariance" include="dlib/statistics.h"/> + <term file="algorithms.html" name="running_cross_covariance" include="dlib/statistics.h"/> + <term file="algorithms.html" name="random_subset_selector" include="dlib/statistics.h"/> + <term file="algorithms.html" name="randomly_subsample" include="dlib/statistics.h"/> + <term file="algorithms.html" name="event_correlation" include="dlib/statistics.h"/> + <term file="algorithms.html" name="binomial_random_vars_are_different" include="dlib/statistics.h"/> + + <term file="ml.html" name="lspi" include="dlib/control.h"/> + <term file="ml.html" name="policy" include="dlib/control.h"/> + <term file="ml.html" name="process_sample" include="dlib/control.h"/> + <term file="ml.html" name="select_all_distinct_labels" include="dlib/svm.h"/> + <term file="dlib/svm/multiclass_tools_abstract.h.html" name="find_missing_pairs" include="dlib/svm.h"/> + + <term file="ml.html" name="svm_multiclass_linear_trainer" include="dlib/svm_threaded.h"/> + <term link="ml.html#svm_multiclass_linear_trainer" name="Multiclass SVM" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="one_vs_one_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="one_vs_one_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="multiclass_linear_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="one_vs_all_trainer" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="one_vs_all_decision_function" include="dlib/svm.h"/> + + <term file="dlib/svm/pegasos_abstract.h.html" name="replicate_settings" include="dlib/svm.h"/> + <term file="ml.html" name="mlp" include="dlib/mlp.h"/> + <term file="dlib/data_io/image_dataset_metadata.h.html" name="image" include="dlib/data_io.h"/> + <term file="dlib/data_io/image_dataset_metadata.h.html" name="box" include="dlib/data_io.h"/> + <term file="dlib/data_io/image_dataset_metadata.h.html" name="dataset" include="dlib/data_io.h"/> + <term file="dlib/data_io/load_image_dataset_abstract.h.html" name="image_dataset_file" include="dlib/data_io.h"/> + <term link="ml.html#load_image_dataset_metadata" name="image_dataset_metadata" include="dlib/data_io.h"/> + <term file="ml.html" name="load_image_dataset_metadata" include="dlib/data_io.h"/> + <term file="ml.html" name="load_image_dataset" include="dlib/data_io.h"/> + <term file="ml.html" name="save_image_dataset_metadata" include="dlib/data_io.h"/> + <term file="ml.html" name="load_libsvm_formatted_data" include="dlib/data_io.h"/> + <term file="ml.html" name="save_libsvm_formatted_data" include="dlib/data_io.h"/> + <term file="ml.html" name="load_mnist_dataset" include="dlib/data_io.h"/> + <term file="linear_algebra.html" name="sparse_to_dense" include="dlib/sparse_vector.h"/> + <term file="ml.html" name="fix_nonzero_indexing" include="dlib/data_io.h"/> + <term link="ml.html#mlp" name="multi-layer perceptron" include="dlib/mlp.h"/> + <term link="ml.html#mlp" name="neural network" include="dlib/mlp.h"/> + <term file="ml.html" name="svm_pegasos" include="dlib/svm.h"/> + <term file="ml.html" name="empirical_kernel_map" include="dlib/svm.h"/> + + <term file="graph_tools.html" name="sample_pair" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="ordered_sample_pair" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="order_by_index" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="order_by_distance" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="order_by_descending_distance" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="order_by_distance_and_index" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="find_percent_shortest_edges_randomly" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="find_k_nearest_neighbors" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="find_k_nearest_neighbors_lsh" include="dlib/graph_utils_threaded.h"/> + <term file="graph_tools.html" name="remove_short_edges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="remove_duplicate_edges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="is_ordered_by_index" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="convert_unordered_to_ordered" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="find_neighbor_ranges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="remove_long_edges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="remove_percent_longest_edges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="remove_percent_shortest_edges" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="find_approximate_k_nearest_neighbors" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="contains_duplicate_pairs" include="dlib/graph_utils.h"/> + <term name="max_index_plus_one"> + <term link="graph_tools.html#max_index_plus_one" name="for graphs" include="dlib/graph_utils.h"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#max_index_plus_one" name="for sparse vectors" include="dlib/sparse_vector.h"/> + <term link="dlib/svm/ranking_tools_abstract.h.html#max_index_plus_one" name="for ranking_pairs" include="dlib/svm.h"/> + </term> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="sparse_matrix_vector_multiply" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="make_sparse_vector" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="make_sparse_vector_inplace" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="add_to" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="subtract_from" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="assign" include="dlib/sparse_vector.h"/> + + <term file="ml.html" name="linear_manifold_regularizer" include="dlib/manifold_regularization.h"/> + <term file="graph_tools.html" name="squared_euclidean_distance" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="cosine_distance" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="negative_dot_product_distance" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="use_weights_of_one" include="dlib/graph_utils.h"/> + <term file="graph_tools.html" name="use_gaussian_weights" include="dlib/graph_utils.h"/> + + <term file="dlib/svm/empirical_kernel_map_abstract.h.html" name="empirical_kernel_map_error" include="dlib/svm.h"/> + <term file="dlib/svm/empirical_kernel_map_abstract.h.html" name="convert_to_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="kernel_matrix" include="dlib/svm.h"/> + <term file="ml.html" name="batch" include="dlib/svm.h"/> + <term file="ml.html" name="verbose_batch" include="dlib/svm.h"/> + <term file="ml.html" name="batch_cached" include="dlib/svm.h"/> + <term file="ml.html" name="verbose_batch_cached" include="dlib/svm.h"/> + <term file="ml.html" name="batch_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="randomize_samples" include="dlib/svm.h"/> + <term file="ml.html" name="simplify_linear_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="is_binary_classification_problem" include="dlib/svm.h"/> + <term file="ml.html" name="is_sequence_labeling_problem" include="dlib/svm.h"/> + <term file="ml.html" name="is_sequence_segmentation_problem" include="dlib/svm.h"/> + <term file="ml.html" name="is_learning_problem" include="dlib/svm.h"/> + <term file="ml.html" name="svm_nu_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svm_c_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svm_one_class_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svm_c_linear_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svm_c_linear_dcd_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svm_rank_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="shape_predictor_trainer" include="dlib/image_processing.h"/> + <term file="ml.html" name="make_bounding_box_regression_training_data" include="dlib/image_processing.h"/> + <term file="ml.html" name="test_shape_predictor" include="dlib/image_processing.h"/> + <term file="imaging.html" name="shape_predictor" include="dlib/image_processing.h"/> + <term file="imaging.html" name="render_face_detections" include="dlib/image_processing/render_face_detections.h"/> + <term file="ml.html" name="ranking_pair" include="dlib/svm.h"/> + <term file="ml.html" name="is_ranking_problem" include="dlib/svm.h"/> + <term file="ml.html" name="count_ranking_inversions" include="dlib/svm.h"/> + <term file="ml.html" name="average_precision" include="dlib/statistics.h"/> + <term file="ml.html" name="equal_error_rate" include="dlib/statistics.h"/> + <term file="ml.html" name="compute_roc_curve" include="dlib/statistics.h"/> + <term file="dlib/statistics/lda.h.html" name="roc_point" include="dlib/statistics.h"/> + <term file="ml.html" name="test_ranking_function" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_ranking_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svm_c_ekm_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="rvm_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="krr_trainer" include="dlib/svm.h"/> + + <term file="ml.html" name="random_forest_regression_trainer" include="dlib/random_forest.h"/> + <term file="ml.html" name="random_forest_regression_function" include="dlib/random_forest.h"/> + <term file="dlib/random_forest/random_forest_regression_abstract.h.html" name="dense_feature_extractor" include="dlib/random_forest.h"/> + <term file="dlib/random_forest/random_forest_regression_abstract.h.html" name="internal_tree_node" include="dlib/random_forest.h"/> + + <term file="ml.html" name="rr_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svr_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="svr_linear_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="rvm_regression_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="rbf_network_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="reduced" include="dlib/svm.h"/> + <term file="ml.html" name="reduced_decision_function_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="reduced2" include="dlib/svm.h"/> + <term file="ml.html" name="approximate_distance_function" include="dlib/svm.h"/> + <term file="ml.html" name="reduced_decision_function_trainer2" include="dlib/svm.h"/> + <term file="ml.html" name="train_probabilistic_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="probabilistic" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_object_detection_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_sequence_labeler" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_sequence_segmenter" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_trainer_threaded" include="dlib/svm_threaded.h"/> + <term file="ml.html" name="cross_validate_multiclass_trainer" include="dlib/svm.h"/> + <term file="dlib/svm/cross_validate_multiclass_trainer_abstract.h.html" name="cross_validation_error" include="dlib/svm.h"/> + <term file="ml.html" name="cross_validate_regression_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="test_binary_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="test_object_detection_function" include="dlib/svm.h"/> + <term file="ml.html" name="test_multiclass_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="test_regression_function" include="dlib/svm.h"/> + <term file="ml.html" name="test_sequence_labeler" include="dlib/svm.h"/> + <term file="ml.html" name="test_sequence_segmenter" include="dlib/svm.h"/> + <term link="ml.html#svm_nu_trainer" name="support vector machine" include="dlib/svm.h"/> + <term link="ml.html#rvm_trainer" name="relevance vector machine" include="dlib/svm.h"/> + <term link="ml.html#krr_trainer" name="kernel ridge regression" include="dlib/svm.h"/> + <term link="ml.html#rr_trainer" name="ridge regression" include="dlib/svm.h"/> + <term link="ml.html#svr_trainer" name="support vector regression" include="dlib/svm.h"/> + <term link="ml.html#krr_trainer" name="regularized least squares" include="dlib/svm.h"/> + <term link="ml.html#krr_trainer" name="least squares SVM" include="dlib/svm.h"/> + <term file="ml.html" name="krls" include="dlib/svm.h"/> + <term file="ml.html" name="rls" include="dlib/svm.h"/> + <term file="ml.html" name="kcentroid" include="dlib/svm.h"/> + <term file="ml.html" name="linearly_independent_subset_finder" include="dlib/svm.h"/> + <term file="ml.html" name="fill_lisf" include="dlib/svm.h"/> + <term file="ml.html" name="sort_basis_vectors" include="dlib/svm.h"/> + <term file="ml.html" name="rank_unlabeled_training_samples" include="dlib/svm.h"/> + <term file="ml.html" name="vector_normalizer" include="dlib/statistics.h"/> + <term file="ml.html" name="vector_normalizer_frobmetric" include="dlib/statistics.h"/> + <term file="ml.html" name="compute_lda_transform" include="dlib/statistics.h"/> + <term file="ml.html" name="frobmetric_training_sample" include="dlib/statistics.h"/> + <term file="ml.html" name="vector_normalizer_pca" include="dlib/statistics.h"/> + <term file="ml.html" name="discriminant_pca" include="dlib/statistics.h"/> + <term file="ml.html" name="sammon_projection" include="dlib/statistics.h"/> + <term file="ml.html" name="cca" include="dlib/statistics.h"/> + <term file="dlib/statistics/dpca_abstract.h.html" name="discriminant_pca_error" include="dlib/statistics.h"/> + <term file="ml.html" name="kkmeans" include="dlib/clustering.h"/> + <term file="ml.html" name="find_clusters_using_kmeans" include="dlib/clustering.h"/> + <term file="ml.html" name="find_clusters_using_angular_kmeans" include="dlib/clustering.h"/> + <term file="ml.html" name="nearest_center" include="dlib/clustering.h"/> + <term file="ml.html" name="newman_cluster" include="dlib/clustering.h"/> + <term file="ml.html" name="spectral_cluster" include="dlib/clustering.h"/> + <term file="ml.html" name="chinese_whispers" include="dlib/clustering.h"/> + <term file="ml.html" name="bottom_up_cluster" include="dlib/clustering.h"/> + <term file="ml.html" name="segment_number_line" include="dlib/clustering.h"/> + <term file="dlib/clustering/bottom_up_cluster_abstract.h.html" name="snl_range" include="dlib/clustering.h"/> + <term file="ml.html" name="modularity" include="dlib/clustering.h"/> + <term file="ml.html" name="pick_initial_centers" include="dlib/clustering.h"/> + <term file="ml.html" name="rank_features" include="dlib/svm.h"/> + <term file="ml.html" name="find_gamma_with_big_centroid_gap" include="dlib/svm.h"/> + <term file="ml.html" name="compute_mean_squared_distance" include="dlib/svm.h"/> + <term file="dlib/svm/feature_ranking_abstract.h.html" name="verbose_find_gamma_with_big_centroid_gap" include="dlib/svm.h"/> + + <term file="ml.html" name="null_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="null_trainer_type" include="dlib/svm.h"/> + <term file="ml.html" name="roc_c1_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="roc_c2_trainer" include="dlib/svm.h"/> + <term file="ml.html" name="roc_trainer_type" include="dlib/svm.h"/> + + <term file="ml.html" name="decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="projection_function" include="dlib/svm.h"/> + <term file="ml.html" name="normalized_function" include="dlib/svm.h"/> + <term file="ml.html" name="distance_function" include="dlib/svm.h"/> + <term file="ml.html" name="probabilistic_decision_function" include="dlib/svm.h"/> + <term file="ml.html" name="probabilistic_function" include="dlib/svm.h"/> + <term file="ml.html" name="linear_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="histogram_intersection_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="offset_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="polynomial_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="sigmoid_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="radial_basis_kernel" include="dlib/svm.h"/> + + + <term link="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors" name="unsorted sparse vectors"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#sparse_vectors" name="sparse vectors"/> + <term file="ml.html" name="sparse_linear_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="sparse_histogram_intersection_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="sparse_polynomial_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="sparse_sigmoid_kernel" include="dlib/svm.h"/> + <term file="ml.html" name="sparse_radial_basis_kernel" include="dlib/svm.h"/> + + <term link="dlib/svm/kernel_abstract.h.html#Kernel_Function_Objects" name="Kernel Function Objects"/> + <term file="dlib/svm/kernel_abstract.h.html" name="kernel_derivative" include="dlib/svm.h"/> + + <term file="containers.html" name="unordered_pair" include="dlib/unordered_pair.h"/> + <term file="containers.html" name="std_vector_c" include="dlib/stl_checked.h"/> + <term file="containers.html" name="graph" include="dlib/graph.h"/> + <term file="containers.html" name="directed_graph" include="dlib/directed_graph.h"/> + <term file="containers.html" name="array" include="dlib/array.h"/> + <term file="containers.html" name="binary_search_tree" include="dlib/binary_search_tree.h"/> + <term file="containers.html" name="enumerable" include="dlib/interfaces/enumerable.h"/> + <term file="containers.html" name="map_pair" include="dlib/interfaces/map_pair.h"/> + <term file="containers.html" name="map" include="dlib/map.h"/> + + + <term file="dlib/matrix/matrix_abstract.h.html" name="matrix_colmajor" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_abstract.h.html" name="fmatrix_colmajor" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_abstract.h.html" name="csv" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_data_layout_abstract.h.html" name="row_major_layout" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_data_layout_abstract.h.html" name="column_major_layout" include="dlib/matrix.h"/> + + <term file="dlib/matrix/matrix_exp_abstract.h.html" name="matrix_exp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_abstract.h.html" name="const_temp_matrix" include="dlib/matrix.h"/> + + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="sigmoid" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="reciprocal" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="reciprocal_max" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="round" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="round_zeros" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="complex_matrix" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="normalize" include="dlib/matrix.h"/> + + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="abs" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="acos" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="asin" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="atan" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="ceil" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="conj" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="cos" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="cosh" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="cubed" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="exp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="floor" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="imag" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="log10" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="log" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="norm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="pow" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="real" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="sinh" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="sin" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="sqrt" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="tanh" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="tan" include="dlib/matrix.h"/> + + + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="linspace" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="linpiece" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="logspace" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="cartesian_product" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="randm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="gaussian_randm" include="dlib/matrix.h"/> + + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="diag" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="diag_exp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="diagm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="trans" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="flip" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="fliplr" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="flipud" include="dlib/matrix.h"/> + + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="conv" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="conv_same" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="conv_valid" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="xcorr" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="xcorr_fft" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="xcorr_same" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_conv_abstract.h.html" name="xcorr_valid" include="dlib/matrix.h"/> + + <term file="dlib/matrix/symmetric_matrix_cache_abstract.h.html" name="symmetric_matrix_cache" include="dlib/matrix.h"/> + + <term name="dot"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#dot" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#dot" name="for sparse vectors" include="dlib/sparse_vector.h"/> + <term link="dlib/dnn/tensor_abstract.h.html#dot" name="for tensors" include="dlib/dnn.h"/> + </term> + + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="lowerm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="upperm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="make_symmetric" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="zeros_matrix" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="ones_matrix" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="uniform_matrix" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="identity_matrix" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="rotate" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="removerc" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="remove_row" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="remove_col" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="matrix_cast" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="set_all_elements" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="tmp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="reshape_to_column_vector" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="reshape" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="squared" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_math_functions_abstract.h.html" name="cubed" include="dlib/matrix.h"/> + + <term name="is_vector"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#is_vector" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/dnn/tensor_abstract.h.html#is_vector" name="for tensor objects" include="dlib/dnn.h"/> + </term> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="is_row_vector" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="is_col_vector" include="dlib/matrix.h"/> + <term name="is_finite"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#is_finite" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/algs.h.html#is_finite" name="for scalar values" include="dlib/algs.h"/> + </term> + <term file="dlib/matrix/matrix_fft_abstract.h.html" name="fft" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_fft_abstract.h.html" name="ifft" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_fft_abstract.h.html" name="is_power_of_two" include="dlib/matrix.h"/> + + + <term file="dlib/matrix/matrix_la_abstract.h.html" name="lu_decomposition" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="qr_decomposition" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="cholesky_decomposition" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="eigenvalue_decomposition" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="inv" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="inv_lower_triangular" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="inv_upper_triangular" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="pinv" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="real_eigenvalues" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="svd" include="dlib/matrix.h"/> + <term link="dlib/matrix/matrix_la_abstract.h.html#svd" name="singular value decomposition" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="svd2" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="svd3" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="svd_fast" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="orthogonalize" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="det" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="trace" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_la_abstract.h.html" name="chol" include="dlib/matrix.h"/> + + + + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="rowm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="rowm_exp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="colm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="colm_exp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="subm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="subm_clipped" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="range" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="set_rowm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="set_colm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="set_subm" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_subexp_abstract.h.html" name="set_ptrm" include="dlib/matrix.h"/> + + + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="min_pointwise" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="max_pointwise" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="pointwise_multiply" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="join_rows" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="join_cols" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="equal" include="dlib/matrix.h"/> + + + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="scale_columns" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="scale_rows" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="sort_columns" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="rsort_columns" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="tensor_product" include="dlib/matrix.h"/> + + <term name="length"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#length" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#length" name="for sparse vectors" include="dlib/sparse_vector.h"/> + </term> + + <term name="length_squared"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#length_squared" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#length_squared" name="for sparse vectors" include="dlib/sparse_vector.h"/> + </term> + + <term name="min"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#min" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#min" name="for sparse vectors" include="dlib/sparse_vector.h"/> + </term> + <term name="max"> + <term link="dlib/matrix/matrix_utilities_abstract.h.html#max" name="for matrix objects" include="dlib/matrix.h"/> + <term link="dlib/svm/sparse_vector_abstract.h.html#max" name="for sparse vectors" include="dlib/sparse_vector.h"/> + </term> + + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="find_min_and_max" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="max_point" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="max_point_interpolated" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="min_point" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="index_of_max" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="index_of_min" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="sum" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="is_row_major" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="sum_rows" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="sum_cols" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="prod" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="mean" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="variance" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="stddev" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="covariance" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="pixel_to_vector" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="vector_to_pixel" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="clamp" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="lowerbound" include="dlib/matrix.h"/> + <term file="dlib/matrix/matrix_utilities_abstract.h.html" name="upperbound" include="dlib/matrix.h"/> + + + <term file="dlib/svm/sparse_vector_abstract.h.html" name="scale_by" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="add" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="subtract" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="distance_squared" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="distance" include="dlib/sparse_vector.h"/> + <term file="dlib/svm/sparse_vector_abstract.h.html" name="has_unsigned_keys" include="dlib/sparse_vector.h"/> + + <term file="containers.html" name="remover" include="dlib/interfaces/remover.h"/> + <term file="containers.html" name="set" include="dlib/set.h"/> + <term file="containers.html" name="stack" include="dlib/stack.h"/> + <term file="containers.html" name="any" include="dlib/any.h"/> + <term file="containers.html" name="any_function" include="dlib/any.h"/> + <term file="containers.html" name="any_trainer" include="dlib/any.h"/> + <term file="containers.html" name="any_decision_function" include="dlib/any.h"/> + + <term file="metaprogramming.html" name="compile_time_integer_list" include="dlib/metaprogramming.h"/> + <term file="metaprogramming.html" name="make_compile_time_integer_range" include="dlib/metaprogramming.h"/> + <term file="metaprogramming.html" name="enable_if" include="dlib/enable_if.h"/> + <term file="metaprogramming.html" name="disable_if" include="dlib/enable_if.h"/> + + <term file="metaprogramming.html" name="tmin" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="tmax" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="tabs" include="dlib/algs.h"/> + + <term file="metaprogramming.html" name="unsigned_type" include="dlib/uintn.h"/> + <term file="metaprogramming.html" name="DLIB_ASSERT" include="dlib/assert.h"/> + <term link="metaprogramming.html#DLIB_ASSERT" name="ENABLE_ASSERTS"/> + <term link="metaprogramming.html#DLIB_ASSERT" name="dlib_assert_breakpoint"/> + <term file="metaprogramming.html" name="ASSERT_ARE_NOT_SAME_TYPE" include="dlib/assert.h"/> + <term file="metaprogramming.html" name="ASSERT_ARE_SAME_TYPE" include="dlib/assert.h"/> + <term file="metaprogramming.html" name="DLIB_CASSERT" include="dlib/assert.h"/> + <term file="metaprogramming.html" name="COMPILE_TIME_ASSERT" include="dlib/assert.h"/> + <term file="metaprogramming.html" name="DLIB_ASSERT_HAS_STANDARD_LAYOUT" include="dlib/assert.h"/> + <term file="other.html" name="MATLAB" /> + <term file="other.html" name="java" /> + <term file="other.html" name="TIME_THIS" include="dlib/time_this.h"/> + <term link="other.html#timing code blocks" name="print" include="dlib/timing.h"/> + <term file="other.html" name="timing code blocks" include="dlib/timing.h"/> + <term link="other.html#timing code blocks" name="start" include="dlib/timing.h"/> + <term link="other.html#timing code blocks" name="stop" include="dlib/timing.h"/> + <term link="other.html#TIME_THIS" name="TIME_THIS_TO" include="dlib/time_this.h"/> + <term file="metaprogramming.html" name="_dT" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_pointer_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_const_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_reference_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_same_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_float_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_same_object" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_convertible" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_complex" include="dlib/matrix.h"/> + <term file="metaprogramming.html" name="is_function" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="wrap_function" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_signed_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_unsigned_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="noncopyable" include="dlib/noncopyable.h"/> + <term link="metaprogramming.html#portability_macros" name="portability macros"/> + <term file="metaprogramming.html" name="static_switch" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="is_graph" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_array2d" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_array" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_rand" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_matrix" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_config_reader" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_std_vector" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_pair" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_directed_graph" include="dlib/is_kind.h"/> + <term file="metaprogramming.html" name="is_built_in_scalar_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="promote" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="basic_type" include="dlib/algs.h"/> + <term file="metaprogramming.html" name="assign_zero_if_built_in_scalar_type" include="dlib/algs.h"/> + + + <term link="dlib/platform.h.html" name="POSIX" include="dlib/platform.h"/> + <term link="dlib/platform.h.html" name="MACOSX" include="dlib/platform.h"/> + <term link="dlib/platform.h.html" name="HPUX" include="dlib/platform.h"/> + <term link="dlib/platform.h.html" name="WIN32" include="dlib/platform.h"/> + + <term link="dlib/float_details.h.html" name="float_details" include="dlib/float_details.h"/> + <term file="other.html" name="copy_functor" include="dlib/algs.h"/> + <term file="other.html" name="deserialize" include="dlib/serialize.h"/> + <term file="other.html" name="ramdump" include="dlib/serialize.h"/> + <term file="other.html" name="check_serialized_version" include="dlib/serialize.h"/> + <term file="other.html" name="error" include="dlib/error.h"/> + <term file="other.html" name="memory_manager" include="dlib/memory_manager.h"/> + <term file="other.html" name="default_memory_manager" include="dlib/algs.h"/> + <term file="other.html" name="memory_manager_global" include="dlib/memory_manager_global.h"/> + <term file="other.html" name="serialize" include="dlib/serialize.h"/> + <term file="other.html" name="uint8" include="dlib/uintn.h"/> + <term file="other.html" name="uint16" include="dlib/uintn.h"/> + <term file="other.html" name="uint32" include="dlib/uintn.h"/> + <term file="other.html" name="uint64" include="dlib/uintn.h"/> + <term file="other.html" name="int8" include="dlib/uintn.h"/> + <term file="other.html" name="int16" include="dlib/uintn.h"/> + <term file="other.html" name="int32" include="dlib/uintn.h"/> + <term file="other.html" name="int64" include="dlib/uintn.h"/> + <term file="other.html" name="zero_extend_cast" include="dlib/uintn.h"/> + + <term name="kernel"> + <term link="intro.html#Notation" name="in notation overview"/> + <term link="intro.html#Creating Objects" name="regarding creating objects"/> + </term> + + <term link="intro.html#Notation" name="extension"/> + <term link="intro.html#Notation" name="abstract"/> + <term link="intro.html#Notation" name="requires"/> + <term link="intro.html#Notation" name="ensures"/> + <term link="intro.html#Notation" name="throws"/> + <term link="intro.html#meaning_of_hash" name="# symbol in comments"/> + <term file="intro.html" name="CONVENTION"/> + + + <term link="intro.html#Creating Objects" name="debugging modes: enable/disable"/> + + + <term file="other.html" name="console_progress_indicator" include="dlib/console_progress_indicator.h"/> + + <term link="api.html#gui_core" name="gui"/> + <term file="api.html" name="gui_core"/> + <term file="api.html" name="gui_widgets"/> + <term file="api.html" name="misc_api"/> + <term file="api.html" name="dir_nav"/> + <term file="api.html" name="sockets"/> + <term file="api.html" name="threads"/> + + <term file="api.html" name="auto_mutex" include="dlib/threads.h"/> + <term file="api.html" name="auto_unlock" include="dlib/threads.h"/> + <term file="api.html" name="auto_mutex_readonly" include="dlib/threads.h"/> + <term file="api.html" name="auto_unlock_readonly" include="dlib/threads.h"/> + <term link="api.html#create_new_thread%20extension" name="create_new_thread extension" include="dlib/threads.h"/> + <term file="api.html" name="multithreaded_object" include="dlib/threads.h"/> + <term file="api.html" name="rmutex" include="dlib/threads.h"/> + <term file="api.html" name="read_write_mutex" include="dlib/threads.h"/> + <term file="api.html" name="rsignaler" include="dlib/threads.h"/> + <term file="api.html" name="thread_function" include="dlib/threads.h"/> + <term file="api.html" name="thread_specific_data" include="dlib/threads.h"/> + <term file="api.html" name="threaded_object" include="dlib/threads.h"/> + <term file="api.html" name="thread_pool" include="dlib/threads.h"/> + <term file="api.html" name="async" include="dlib/threads.h"/> + <term file="api.html" name="default_thread_pool" include="dlib/threads.h"/> + <term link="api.html#default_thread_pool" name="DLIB_NUM_THREADS" /> + <term file="api.html" name="parallel_for" include="dlib/threads.h"/> + <term link="api.html#parallel_for" name="parallel_for_blocked" include="dlib/threads.h"/> + <term link="api.html#parallel_for" name="parallel_for_verbose" include="dlib/threads.h"/> + <term link="api.html#thread_pool" name="futures" include="dlib/threads.h"/> + + + <term file="compile.html" name="DLIB_ISO_CPP_ONLY"/> + <term file="compile.html" name="DLIB_NO_GUI_SUPPORT"/> + <term file="compile.html" name="NO_MAKEFILE"/> + <term file="compile.html" name="DLIB_THREAD_POOL_TIMEOUT"/> + + <term file="dlib/threads/threads_kernel_abstract.h.html" name="get_thread_id" include="dlib/threads.h"/> + <term file="dlib/threads/threads_kernel_abstract.h.html" name="is_dlib_thread" include="dlib/threads.h"/> + <term file="dlib/threads/threads_kernel_abstract.h.html" name="register_thread_end_handler" include="dlib/threads.h"/> + <term file="dlib/threads/threads_kernel_abstract.h.html" name="unregister_thread_end_handler" include="dlib/threads.h"/> + <term file="dlib/threads/threads_kernel_abstract.h.html" name="create_new_thread" include="dlib/threads.h"/> + <term file="dlib/threads/threads_kernel_abstract.h.html" name="mutex" include="dlib/threads.h"/> + <term file="dlib/threads/threads_kernel_abstract.h.html" name="signaler" include="dlib/threads.h"/> + + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="sleep" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="get_current_dir" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="set_current_dir" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="locally_change_current_dir" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="set_current_dir_error" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="dir_create_error" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="create_directory" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="timestamper" include="dlib/misc_api.h"/> + <term file="dlib/misc_api/misc_api_kernel_abstract.h.html" name="get_timestamp" include="dlib/misc_api.h"/> + + + <term file="dlib/dir_nav/dir_nav_kernel_abstract.h.html" name="get_filesystem_roots" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_kernel_abstract.h.html" name="file" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_kernel_abstract.h.html" name="file_not_found" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_kernel_abstract.h.html" name="directory" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_kernel_abstract.h.html" name="dir_not_found" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_kernel_abstract.h.html" name="listing_error" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="get_files_in_directory_tree" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="get_parent_directory" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="file_exists" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="select_oldest_file" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="select_newest_file" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="match_ending" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="match_endings" include="dlib/dir_nav.h"/> + <term file="dlib/dir_nav/dir_nav_extensions_abstract.h.html" name="match_all" include="dlib/dir_nav.h"/> + + + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="wait_until_closed" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="put_on_clipboard" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="get_from_clipboard" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="canvas" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="base_window" include="dlib/gui_core.h"/> + + + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="trigger_user_event" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="invalidate_rectangle" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="close_window" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="is_closed" include="dlib/gui_core.h"/> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#is_closed" name="set_title" include="dlib/gui_core.h"/> + + <term name="set_pos"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#set_pos" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#set_pos" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="get_pos" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="get_size" include="dlib/gui_core.h"/> + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="get_display_size" include="dlib/gui_core.h"/> + + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="on_window_close" include="dlib/gui_core.h"/> + + <term name="on_user_event"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_user_event" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_user_event" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_window_resized"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_window_resized" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_window_resized" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_window_moved"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_window_moved" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_window_moved" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_mouse_down"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_mouse_down" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_down" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_mouse_up"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_mouse_up" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_up" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_mouse_move"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_mouse_move" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_move" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_mouse_leave"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_mouse_leave" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_leave" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_mouse_enter"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_mouse_enter" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_enter" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_focus_gained"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_focus_gained" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_focus_gained" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_focus_lost"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_focus_lost" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_focus_lost" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_wheel_up"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_wheel_up" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_wheel_up" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_wheel_down"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_wheel_down" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_wheel_down" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_keydown"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_keydown" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_keydown" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + <term name="on_string_put"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#on_string_put" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#on_string_put" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + + <term file="dlib/gui_core/gui_core_kernel_abstract.h.html" name="paint" include="dlib/gui_core.h"/> + + + + + + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="set_background_color" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="z_order" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="set_z_order" include="dlib/gui_widgets.h"/> + + <term name="get_rect"> + <term link="dlib/gui_widgets/drawable_abstract.h.html#get_rect" name="in drawable object" include="dlib/gui_widgets.h"/> + <term link="linear_algebra.html#get_rect" name="for general matrix like objects" include="dlib/matrix.h"/> + </term> + + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="is_enabled" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="enable" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="disable" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="is_hidden" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="drawable_window" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="drawable" include="dlib/gui_widgets.h"/> + + <term name="show"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#show" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#show" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + <term name="hide"> + <term link="dlib/gui_core/gui_core_kernel_abstract.h.html#hide" name="in base_window object" include="dlib/gui_core.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#hide" name="in drawable object" include="dlib/gui_widgets.h"/> + </term> + + + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="parent_window" include="dlib/gui_widgets.h"/> + + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="rect" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="m" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="parent" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="hidden" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="enabled" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="lastx" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/drawable_abstract.h.html#drawable_protected_variables" name="lasty" include="dlib/gui_widgets.h"/> + + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="enable_events" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="disable_events" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="events_are_enabled" include="dlib/gui_widgets.h"/> + + <term name="draw_line"> + <term link="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_line" name="for the GUI canvas object" include="dlib/gui_widgets.h"/> + <term link="imaging.html#draw_line" name="for image/array2d objects" include="dlib/image_transforms.h"/> + </term> + + + <term file="dlib/gui_widgets/style_abstract.h.html" name="button_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="button_style_default" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="button_style_toolbar1" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="button_style_toolbar_icon1" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="button_style_arrow" include="dlib/gui_widgets.h"/> + + <term file="dlib/gui_widgets/style_abstract.h.html" name="list_box_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="list_box_style_default" include="dlib/gui_widgets.h"/> + + + <term file="dlib/gui_widgets/style_abstract.h.html" name="text_field_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="text_field_style_default" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="text_box_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="text_box_style_default" include="dlib/gui_widgets.h"/> + + + <term file="dlib/gui_widgets/style_abstract.h.html" name="toggle_button_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="toggle_button_style_default" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="toggle_button_style_check_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="toggle_button_style_radio_button" include="dlib/gui_widgets.h"/> + + + <term file="dlib/gui_widgets/style_abstract.h.html" name="scrollable_region_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="scrollable_region_style_default" include="dlib/gui_widgets.h"/> + + <term file="dlib/gui_widgets/style_abstract.h.html" name="scroll_bar_style" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/style_abstract.h.html" name="scroll_bar_style_default" include="dlib/gui_widgets.h"/> + + <term file="imaging.html" name="tile_images" include="dlib/image_transforms.h"/> + <term name="draw_rectangle"> + <term link="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rectangle" name="for the GUI canvas object" include="dlib/gui_widgets.h"/> + <term link="imaging.html#draw_rectangle" name="for image/array2d objects" include="dlib/image_transforms.h"/> + </term> + + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_circle" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_pixel" include="dlib/gui_widgets.h"/> + <term name="draw_solid_circle"> + <term link="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_circle" name="for the GUI canvas object" include="dlib/gui_widgets.h"/> + <term link="imaging.html#draw_solid_circle" name="for image/array2d objects" include="dlib/image_transforms.h"/> + </term> + + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_solid_convex_polygon" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_button_down" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_sunken_rectangle" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_button_up" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_checkered" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_image" include="dlib/gui_widgets.h"/> + <term name="fill_rect"> + <term link="dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect" name="for GUI canvas objects" include="dlib/gui_widgets.h"/> + <term link="imaging.html#fill_rect" name="for image/array2d objects" include="dlib/image_transforms.h"/> + </term> + + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="fill_rect_with_vertical_gradient" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="fill_gradient_rounded" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/canvas_drawing_abstract.h.html" name="draw_rounded_rectangle" include="dlib/gui_widgets.h"/> + + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="draw" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="set_main_font" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/drawable_abstract.h.html" name="main_font" include="dlib/gui_widgets.h"/> + + <term name="bottom"> + <term link="dlib/gui_widgets/drawable_abstract.h.html#bottom" name="in drawable object" include="dlib/gui_widgets.h"/> + <term link="dlib/geometry/rectangle_abstract.h.html#bottom" name="in rectangle object" include="dlib/geometry.h"/> + </term> + <term name="top"> + <term link="dlib/gui_widgets/drawable_abstract.h.html#top" name="in drawable object" include="dlib/gui_widgets.h"/> + <term link="dlib/geometry/rectangle_abstract.h.html#top" name="in rectangle object" include="dlib/geometry.h"/> + </term> + <term name="left"> + <term link="dlib/gui_widgets/drawable_abstract.h.html#left" name="in drawable object" include="dlib/gui_widgets.h"/> + <term link="dlib/geometry/rectangle_abstract.h.html#left" name="in rectangle object" include="dlib/geometry.h"/> + </term> + <term name="right"> + <term link="dlib/gui_widgets/drawable_abstract.h.html#right" name="in drawable object" include="dlib/gui_widgets.h"/> + <term link="dlib/geometry/rectangle_abstract.h.html#right" name="in rectangle object" include="dlib/geometry.h"/> + </term> + <term name="width"> + <term link="dlib/gui_widgets/drawable_abstract.h.html#width" name="in drawable object" include="dlib/gui_widgets.h"/> + <term link="dlib/geometry/rectangle_abstract.h.html#width" name="in rectangle object" include="dlib/geometry.h"/> + </term> + + + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="get_next_double_click" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="open_file_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="open_existing_file_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="save_file_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="message_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="message_box_blocking" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="label" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="toggle_button" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="text_grid" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="directed_graph_drawer" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="text_field" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="text_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="check_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="radio_button" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="tabbed_display" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="named_rectangle" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="mouse_tracker" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="list_box" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="menu_bar" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="image_display" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="image_window" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="perspective_display" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/widgets_abstract.h.html" name="perspective_window" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/widgets_abstract.h.html#overlay_line" name="overlay_line" include="dlib/gui_widgets.h"/> + <term link="dlib/gui_widgets/widgets_abstract.h.html#overlay_rect" name="overlay_rect" include="dlib/gui_widgets.h"/> + + <term file="dlib/gui_widgets/fonts_abstract.h.html" name="letter" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/fonts_abstract.h.html" name="font" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/fonts_abstract.h.html" name="default_font" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/fonts_abstract.h.html" name="get_native_font" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/fonts_abstract.h.html" name="bdf_font" include="dlib/gui_widgets.h"/> + + + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="button" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="draggable" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="button_action" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="zoomable_region" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="scrollable_region" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="mouse_over_event" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="tooltip" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="popup_menu_region" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="scroll_bar" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="widget_group" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="image_widget" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="popup_menu" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="menu_item" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="menu_item_text" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="menu_item_separator" include="dlib/gui_widgets.h"/> + <term file="dlib/gui_widgets/base_widgets_abstract.h.html" name="menu_item_submenu" include="dlib/gui_widgets.h"/> + + + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="get_local_hostname" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="hostname_to_ip" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="ip_to_hostname" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="create_listener" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="create_connection" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="connection" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_kernel_abstract.h.html" name="listener" include="dlib/sockets.h"/> + + + <term file="dlib/sockets/sockets_extensions_abstract.h.html" name="network_address" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_extensions_abstract.h.html" name="connect" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_extensions_abstract.h.html" name="is_ip_address" include="dlib/sockets.h"/> + <term file="dlib/sockets/sockets_extensions_abstract.h.html" name="close_gracefully" include="dlib/sockets.h"/> + + + + + + <term file="algorithms.html" name="max_scoring_element" include="dlib/algs.h"/> + <term file="algorithms.html" name="min_scoring_element" include="dlib/algs.h"/> + + <term file="algorithms.html" name="bigint" include="dlib/bigint.h"/> + <term file="algorithms.html" name="crc32" include="dlib/crc32.h"/> + <term file="algorithms.html" name="murmur_hash3" include="dlib/hash.h"/> + <term file="algorithms.html" name="murmur_hash3_128bit" include="dlib/hash.h"/> + <term file="algorithms.html" name="hash" include="dlib/hash.h"/> + <term file="algorithms.html" name="count_bits" include="dlib/hash.h"/> + <term file="algorithms.html" name="hamming_distance" include="dlib/hash.h"/> + <term file="algorithms.html" name="gaussian_random_hash" include="dlib/hash.h"/> + <term file="algorithms.html" name="uniform_random_hash" include="dlib/hash.h"/> + + + <term file="algorithms.html" name="md5" include="dlib/md5.h"/> + + + + + + + + + <term file="compression.html" name="compress_stream" include="dlib/compress_stream.h"/> + <term file="compression.html" name="conditioning_class" include="dlib/conditioning_class.h"/> + <term file="compression.html" name="entropy_decoder" include="dlib/entropy_decoder.h"/> + <term file="compression.html" name="entropy_decoder_model" include="dlib/entropy_decoder_model.h"/> + <term file="compression.html" name="entropy_encoder" include="dlib/entropy_encoder.h"/> + <term file="compression.html" name="entropy_encoder_model" include="dlib/entropy_encoder_model.h"/> + <term file="compression.html" name="lz77_buffer" include="dlib/lz77_buffer.h"/> + <term file="compression.html" name="lzp_buffer" include="dlib/lzp_buffer.h"/> + + + + <term file="dlib/ref.h.html" name="ref" include="dlib/ref.h"/> + <term file="dlib/ref.h.html" name="cref" include="dlib/ref.h"/> + <term file="containers.html" name="reference_wrapper" include="dlib/ref.h"/> + <term file="containers.html" name="tuple" include="dlib/tuple.h"/> + <term file="dlib/type_safe_union/type_safe_union_kernel_abstract.h.html" + name="bad_type_safe_union_cast" include="dlib/type_safe_union.h"/> + <term file="containers.html" name="type_safe_union" include="dlib/type_safe_union.h"/> + + <term file="containers.html" name="array2d" include="dlib/array2d.h"/> + + + <term file="containers.html" name="hash_map" include="dlib/hash_map.h"/> + <term file="containers.html" name="hash_set" include="dlib/hash_set.h"/> + <term file="containers.html" name="hash_table" include="dlib/hash_table.h"/> + + + <term file="containers.html" name="queue" include="dlib/queue.h"/> + <term file="containers.html" name="reference_counter" include="dlib/reference_counter.h"/> + + <term file="containers.html" name="sequence" include="dlib/sequence.h"/> + <term file="containers.html" name="sliding_buffer" include="dlib/sliding_buffer.h"/> + <term file="containers.html" name="circular_buffer" include="dlib/sliding_buffer.h"/> + <term file="containers.html" name="static_map" include="dlib/static_map.h"/> + <term file="containers.html" name="static_set" include="dlib/static_set.h"/> + + + + <term link="dlib/image_transforms/thresholding_abstract.h.html" name="on_pixel" include="dlib/image_transforms.h"/> + <term link="dlib/image_transforms/thresholding_abstract.h.html" name="off_pixel" include="dlib/image_transforms.h"/> + + + <term file="dlib/image_transforms/colormaps_abstract.h.html" name="colormap_heat" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/colormaps_abstract.h.html" name="colormap_jet" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="heatmap" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="jet" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="randomly_color_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="assign_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="assign_image_scaled" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="assign_all_pixels" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="assign_border_pixels" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="assign_pixel" include="dlib/pixel.h"/> + <term file="imaging.html" name="assign_pixel_intensity" include="dlib/pixel.h"/> + <term file="imaging.html" name="get_pixel_intensity" include="dlib/pixel.h"/> + <term file="imaging.html" name="hysteresis_threshold" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="sobel_edge_detector" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="suppress_non_maximum_edges" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="zero_border_pixels" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_close" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="edge_orientation" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_union" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_complement" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_difference" include="dlib/image_transforms.h"/> + + <term file="imaging.html" name="label_connected_blobs" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="segment_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="find_candidate_object_locations" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/segment_image_abstract.h.html" name="remove_duplicates" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/label_connected_blobs_abstract.h.html" name="neighbors_8" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/label_connected_blobs_abstract.h.html" name="neighbors_4" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/label_connected_blobs_abstract.h.html" name="connected_if_both_not_zero" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/label_connected_blobs_abstract.h.html" name="connected_if_equal" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/label_connected_blobs_abstract.h.html" name="zero_pixels_are_background" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/label_connected_blobs_abstract.h.html" name="nothing_is_background" include="dlib/image_transforms.h"/> + + <term file="imaging.html" name="binary_dilation" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_erosion" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_intersection" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="binary_open" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="equalize_histogram" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="get_histogram" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="hsi_pixel" include="dlib/pixel.h"/> + <term file="imaging.html" name="lab_pixel" include="dlib/pixel.h"/> + <term file="imaging.html" name="load_bmp" include="dlib/image_io.h"/> + <term file="imaging.html" name="load_png" include="dlib/image_io.h"/> + <term file="imaging.html" name="load_jpeg" include="dlib/image_io.h"/> + <term file="imaging.html" name="load_dng" include="dlib/image_io.h"/> + <term file="imaging.html" name="pixel_traits" include="dlib/pixel.h"/> + <term file="imaging.html" name="rgb_pixel" include="dlib/pixel.h"/> + <term file="imaging.html" name="bgr_pixel" include="dlib/pixel.h"/> + <term file="imaging.html" name="cv_image" include="dlib/opencv.h"/> + <term file="imaging.html" name="toMat" include="dlib/opencv.h"/> + <term link="imaging.html#cv_image" name="OpenCV Image"/> + <term file="imaging.html" name="rgb_alpha_pixel" include="dlib/pixel.h"/> + <term link="imaging.html#rgb_alpha_pixel" name="alpha"/> + <term file="imaging.html" name="save_bmp" include="dlib/image_io.h"/> + <term file="imaging.html" name="save_png" include="dlib/image_io.h"/> + <term file="imaging.html" name="save_jpeg" include="dlib/image_io.h"/> + <term file="imaging.html" name="load_image" include="dlib/image_io.h"/> + <term file="imaging.html" name="save_dng" include="dlib/image_io.h"/> + <term file="dlib/image_transforms/spatial_filtering_abstract.h.html" name="create_gaussian_filter" include="dlib/image_transforms.h"/> + <term name="gaussian"> + <term link="dlib/image_transforms/spatial_filtering_abstract.h.html#gaussian" name="1D Gaussian" include="dlib/image_transforms.h"/> + <term link="dlib/image_keypoint/surf_abstract.h.html#gaussian" name="2D Gaussian" include="dlib/image_keypoint.h"/> + </term> + <term file="imaging.html" name="gaussian_blur" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="spatially_filter_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="sum_filter" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="sum_filter_assign" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="max_filter" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="spatially_filter_image_separable" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="float_spatially_filter_image_separable" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="spatially_filter_image_separable_down" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="separable_3x3_filter_block_grayscale" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="separable_3x3_filter_block_rgb" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="pyramid_down" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="pyramid_disable" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="create_tiled_pyramid" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/image_pyramid_abstract.h.html" name="pyramid_rate" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/image_pyramid_abstract.h.html" name="find_pyramid_down_output_image_size" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/image_pyramid_abstract.h.html" name="image_to_tiled_pyramid" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/image_pyramid_abstract.h.html" name="tiled_pyramid_to_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="threshold_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="auto_threshold_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="png_loader" include="dlib/image_io.h"/> + <term file="imaging.html" name="jpeg_loader" include="dlib/image_io.h"/> + + <term file="imaging.html" name="interpolate_nearest_neighbor" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="interpolate_bilinear" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="interpolate_quadratic" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="transform_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="rotate_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="resize_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="extract_image_chips" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="random_cropper" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="sub_image" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="sub_image_proxy" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="extract_image_chip" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="chip_details" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="get_face_chip_details" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="get_mapping_to_chip" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="map_det_to_chip" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="chip_dims" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="pyramid_up" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="add_image_left_right_flips" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="add_image_rotations" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="flip_image_dataset_left_right" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="upsample_image_dataset" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="rotate_image_dataset" include="dlib/image_transforms.h"/> + + <term file="imaging.html" name="flip_image_left_right" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="flip_image_up_down" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="black_background" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="white_background" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/interpolation_abstract.h.html" name="no_background" include="dlib/image_transforms.h"/> + + <term file="imaging.html" name="make_uniform_lbp_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="extract_histogram_descriptors" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="extract_uniform_lbp_descriptors" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="extract_highdim_face_lbp_descriptors" include="dlib/image_transforms.h"/> + + <term file="imaging.html" name="integral_image" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="integral_image_generic" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="disturb_colors" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="random_color_transform" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="hough_transform" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="skeleton" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="hessian_pyramid" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="compute_dominant_angle" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="draw_surf_points" include="dlib/image_keypoint/draw_surf_points.h"/> + <term file="imaging.html" name="compute_surf_descriptor" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="extract_fhog_features" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="draw_fhog" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/fhog_abstract.h.html" name="fhog_to_image" include="dlib/image_transforms.h"/> + <term file="dlib/image_transforms/fhog_abstract.h.html" name="image_to_fhog" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="hog_image" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="fine_hog_image" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="poly_image" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="hashed_feature_image" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="binned_vector_feature_image" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="nearest_neighbor_feature_image" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="haar_x" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="haar_y" include="dlib/image_transforms.h"/> + <term file="imaging.html" name="get_interest_points" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="get_surf_points" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="interest_point" include="dlib/image_keypoint.h"/> + <term file="imaging.html" name="surf_point" include="dlib/image_keypoint.h"/> + + <term link="dlib/image_processing/generic_image.h.html" name="Generic image interface"/> + <term link="dlib/image_processing/generic_image.h.html" name="num_rows" include="dlib/image_processing.h"/> + <term link="dlib/image_processing/generic_image.h.html" name="num_columns" include="dlib/image_processing.h"/> + <term link="dlib/image_processing/generic_image.h.html" name="set_image_size" include="dlib/image_processing.h"/> + <term link="dlib/image_processing/generic_image.h.html" name="image_size" include="dlib/image_processing.h"/> + <term link="dlib/image_processing/generic_image.h.html" name="image_data" include="dlib/image_processing.h"/> + <term link="dlib/image_processing/generic_image.h.html" name="width_step" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/generic_image.h.html" name="image_traits" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/generic_image.h.html" name="image_view" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/generic_image.h.html" name="const_image_view" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/generic_image.h.html" name="make_image_view" include="dlib/image_processing.h"/> + + <term file="dlib/image_processing/box_overlap_testing_abstract.h.html" name="overlaps_any_box" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/box_overlap_testing_abstract.h.html" name="box_intersection_over_union" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/box_overlap_testing_abstract.h.html" name="box_percent_covered" include="dlib/image_processing.h"/> + <term file="imaging.html" name="test_box_overlap" include="dlib/image_processing.h"/> + <term file="imaging.html" name="remove_unobtainable_rectangles" include="dlib/image_processing.h"/> + <term file="imaging.html" name="get_frontal_face_detector" include="dlib/image_processing/frontal_face_detector.h"/> + <term file="imaging.html" name="object_detector" include="dlib/image_processing.h"/> + <term file="imaging.html" name="correlation_tracker" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/object_detector_abstract.h.html" name="rect_detection" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/object_detector_abstract.h.html" name="full_detection" include="dlib/image_processing.h"/> + <term file="imaging.html" name="full_object_detection" include="dlib/image_processing.h"/> + <term file="imaging.html" name="mmod_rect" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/full_object_detection_abstract.h.html" name="all_parts_in_rect" include="dlib/image_processing.h"/> + + <term file="imaging.html" name="scan_image_movable_parts" include="dlib/image_processing.h"/> + <term file="imaging.html" name="find_points_above_thresh" include="dlib/image_processing.h"/> + + <term file="dlib/image_processing/scan_fhog_pyramid_abstract.h.html" name="default_fhog_feature_extractor" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/scan_fhog_pyramid_abstract.h.html" name="num_separable_filters" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/scan_fhog_pyramid_abstract.h.html" name="threshold_filter_singular_values" include="dlib/image_processing.h"/> + <term file="imaging.html" name="evaluate_detectors" include="dlib/image_processing.h"/> + <term file="imaging.html" name="scan_fhog_pyramid" include="dlib/image_processing.h"/> + + <term file="imaging.html" name="scan_image" include="dlib/image_processing.h"/> + <term file="imaging.html" name="scan_image_pyramid" include="dlib/image_processing.h"/> + <term file="imaging.html" name="scan_image_boxes" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/scan_image_boxes_abstract.h.html" name="default_box_generator" include="dlib/image_processing.h"/> + <term file="imaging.html" name="scan_image_custom" include="dlib/image_processing.h"/> + <term file="imaging.html" name="compute_box_dimensions" include="dlib/image_processing.h"/> + <term file="imaging.html" name="create_single_box_detection_template" include="dlib/image_processing.h"/> + <term file="imaging.html" name="create_overlapped_2x2_detection_template" include="dlib/image_processing.h"/> + <term file="imaging.html" name="create_grid_detection_template" include="dlib/image_processing.h"/> + <term file="imaging.html" name="determine_object_boxes" include="dlib/image_processing.h"/> + <term file="imaging.html" name="setup_grid_detection_templates" include="dlib/image_processing.h"/> + <term file="imaging.html" name="setup_grid_detection_templates_verbose" include="dlib/image_processing.h"/> + <term file="imaging.html" name="setup_hashed_features" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/scan_image_abstract.h.html" name="all_images_same_size" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/scan_image_abstract.h.html" name="sum_of_rects_in_images" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/scan_image_abstract.h.html" name="sum_of_rects_in_images_movable_parts" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/box_overlap_testing_abstract.h.html" name="find_tight_overlap_tester" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/setup_hashed_features_abstract.h.html" name="image_hash_construction_failure" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/setup_hashed_features_abstract.h.html" name="use_uniform_feature_weights" include="dlib/image_processing.h"/> + <term file="dlib/image_processing/setup_hashed_features_abstract.h.html" name="use_relative_feature_weights" include="dlib/image_processing.h"/> + + + + <term link="metaprogramming.html#DLIB_STACK_TRACE" name="DLIB_ENABLE_STACK_TRACE"/> + <term file="metaprogramming.html" name="DLIB_STACK_TRACE" include="dlib/assert.h"/> + <term link="metaprogramming.html#DLIB_STACK_TRACE" name="Stack Trace"/> + <term file="metaprogramming.html" name="DLIB_STACK_TRACE_NAMED" include="dlib/assert.h"/> + <term file="metaprogramming.html" name="get_stack_trace" include="dlib/assert.h"/> + + + + + + + + + <term file="other.html" name="std_allocator" include="dlib/std_allocator.h"/> + <term link="other.html#std_allocator" name="allocator"/> + + <term file="other.html" name="bit_stream" include="dlib/bit_stream.h"/> + <term file="other.html" name="byte_orderer" include="dlib/byte_orderer.h"/> + + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="host_is_big_endian" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="host_is_little_endian" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="host_to_network" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="network_to_host" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="host_to_big" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="big_to_host" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="host_to_little" include="dlib/byte_orderer.h"/> + <term file="dlib/byte_orderer/byte_orderer_kernel_abstract.h.html" name="little_to_host" include="dlib/byte_orderer.h"/> + + + <term link="other.html#dlib_testing_suite" name="testing"/> + <term link="other.html#dlib_testing_suite" name="unit testing"/> + <term file="other.html" name="logger" include="dlib/logger.h"/> + <term file="other.html" name="vectorstream" include="dlib/vectorstream.h"/> + <term file="other.html" name="unserialize" include="dlib/vectorstream.h"/> + <term file="other.html" name="member_function_pointer" include="dlib/member_function_pointer.h"/> + <term file="other.html" name="make_mfp" include="dlib/member_function_pointer.h"/> + <term file="other.html" name="bound_function_pointer" include="dlib/bound_function_pointer.h"/> + <term file="other.html" name="memory_manager_stateless" include="dlib/memory_manager_stateless.h"/> + <term file="other.html" name="pipe" include="dlib/pipe.h"/> + <term file="other.html" name="sync_extension" include="dlib/sync_extension.h"/> + <term file="other.html" name="timeout" include="dlib/timeout.h"/> + <term file="other.html" name="timer" include="dlib/timer.h"/> + + + <term file="network.html" name="linker" include="dlib/linker.h"/> + <term file="network.html" name="server" include="dlib/server.h"/> + <term file="network.html" name="server_iostream" include="dlib/server.h"/> + <term file="network.html" name="server_http" include="dlib/server.h"/> + <term link="network.html#server_http" name="HTTP server"/> + <term file="network.html" name="sockstreambuf" include="dlib/sockstreambuf.h"/> + <term file="network.html" name="iosockstream" include="dlib/iosockstream.h"/> + <term file="network.html" name="bridge" include="dlib/bridge.h"/> + <term file="dlib/bridge/bridge_abstract.h.html" name="connect_to_ip_and_port" include="dlib/bridge.h"/> + <term file="dlib/bridge/bridge_abstract.h.html" name="connect_to" include="dlib/bridge.h"/> + <term file="dlib/bridge/bridge_abstract.h.html" name="listen_on_port" include="dlib/bridge.h"/> + <term file="dlib/bridge/bridge_abstract.h.html" name="transmit" include="dlib/bridge.h"/> + <term file="dlib/bridge/bridge_abstract.h.html" name="receive" include="dlib/bridge.h"/> + <term file="dlib/bridge/bridge_abstract.h.html" name="bridge_status" include="dlib/bridge.h"/> + <term file="network.html" name="bsp_context" include="dlib/bsp.h"/> + <term file="network.html" name="bsp_listen" include="dlib/bsp.h"/> + <term file="network.html" name="bsp_listen_dynamic_port" include="dlib/bsp.h"/> + <term file="network.html" name="bsp_connect" include="dlib/bsp.h"/> + + + + <term file="parsing.html" name="basic_utf8_ifstream" include="dlib/unicode.h"/> + <term link="parsing.html#utf8_wifstream" name="basic_utf8_ifstream" include="dlib/unicode.h"/> + <term link="parsing.html#utf8_uifstream" name="basic_utf8_ifstream" include="dlib/unicode.h"/> + <term file="parsing.html" name="base64" include="dlib/base64.h"/> + <term file="parsing.html" name="cmd_line_parser" include="dlib/cmd_line_parser.h"/> + <term link="parsing.html#cmd_line_parser" name="command_line_parser" include="dlib/cmd_line_parser.h"/> + <term link="parsing.html#cmd_line_parser" name="wcommand_line_parser" include="dlib/cmd_line_parser.h"/> + <term file="parsing.html" name="get_option" include="dlib/cmd_line_parser.h"/> + <term link="dlib/cmd_line_parser/get_option_abstract.h.html#option_parse_error" name="option_parse_error" include="dlib/cmd_line_parser.h"/> + <term file="dlib/interfaces/cmd_line_parser_option.h.html" name="cmd_line_parser_option" include="dlib/cmd_line_parser.h"/> + <term link="parsing.html#cmd_line_parser" name="command line parsing"/> + <term file="parsing.html" name="config_reader" include="dlib/config_reader.h"/> + <term file="parsing.html" name="config_reader_thread_safe" include="dlib/config_reader.h"/> + <term link="parsing.html#config_reader" name="config file parser"/> + <term file="parsing.html" name="cpp_pretty_printer" include="dlib/cpp_pretty_printer.h"/> + <term file="parsing.html" name="cpp_tokenizer" include="dlib/cpp_tokenizer.h"/> + <term file="parsing.html" name="narrow" include="dlib/string.h"/> + <term file="parsing.html" name="string_cast" include="dlib/string.h"/> + <term file="parsing.html" name="string_assign" include="dlib/string.h"/> + <term link="parsing.html#string_assign" name="sa" include="dlib/string.h"/> + <term file="parsing.html" name="tokenizer" include="dlib/tokenizer.h"/> + <term file="parsing.html" name="wrap_string" include="dlib/string.h"/> + <term file="parsing.html" name="xml_parser" include="dlib/xml_parser.h"/> + <term file="dlib/xml_parser/xml_parser_kernel_interfaces.h.html" name="document_handler" include="dlib/xml_parser.h"/> + <term file="dlib/xml_parser/xml_parser_kernel_interfaces.h.html" name="error_handler" include="dlib/xml_parser.h"/> + <term file="dlib/xml_parser/xml_parser_kernel_interfaces.h.html" name="attribute_list" include="dlib/xml_parser.h"/> + <term link="parsing.html#xml_parser" name="parse_xml" include="dlib/xml_parser.h"/> + <term file="parsing.html" name="cast_to_string" include="dlib/string.h"/> + <term file="parsing.html" name="pad_int_with_zeros" include="dlib/string.h"/> + <term file="parsing.html" name="toupper" include="dlib/string.h"/> + <term file="parsing.html" name="tolower" include="dlib/string.h"/> + <term file="parsing.html" name="trim" include="dlib/string.h"/> + <term file="parsing.html" name="ltrim" include="dlib/string.h"/> + <term file="parsing.html" name="rtrim" include="dlib/string.h"/> + <term file="parsing.html" name="pad" include="dlib/string.h"/> + <term file="parsing.html" name="lpad" include="dlib/string.h"/> + <term file="parsing.html" name="rpad" include="dlib/string.h"/> + <term file="parsing.html" name="left_substr" include="dlib/string.h"/> + <term file="parsing.html" name="right_substr" include="dlib/string.h"/> + <term file="parsing.html" name="split" include="dlib/string.h"/> + <term file="parsing.html" name="split_on_first" include="dlib/string.h"/> + <term file="parsing.html" name="split_on_last" include="dlib/string.h"/> + <term file="parsing.html" name="unichar" include="dlib/unicode.h"/> + <term file="parsing.html" name="ustring" include="dlib/unicode.h"/> + <term file="parsing.html" name="convert_utf8_to_utf32" include="dlib/unicode.h"/> + <term file="parsing.html" name="is_combining_char" include="dlib/unicode.h"/> + <term file="parsing.html" name="strings_equal_ignore_case" include="dlib/string.h"/> + <term file="dlib/unicode/unicode_abstract.h.html" name="invalid_utf8_error" include="dlib/unicode.h"/> + + + + + <term file="dlib/logger/logger_config_file.h.html" name="configure_loggers_from_file" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="log_level" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LALL" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LNONE" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LTRACE" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LDEBUG" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LINFO" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LWARN" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LERROR" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="LFATAL" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="set_all_logging_output_streams" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="set_all_logging_output_hooks" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="set_all_logging_levels" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="set_all_logging_headers" include="dlib/logger.h"/> + <term file="dlib/logger/logger_kernel_abstract.h.html" name="print_default_logger_header" include="dlib/logger.h"/> + <term file="dlib/logger/extra_logger_headers.h.html" name="print_datetime_logger_header" include="dlib/logger.h"/> + + + + + + + <term file="algorithms.html" name="quantum_register" include="dlib/quantum_computing.h"/> + <term file="algorithms.html" name="gate" include="dlib/quantum_computing.h"/> + + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="gate_exp" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="composite_gate" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="x" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="y" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="z" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="noop" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="cnot" include="dlib/quantum_computing.h"/> + <term file="dlib/quantum_computing/quantum_computing_abstract.h.html" name="toffoli" include="dlib/quantum_computing.h"/> + + + <term link="dlib/algs.h.html#general_return_codes" name="TIMEOUT" include="dlib/algs.h"/> + <term link="dlib/algs.h.html#general_return_codes" name="WOULDBLOCK" include="dlib/algs.h"/> + <term link="dlib/algs.h.html#general_return_codes" name="OTHER_ERROR" include="dlib/algs.h"/> + <term link="dlib/algs.h.html#general_return_codes" name="SHUTDOWN" include="dlib/algs.h"/> + <term link="dlib/algs.h.html#general_return_codes" name="PORTINUSE" include="dlib/algs.h"/> + + <term link="dlib/general_hash/general_hash.h.html" name="general_hash" include="dlib/general_hash/general_hash.h"/> + + + <term file="other.html" name="database" include="dlib/sqlite.h"/> + <term file="other.html" name="statement" include="dlib/sqlite.h"/> + <term file="other.html" name="transaction" include="dlib/sqlite.h"/> + <term link="other.html#database" name="SQLite"/> + <term file="dlib/sqlite/sqlite_tools_abstract.h.html" name="query_object" include="dlib/sqlite.h"/> + <term file="dlib/sqlite/sqlite_tools_abstract.h.html" name="query_text" include="dlib/sqlite.h"/> + <term file="dlib/sqlite/sqlite_tools_abstract.h.html" name="query_double" include="dlib/sqlite.h"/> + <term file="dlib/sqlite/sqlite_tools_abstract.h.html" name="query_int" include="dlib/sqlite.h"/> + <term file="dlib/sqlite/sqlite_tools_abstract.h.html" name="query_int64" include="dlib/sqlite.h"/> + <term file="dlib/sqlite/sqlite_tools_abstract.h.html" name="query_blob" include="dlib/sqlite.h"/> + <term file="dlib/sqlite/sqlite_abstract.h.html" name="sqlite_error" include="dlib/sqlite.h"/> + </term_list> + + </body> + + <!-- ************************************************************************* --> + +</doc> + diff --git a/ml/dlib/docs/docs/tiled_pyramid_example.jpg b/ml/dlib/docs/docs/tiled_pyramid_example.jpg Binary files differnew file mode 100644 index 00000000..75f611ef --- /dev/null +++ b/ml/dlib/docs/docs/tiled_pyramid_example.jpg diff --git a/ml/dlib/docs/docs/vs-cmake-gui.png b/ml/dlib/docs/docs/vs-cmake-gui.png Binary files differnew file mode 100755 index 00000000..bd4308a9 --- /dev/null +++ b/ml/dlib/docs/docs/vs-cmake-gui.png diff --git a/ml/dlib/docs/docs/vs_mode_1.png b/ml/dlib/docs/docs/vs_mode_1.png Binary files differnew file mode 100755 index 00000000..ae13c5fc --- /dev/null +++ b/ml/dlib/docs/docs/vs_mode_1.png diff --git a/ml/dlib/docs/docs/vs_mode_2.png b/ml/dlib/docs/docs/vs_mode_2.png Binary files differnew file mode 100755 index 00000000..d74ffca6 --- /dev/null +++ b/ml/dlib/docs/docs/vs_mode_2.png diff --git a/ml/dlib/docs/docs/vs_mode_3.png b/ml/dlib/docs/docs/vs_mode_3.png Binary files differnew file mode 100755 index 00000000..dc5cfe26 --- /dev/null +++ b/ml/dlib/docs/docs/vs_mode_3.png diff --git a/ml/dlib/docs/makedocs b/ml/dlib/docs/makedocs new file mode 100755 index 00000000..e38b75a7 --- /dev/null +++ b/ml/dlib/docs/makedocs @@ -0,0 +1,282 @@ +#!/bin/bash +. bash_helper_functions + +report_failure () +{ + echo " **** failed to complete **** " + exit 1 +} + +htmlify_python_file () +{ + pygmentize -f html -O full,style=vs $1 > $1.html +} + + +add_links_between_example_programs() +{ + EXT=$3 + # Get the list of example program filenames + pushd $1 > /dev/null + FILES=`ls *.$EXT` + popd > /dev/null + + # Now run sed on all the htmlified example programs to add the links between them. + for f in $FILES + do + #escape the . in the filename + escaped_name=`echo $f | sed -e 's/\./\\\./g'` + pushd $1 > /dev/null + # get a list of all the html example files that contain the name + matching_html_files=`grep -e "\b$escaped_name\b" -l *.$EXT | sed -e "s/\.$EXT\b/.$EXT.html/g"` + popd > /dev/null + + # now actually run sed to add the links + pushd $2 > /dev/null + if [ -n "$matching_html_files" ] + then + sed -i -e "s/\b$escaped_name\b/<a href=\"$escaped_name.html\">$escaped_name<\/a>/g" $matching_html_files + fi + popd > /dev/null + done + +} + +htmlify_cmake () +{ + echo "<html><head><title>" > $1.html; + echo $1 >> $1.html; + echo "</title></head><body bgcolor='white'><pre>" >> $1.html; + + # line 1: make comments green + # line 2: add links into the add_subdirectory directives + # line 3: make literal quotes red + # line 4: make the directives show up blue + # line 5: make variable names show up purple + sed -e "s/^\([ ]*#.*\)/<font color='#009900'>\1<\/font>/" \ + -e "s/add_subdirectory\([ ]*\)(\([ ]*\)\([^ ]*\)\([ ]*\)\([^ )]*\)/add_subdirectory\1(\2\3\4<a href='\3\/CMakeLists.txt.html'>\5<\/a>/" \ + -e "s/\"\([^\"]*\)\"/\"<font color='#CC0000'>\1<\/font>\"/g" \ + -e "s/^\([ ]*[^( ]*[ ]*\)(/<font color='blue'>\1<\/font>(/" \ + -e "s/{\([^}]*\)}/\{<font color='#BB00BB'>\1<\/font>}/g" \ + $1 >> $1.html; + + echo "</pre></body></html>" >> $1.html; +} + +htmlify_python() +{ + FILES=`\ls $1/*.py` + for i in $FILES + do + htmlify_python_file ${i} + rm ${i} + done +} + + +makedocs () +{ + + REVNUM_FILE=.logger_revnum + + + + # figure out the short number that identifies this particular changeset + get_short_revision_number `cat $REVNUM_FILE` + LOGGER_REVNUM=$RESULT + + XSLT_OPTIONS="--nodtdattr --nonet --novalid" + DATE_TODAY=`date --date= "+%b %d, %Y"`; + + + + + # The revision number we are currently at + CHANGESET_ID=`hg id -i | sed -e 's/\+//'` + get_short_revision_number $CHANGESET_ID + REVISION=$RESULT + + + if [ "$1" = "makerel" ] + then + RELEASE=${MAJOR_NUM}.${MINOR_NUM} + else + RELEASE=${MAJOR_NUM}.${MINOR_NUM}.${PATCH_NUM} + fi; + + # get XML versions of the change logs + BASE_LOGGER_REVNUM=`echo $LOGGER_REVNUM - 1000 | bc` + NEXT_LOGGER_REVNUM=`echo $LOGGER_REVNUM + 1 | bc` + echo Getting the mercurial change logs for revisions $NEXT_LOGGER_REVNUM:$REVISION + hg log -v ../dlib ../examples ../tools ../python_examples --style=xml -r$NEXT_LOGGER_REVNUM:$REVISION > docs/log.txt || report_failure + echo Getting the mercurial change logs for revisions $BASE_LOGGER_REVNUM:$LOGGER_REVNUM + hg log -v ../dlib ../examples ../tools ../python_examples --style=xml -r$BASE_LOGGER_REVNUM:$LOGGER_REVNUM > docs/old_log.txt || report_failure + + # grab a clean copy of the repository + rm -rf docs/cache + rm -rf docs/web + rm -rf docs/chm/docs + hg archive docs/cache || report_failure + # Don't need the docs folder in the cache, moreover, deleting it here avoids letting the makerel script include it in the dlib tar balls. + rm -rf docs/cache/docs + + echo "#ifndef DLIB_REVISION_H" > docs/cache/dlib/revision.h + echo "// Version: " $RELEASE >> docs/cache/dlib/revision.h + echo "// Date: " `date` >> docs/cache/dlib/revision.h + echo "// Mercurial Revision ID: " $CHANGESET_ID >> docs/cache/dlib/revision.h + echo "#define DLIB_MAJOR_VERSION " $MAJOR_NUM >> docs/cache/dlib/revision.h + echo "#define DLIB_MINOR_VERSION " $MINOR_NUM >> docs/cache/dlib/revision.h + echo "#define DLIB_PATCH_VERSION " $PATCH_NUM >> docs/cache/dlib/revision.h + echo "#endif" >> docs/cache/dlib/revision.h + + + rm -rf docs/web + rm -rf docs/chm/docs + mkdir docs/web + mkdir docs/chm/docs + + echo Creating HTML version of the source + htmlify --title "dlib C++ Library - " -i docs/cache -o htmltemp.$$ + add_links_between_example_programs docs/cache/examples htmltemp.$$/examples cpp + + echo Copying files around... + cp -r htmltemp.$$/dlib docs/web + cp -r htmltemp.$$/dlib docs/chm/docs + cp -r htmltemp.$$/examples/* docs/web + cp -r htmltemp.$$/examples/* docs/chm/docs + rm -rf htmltemp.$$ + + # create python docs unless you say ./makedocs fast + if [ "$1" != "fast" ] + then + cd .. + python setup.py build || report_failure + python setup.py build_sphinx -c docs/docs/python --build-dir docs/sphinx.$$ || report_failure + cd docs + cp -r sphinx.$$/html docs/web/python + mv sphinx.$$/html docs/chm/docs/python + rm -rf sphinx.$$ + fi; + + + cp docs/cache/dlib/test/makefile docs/web/dlib/test + cp docs/cache/dlib/test/makefile docs/chm/docs/dlib/test + + cp docs/cache/dlib/test/CMakeLists.txt docs/web/dlib/test + cp docs/cache/dlib/test/CMakeLists.txt docs/chm/docs/dlib/test + cp docs/cache/dlib/CMakeLists.txt docs/web/dlib + cp docs/cache/dlib/CMakeLists.txt docs/chm/docs/dlib + mkdir docs/web/examples || report_failure + cp docs/cache/examples/CMakeLists.txt docs/web/examples + mkdir docs/chm/docs/examples || report_failure + cp docs/cache/examples/CMakeLists.txt docs/chm/docs/examples + cp docs/cache/python_examples/*.py docs/chm/docs/ + cp docs/cache/python_examples/*.py docs/web/ + + htmlify_python docs/chm/docs/ + htmlify_python docs/web/ + add_links_between_example_programs docs/cache/python_examples docs/chm/docs py + add_links_between_example_programs docs/cache/python_examples docs/web py + + cp docs/*.gif docs/web + cp docs/*.gif docs/chm/docs + cp docs/ml_guide.svg docs/web + cp docs/ml_guide.svg docs/chm/docs + cp -r docs/guipics docs/web + cp -r docs/guipics docs/chm/docs + cp docs/*.html docs/web + cp docs/*.html docs/chm/docs + cp docs/*.css docs/web + cp docs/*.css docs/chm/docs + cp docs/*.js docs/web + cp docs/*.js docs/chm/docs + cp docs/*.png docs/web + cp docs/*.jpg docs/web + cp docs/*.webm docs/web + cp docs/*.ico docs/web + cp docs/*.png docs/chm/docs + cp docs/*.jpg docs/chm/docs + cp docs/*.webm docs/chm/docs + cp docs/*.ico docs/chm/docs + + cd docs/chm/docs || report_failure + htmlify_cmake dlib/CMakeLists.txt; + htmlify_cmake examples/CMakeLists.txt; + htmlify_cmake dlib/test/CMakeLists.txt; + cd ../../.. || report_failure + cd docs/web || report_failure + htmlify_cmake dlib/CMakeLists.txt; + htmlify_cmake examples/CMakeLists.txt; + htmlify_cmake dlib/test/CMakeLists.txt; + cd ../.. || report_failure + + find docs/web docs/chm -name "CMakeLists.txt" | xargs rm + + + + # generate the HTML docs + echo Generate HTML docs from XML and XSLT style sheet + FILES=`\ls docs/*.xml | grep -v main_menu.xml` + for i in $FILES + do + + # The last modified date for these files should always be the release date (regardless of when the actual xml files were modified). + if [ "${i}" = "docs/release_notes.xml" -o ${i} = "docs/old_release_notes.xml" \ + -o ${i} = "docs/change_log.xml" -o ${i} = "docs/old_change_log.xml" \ + -o ${i} = "docs/index.xml" ] + then + DATE=$DATE_TODAY + else + get_last_modified_date ${i} + DATE=$RESULT + fi; + + #make web version + cat docs/stylesheet.xsl | sed -e 's/"is_chm">[^<]*/"is_chm">false/' -e "s/_CURRENT_RELEASE_/$RELEASE/" -e "s/_LAST_MODIFIED_DATE_/$DATE/" \ + > docs/stylesheet.$$.xsl + OUT_FILE=$(echo ${i} | sed -e "s/\.xml/\.html/" | sed -e "s/docs\//docs\/web\//") + xsltproc $XSLT_OPTIONS -o $OUT_FILE docs/stylesheet.$$.xsl ${i} + + #make chm version + cat docs/stylesheet.xsl | sed -e 's/"is_chm">[^<]*/"is_chm">true/' -e "s/_CURRENT_RELEASE_/$RELEASE/" -e "s/_LAST_MODIFIED_DATE_/$DATE/" \ + > docs/stylesheet.$$.xsl + OUT_FILE=$(echo ${i} | sed -e "s/\.xml/\.html/" | sed -e "s/docs\//docs\/chm\/docs\//") + xsltproc $XSLT_OPTIONS -o $OUT_FILE docs/stylesheet.$$.xsl ${i} + + rm docs/stylesheet.$$.xsl + done + +# Delete doc type header stuff +# FILES=`find docs/chm docs/web -iname "*.html" -type f` +# for i in $FILES +# do +# sed -e '/<!DOCTYPE/d' ${i} > temp.$$; +# mv temp.$$ ${i}; +# done + + + echo Generating sitemap + cd docs/web || report_failure + find . -name "*.html" | awk '{ print "http://dlib.net" substr($1,2)}' > sitemap.txt + + # make the main index have a 301 redirect. Use php to do this + echo '<?php if ($_SERVER["SERVER_NAME"] != "dlib.net") { header("Location: http://dlib.net/", true, 301); exit; } ?>' > index.php + cat index.html >> index.php + rm index.html + + cd ../.. +} + + +./testenv || report_failure + + + + +# build all the html documentation +makedocs $1 + +# now make the table of contents for the chm file +echo Generating the table of contents for the chm file +xsltproc -o docs/chm/Table\ of\ Contents.hhc docs/chm/htmlhelp_stylesheet.xsl docs/chm/toc.xml + diff --git a/ml/dlib/docs/makerel b/ml/dlib/docs/makerel new file mode 100755 index 00000000..8a4d2d39 --- /dev/null +++ b/ml/dlib/docs/makerel @@ -0,0 +1,91 @@ +#!/bin/bash +. bash_helper_functions + +# If the first argument to this script is the word major then the +# major version number is updated and the minor is set back to 0. + +report_failure () +{ + echo " **** failed to complete **** " + exit 1 +} + + +./testenv_rel || report_failure + + + +REVNUM_FILE=.logger_revnum +CHANGESET_ID=`hg id -i | sed -e 's/\+//'` + +rm -rf release || report_failure +mkdir release || report_failure + + +if [ "$1" = "major" ] + then + MAJOR_NUM=`echo $MAJOR_NUM+1|bc` + MINOR_NUM=0 +else + MINOR_NUM=`echo $MINOR_NUM+1|bc` +fi; +set_dlib_version MAJOR $MAJOR_NUM +set_dlib_version MINOR $MINOR_NUM +set_dlib_version PATCH 0 + +RELEASE=${MAJOR_NUM}.${MINOR_NUM} +# Commit changes to the version numbers so that the makedocs script will use them. +echo Create Mercurial tags and commit release +hg commit -m "Created release v$RELEASE" || report_failure +hg tag v$RELEASE || report_failure + +./makedocs makerel || exit 1 + +echo $CHANGESET_ID > $REVNUM_FILE +set_dlib_version PATCH 99 +hg commit -m "Record last changeset and set PATCH version to 99" + + +cd release || report_failure +RELDIR=`echo dlib-$RELEASE` +mkdir $RELDIR +cd $RELDIR || report_failure +cp -r ../../docs/cache/* . || report_failure + +echo Version: $RELEASE >> README.md +echo "Date: `date`" >> README.md +echo Mercurial Revision ID: $CHANGESET_ID >> README.md + + + +WEBPAGE=`echo dlib_webpage-$RELEASE.tar` +SOURCE_ZIP=`echo $RELDIR.zip` +SOURCE_TAR=`echo $RELDIR.tar` +tar -C ../../docs/chm -cf - docs/ documentation.html | tar -xf - || report_failure +cd .. || report_failure + +tar -cf $SOURCE_TAR $RELDIR || report_failure +# flip everything to MS-DOS line endings +#find $RELDIR -name "*.cpp" -or -name "*.h" -or -name "*.txt" -or -name "*.html" -or -name "*.py" | xargs flip -m +find $RELDIR -name "*.cpp" -or -name "*.h" -or -name "*.txt" -or -name "*.html" -or -name "*.py" | xargs unix2dos &> /dev/null + +zip -r9 $SOURCE_ZIP $RELDIR > /dev/null || report_failure +tar -C ../docs -cf $WEBPAGE web || report_failure +bzip2 $SOURCE_TAR || report_failure +bzip2 $WEBPAGE || report_failure + +rm -rf $RELDIR + +# Don't make the chm doc file since hhc.exe doesn't run in any copy of wine anymore :( +#wine ../docs/chm/htmlhelp/hhc.exe ../docs/chm/lib.hhp +#mv ../docs/chm/help.chm dlib_documentation-$RELEASE.chm || report_failure + + +mkdir v$RELEASE +#mv dlib_documentation-$RELEASE.chm v$RELEASE +mv $SOURCE_TAR.bz2 v$RELEASE +mv $SOURCE_ZIP v$RELEASE + + + + diff --git a/ml/dlib/docs/testenv b/ml/dlib/docs/testenv new file mode 100755 index 00000000..8d2ce6bc --- /dev/null +++ b/ml/dlib/docs/testenv @@ -0,0 +1,31 @@ +#/bin/sh +# +#This script checks to make sure all the commands we need are +#present + +return_error() +{ + echo "Error, can't run the $1 command" + exit 1 +} + + +echo Testing environment for needed utilities + +bc -h > /dev/null || return_error "bc"; +echo nothing | awk '{}' > /dev/null || return_error "awk"; +echo | sed -e "s/s/r/" > /dev/null || return_error "sed"; +htmlify > /dev/null || return_error "htmlify"; +echo | xargs > /dev/null || return_error "xargs"; +hg > /dev/null || return_error "hg"; +xsltproc -V > /dev/null || return_error "xsltproc"; +tar --help > /dev/null || return_error "tar"; +zip -h > /dev/null || return_error "zip"; +bzip2 -h &> /dev/null || return_error "bzip2"; +pygmentize -h &> /dev/null || return_error "pygmentize"; +which sphinx-build &> /dev/null || return_error "sphinx-build"; + + +echo All needed utilities found +exit 0 + diff --git a/ml/dlib/docs/testenv_rel b/ml/dlib/docs/testenv_rel new file mode 100755 index 00000000..fff4a7be --- /dev/null +++ b/ml/dlib/docs/testenv_rel @@ -0,0 +1,24 @@ +#/bin/sh +# +#This script checks to make sure all the commands we need are +#present + +return_error() +{ + echo "Error, can't run the $1 command" + exit 1 +} + +./testenv + +echo Testing environment for needed release building utilities + + +#flip -h > /dev/null || return_error "flip"; +unix2dos -h &> /dev/null || return_error "unix2dos"; +#wine --help &> /dev/null || return_error "wine"; + + +echo All needed utilities found +exit 0 + |