As of Sep 30, 2014
diff --git a/0-abstract.tex b/0-abstract.tex
new file mode 100644
index 0000000..642c9e6
--- /dev/null
+++ b/0-abstract.tex
@@ -0,0 +1,18 @@
+
+Blogs are one of the most prominent means of communication on the web.
+Their content, interconnections and influence constitute a unique
+socio-technical artefact of our times which needs to be preserved.
+The BlogForever project has established best practices and developed an
+innovative system to harvest, preserve, manage and reuse blog content.
+This paper presents the latest developments of the blog crawler which
+is a key component of the BlogForever platform. More precisely, our
+work concentrates on techniques to automatically extract content such
+as articles, authors, dates and comments from blog posts. To achieve
+this goal, we introduce a simple yet robust and scalable algorithm to
+generate extraction rules based on string matching using the blog's
+web feed in conjunction with blog hypertext. Furthermore, we present a
+system architecture which is characterised by efficiency, modularity,
+scalability and interoperability with third-party systems. Finally,
+we conduct thorough evaluations of the performance and accuracy of
+our system.
+
diff --git a/1-intro.tex b/1-intro.tex
new file mode 100644
index 0000000..c493683
--- /dev/null
+++ b/1-intro.tex
@@ -0,0 +1,84 @@
+\section{Introduction}
+
+The blogosphere is an established channel of online communication which
+bears great significance~\cite{oevre2012}. Wordpress, a single blog
+publishing company, reports more than 1 million new posts and 1.5 million
+new comments each day~\cite{wordpress2014}. These overwhelming numbers
+illustrate the importance of blogs in most aspects of private and
+business life~\cite{chung2007uses}. Blogs contain data with historic,
+political, social and scientific value which need to be accessible
+for current and future generations. For instance, blogs proved to
+be an important resource during the 2011 Egyptian revolution by
+playing an instrumental role in the organization and implementation of
+protests~\cite{nahedeltantawy2012}. The problem is that blogs disappear
+every day~\cite{johnson2008blogs} because there is no standard method or
+authority to ensure blog archiving and long-term digital preservation.
+
+Among the challenges in developing a blog archiving software
+is the design of a web crawler capable of efficiently traversing blogs
+to harvest their content. The sheer size of the blogosphere combined with
+an unpredictable publishing rate of new information call for a highly
+scalable system, while the lack of programmatic access to the complete
+blog content makes the use of automatic extraction techniques necessary.
+The variety of available blog publishing platforms offers a limited
+common set of properties that a crawler can exploit, further narrowed by
+the ever-changing structure of blog contents. Finally, an increasing
+number of blogs heavily rely on dynamically created content to present
+information, using the latest web technologies, hence invalidating
+traditional web crawling techniques.
+
+A key characteristic of blogs which differentiates them from regular
+websites is their association with web feeds~\cite{lindahl2003weblogs}.
+Their primary use is to provide a uniform subscription mechanism, thereby
+allowing users to keep track of the latest updates without the need to
+actually visit blogs. Concretely, a web feed is an XML file containing
+links to the latest blog posts along with their articles (abstract or
+full text) and associated metadata~\cite{board2007rss}. While web feeds
+essentially solve the question of update monitoring, their limited size
+makes it necessary to download blog pages to harvest previous content.
+
+This paper presents the latest developments of the open-source
+BlogForever Crawler, a key component of the BlogForever
+platform~\cite{kasioumis2013towards} responsible for traversing blogs,
+extracting their content and monitoring their updates. Our main
+objectives in this work are to introduce a new approach to blog data
+extraction and to present the architecture and implementation of a blog
+crawler capable of extracting articles, authors, publication dates,
+comments and potentially any other element which appear in weblog
+web feeds. Our contributions can be summarized as follows:
+
+\begin{itemize}
+\item
+A new algorithm to build extraction rules from web feeds and an optimised
+reformulation based on a particular string similarity algorithm featuring
+linear time complexity.
+\item
+A methodology to use the algorithm for blog article extraction and how
+it can be augmented to be used with other blog elements such as authors,
+publication dates and comments.
+\item
+The overall BlogForever crawler architecture and implementation with a
+focus on design decisions, modularity, scalability and interoperability.
+\item
+An approach to use a complete web browser to render JavaScript powered
+web pages before processing them. This step allows our crawler to
+effectively harvest blogs built with modern technologies, such as
+the increasingly popular third-party commenting systems.
+\item
+A mapping of the extracted blog content to Archival Information Packages
+(AIPs) using METS and MARCXML standards for interoperability purposes.
+\item
+An evaluation of the content extraction and execution time of our
+algorithm against three state-of-the-art web article extraction algorithms.\\
+\end{itemize}
+
+The concepts emerging from our research are viewed in the context of the
+BlogForever platform but the presented algorithms, techniques and system
+architectures can be used in other applications related to Wrapper
+Generation and Web Data Extraction.
+
+The rest of this work is structured as follows: Section 2 presents
+related work. Section 3 introduces the new algorithms to extract data
+from blogs. Section 4 presents the blog crawler system architecture and
+implementation. Section 5 presents the evaluation and results. Finally,
+our conclusions and some discussion on our work are presented in section 6.
diff --git a/2-related-work.tex b/2-related-work.tex
new file mode 100644
index 0000000..80cc015
--- /dev/null
+++ b/2-related-work.tex
@@ -0,0 +1,84 @@
+\section{Related work}
+\label{relatedwork}
+
+Web crawlers are complex software systems which often combine techniques
+from various disciplines in computer science. Our work on the BlogForever
+crawler is related to the fields of web data extraction, distributed
+computing and natural language processing. In the literature on web
+data extraction, the word \emph{wrapper} is commonly used to designate
+procedures to extract structured data from unstructured documents.
+We did not use this word in the present paper in favour of the term
+\emph{extraction rule}, which better reflects our implementation and
+is decoupled from software that concretely performs the extraction.
+
+A common approach in web data extraction is to manually build wrappers
+for the targeted websites. This approach has been proposed for the
+crawler discussed in \cite{faheem2012intelligent} which automatically
+assigns web sites to predefined categories and gets the appropriate
+wrapper from a static knowledge base. The limiting factor in this type
+of approach is the substantial amount of manual work needed to write and
+maintain the wrappers, which is not compatible with the increasing size
+and diversity of the web. Several projects try to simplify this process
+and provide various degrees of automation. This is the case of the
+Stalker algorithm \cite{stalker} which generates wrappers based on
+user-labelled training examples. Some commercial solutions such as
+the Lixto project \cite{lixto} simplify the task of building wrappers
+by offering a complete integrated development environment where the
+training data set is obtained via a graphical user interface.
+
+As an alternative to dedicated software for the creation and maintenance
+of wrappers, some query languages have been designed specifically for
+wrappers. These languages rely on their users to manually identify
+the structure of the data to be extracted. This structure can then
+be formalised as a small declarative program, which can then be turned
+into an concrete wrapper by an execution engine. The OXPath language
+\cite{oxpath2013} is an interesting extension to XPath designed to
+incorporate interaction in the extraction process. It supports simulated
+user actions such as filling forms or clicking buttons to obtain
+information that would not be accessible otherwise. Another extension of
+XPath, called Spatial XPath \cite{sxpath2010}, allows to write spacial
+rules in the extraction queries. The execution engine embeds a complete
+web browser which computes the visual representation of the page.
+
+Fully automated solutions use different techniques to identify and
+extract information directly from the structure and content of the web
+page, without the need of any manual intervention. The Boilerpipe project
+\cite{kohlschuetter2010} (which is also used in our evaluation) uses text
+density analysis to extract the main article of a web page. The approach
+presented in \cite{treeedit} is based on a tree structure analysis of
+pages with similar templates, such as news web sites or blogs. Automatic
+solutions have also been designed specifically for blogs. Similarly to
+our approach, Oita and Senellart \cite{oita2010} describe a procedure
+to automatically build wrappers by matching web feed articles to
+HTML pages. This work was further extended by Gkotsis et al. with
+a focus on extracting content anterior to the one indexed in web
+feeds~\cite{gkotsis2013}. They also report to have successfully extracted
+blog post titles, publication dates and authors, but their approach
+is less generic than the one for the extraction of articles. Finally,
+neither \cite{oita2010} nor \cite{gkotsis2013} provide complexity
+analysis which we believe to be essential before using an algorithm
+in production.
+
+One interesting research direction is the one of large scale distributed
+crawlers. Mercator \cite{heydon99mercator}, UbiCrawler \cite{boldi2003}
+and the crawler discussed in \cite{shkapenyuk2002} are examples of
+successful distributed crawlers. The associated articles provide useful
+information regarding the challenges encountered when working on a
+distributed architecture. One of the core issues when scaling out seems
+to be in sharing the list of URLs that have already been visited and
+those that need to be visited next. While \cite{heydon99mercator} and
+\cite{shkapenyuk2002} rely on a central node to hold this information,
+\cite{boldi2003} uses a fully distributed architecture where URLs are
+divided among nodes using consistent hashing. Both of these approaches
+require the crawlers to implement complex mechanisms to achieve
+fault tolerance. The BlogForever Crawler circumvents this problem by
+delegating all shared mutable state to the back-end system. In addition,
+since we process web pages on the fly and directly emit the extracted
+content to the back-end, there is no need for persistent storage on
+the crawler's side. This removes one layer of complexity when compared
+to general crawlers which need to use a distributed file system
+(\cite{shkapenyuk2002} uses NFS, \cite{berger2011} uses HDFS) or
+implement an aggregation mechanism to further exploit the collected data.
+Our design is similar to the distributed active object pattern presented
+in \cite{activeobject1996}, which is further simplified by the fact that
+the state of the crawler instances is not kept between crawls.
diff --git a/3-algorithms.tex b/3-algorithms.tex
new file mode 100644
index 0000000..5b12af4
--- /dev/null
+++ b/3-algorithms.tex
@@ -0,0 +1,323 @@
+﻿\section{Algorithms}
+\label{algorithms}
+We propose a new set of algorithms to extract blog post articles as well
+as variations for extracting authors, dates and comments. We start with
+our motivation to use blog specific characteristics, followed by our
+approach to build \emph{extraction rules} which are applicable throughout
+a blog. Our focus is on minimising the algorithmic complexity while
+keeping our approach simple and generic.
+
+%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Motivation}
+\label{motivation}
+
+Extracting metadata and content from HTML documents is a challenging task
+because standards and format recommendations suffer from very low usage.
+W3C has been publishing web standards and format recommendations for
+quite some time~\cite{w3c2014}. For instance, according to the W3C
+HTML guidelines, the \code{<h1></h1>} tags have to contain the
+highest-level heading of the page and must not appear more than
+once per page~\cite{w3c2002}. More recently, specifications such
+as microdata~\cite{whatwg2014} define ways to embed semantic information
+and metadata inside HTML documents, but these still suffer from
+very low usage: estimated to be used in less than 0.5\% of
+websites~\cite{andrewrogers2014}. In fact, the majority of websites rely
+on the generic \code{<span></span>} and \code{<div></div>} container
+elements with custom \code{id} or \code{class} attributes to organise
+the structure of pages, and more than 95\% of pages do not pass HTML
+validation~\cite{brianwilson2008}. Under such circumstances, relying
+on HTML structure to extract content from web pages is not viable and
+other techniques need to be employed.
+
+Having blogs as our target websites, we made the following observations
+which play a central role in the extraction process:
+
+\begin{enumerate}
+\item\label{havefeedAssum}
+Blogs provide web feeds: structured and standardized views of the latest
+posts of a blog.
+\item\label{similarhtmlAssum}
+Posts of the same blog share a similar HTML structure.
+\end{enumerate}
+
+Web feeds usually contain about 20 blog posts~\cite{oita2010},
+often less than the total number of posts in blogs. Consequently, to
+effectively archive the entire content of a blog, it is necessary to
+download and process pages beyond the ones referenced in the web feed.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Content extraction overview}
+\label{contentextraction}
+
+% per blog procedure, related work
+To extract content from blog posts, we proceed by building
+\emph{extraction rules} from the data given in the blog's web feed.
+The idea is to use a set of \emph{training data}, pairs of HTML pages
+and target content, which are used to build an extraction rule capable
+of locating the target content on each HTML page.
+
+% input from observations.
+Observation (\ref{havefeedAssum}) allows the crawler to obtain input for
+the extraction rule generation algorithm: each web feed entry contains a
+link to the corresponding web page as well as blog post article (either
+abstract or full text), its title, authors and publication date. We call
+these fields \emph{targets} as they constitute the data our crawler aims
+to extract. Observation (\ref{similarhtmlAssum}) guarantees the existence
+of an appropriate extraction rule, as well as its applicability to all
+posts of the blog.
+
+\autoref{extractionAlgo} shows the generic procedure we use to build
+extraction rules. The idea is quite simple: for each \code{(}\emph{page,
+target}\code{)} input, compute, out of all possible extraction rules,
+the best one with respect to a certain \code{ScoreFunction}. The rule
+which is most frequently the \emph{best rule} is then returned.
+
+\extractionAlgo
+
+One might notice that each \emph{best rule} computation is
+independent and operates on a different input pair. This implies that
+\autoref{extractionAlgo} is \emph{embarrassingly parallel}: iterations
+of the outer loop can trivially be executed on multiple threads.
+
+Functions in \autoref{extractionAlgo} are voluntarily abstract at this
+point and will be explained in detail in the remaining of this section.
+\hyperref[extractionrulesandstringsimilarity]{Subsection~\ref*{extractionrulesandstringsimilarity}} % Waiting for \Autoref{}...
+defines \code{AllRules}, \code{Apply} and the \code{ScoreFunction} we use
+for article extraction. In \autoref{timecomplexityandlinearreformulation}
+we analyse the time complexity of \autoref{extractionAlgo} and give a
+linear time reformulation using dynamic programming. Finally,
+\autoref{variationsforauthorsdatesandcomments} shows how the
+\code{ScoreFunction} can be adapted to extract authors, dates and
+comments.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Extraction rules and string similarity}
+\label{extractionrulesandstringsimilarity}
+
+In our implementation, rules are queries in the XML Path Language
+(XPath). Consequently, standard libraries can be used to parse HTML pages
+and apply extraction rules, providing the \code{Apply} function used in
+\autoref{extractionAlgo}. We experimented with 3 types of XPath queries:
+selection over the HTML \code{id} attribute, selection over the HTML
+\code{class} attribute and selection using the relative path in the HTML
+tree. \code{id} attributes are expected to be unique, and \code{class}
+attributes have showed in our experiments to have better consistency than
+relative paths over pages of a blog. For these reasons we opt to always
+favour \code{class} over path, and \code{id} over \code{class}, such
+that the \coderef{allrulesAlgo} function returns a single rule per node.
+
+\allrulesAlgo
+
+Unsurprisingly, the choice of \code{ScoreFunction} greatly influences
+the running time and precision of the extraction process. When targeting
+articles, extraction rule scores are computed with a string similarity
+function comparing the extracted strings with the target strings.
+We chose the Sorensen–Dice coefficient similarity~\cite{dice1945},
+which is, to the best of our knowledge, the only string similarity
+algorithm fulfilling the following criteria:
+
+\begin{itemize}
+\item\label{wordorderProp} Has low sensitivity to word ordering,
+\item\label{lengthProp} Has low sensitivity to length variations,
+\item\label{linearProp} Runs in linear time.
+\end{itemize}
+
+Properties \ref{wordorderProp} and \ref{lengthProp} are essential when
+dealing with cases where the blog's web feed only contains an abstract
+or a subset of the entire post article. \autoref{similarityTable}
+gives examples to illustrate how these two properties hold for the
+Sorensen–Dice coefficient similarity but do not for \emph{edit distance}
+based similarities such as the Levenshtein~\cite{levenshtein1966}
+similarity.
+
+\begin{table}
+\tbl{Examples of string similarities.}
+{\begin{tabular}{@{}llcc@{}} \toprule
+        \textbf{string1} & \textbf{string2} & \textbf{Sorensen-Dice} & \textbf{Levenshtein} \\
+    \midrule
+    \stringliteral{Scheme Scala} & \stringliteral{Scala Scheme}
+    & 90\% & 50\% \\
+    \stringliteral{Rachid} & \stringliteral{Richard}
+    & 18\% & 61\% \\
+    \stringliteral{Rachid} & \stringliteral{Amy, Rachid and all their friends}
+    & 29\% & 31\% \\ \hline
+\end{tabular}}
+\label{similarityTable}
+\end{table}
+
+The Sorensen–Dice coefficient similarity algorithm operates by
+first building sets of pairs of adjacent characters, also known as
+\emph{bigrams}, and then applying the \emph{quotient of similarity} formula:
+
+\similarityAlgo
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Time complexity and linear reformulation}
+\label{timecomplexityandlinearreformulation}
+
+With the functions \coderef{allrulesAlgo}, \code{Apply} and
+\coderef{similarityAlgo} (as \code{ScoreFunction}) being defined, the
+definition of \autoref{extractionAlgo} for article extraction is now
+complete. We can therefore proceed with a time complexity analysis.
+
+First, let's assume that we have at our disposal a linear time HTML
+parser that constructs an appropriate data structure, indexing HTML
+nodes on their \code{id} and \code{class} attributes, effectively making
+\code{Apply}~$\in$~\Oof{1}. As stated before, the outer loop splits
+the input into independent computations and each call to
+\coderef{allrulesAlgo} returns (in linear time) at most as many rules as
+the number of nodes in its \emph{page} argument. Therefore, the body of
+the inner loop will be executed \Oof{n} times. Because each extraction
+rule can return any subtree of the queried page, each call to
+\coderef{similarityAlgo} takes \Oof{n}, leading to an overall quadratic
+running time.
+
+We now present \autoref{linearAlgo}, a linear time reformulation of
+\autoref{extractionAlgo} for article extraction using dynamic programming.
+
+\linearAlgo
+
+While very intuitive, the original idea of first generating extraction
+rules and then picking these best rules prevents us from effectively
+reusing previously computed $N$-grams (sets of adjacent characters).
+For instance, when evaluating the extraction rule for the HTML root node,
+\autoref{extractionAlgo} will obtain the complete string of the page
+and pass it to the \coderef{similarityAlgo} function. At this point,
+the information on where the string could be split into substrings with
+already computed $N$-grams is not accessible, and the $N$-grams of
+the page have to be computed by linearly traversing the entire string.
+To overcome this limitation and implement \emph{memoization} over the
+$N$-gram computations, \autoref{linearAlgo} uses a post-order traversal
+of the HTML tree and computes node $N$-grams from their children
+$N$-grams. This way, we avoid serializing HTML subtrees for each
+$N$-gram computation and have the guarantee that each character of the
+HTML page will be read at most once during the $N$-gram computation.
+
+An interesting question is what is the optimal $N$ for $N$-gram
+computation. To answer this question, we conduct some simple experiments.
+Using sample blog post excerpts and full texts, we calculate the string
+similarity between each excerpt and full text. For instance, using a blog
+post full text and associated text excerpt from the popular blog TechCrunch
+as presented in Table \ref{table:techcrunch}, the text similarity results
+(Table \ref{table:similarity-n-values}) using different $N$ values support
+the selection of bigrams ($N$=2).
+
+\begin{table}
+\tbl{TechCrunch blog post example.}
+{\begin{tabular}{@{}p{12cm}@{}} \toprule
+\emph{Blog post text} \\ \hline
+Apple has a new version of iOS 8 out, just a short time after the
+initial launch of the software. The update, 8.0.1, includes a number of
+fixes, but most notably (and listed first), it addressed the bug that
+prevented HealthKit apps from being available at launch. It also zaps
+some bugs with third-party keyboards, which should make them remain the
+default option until a user switches to another, which has been a sore
+spot for fans of the new external software keyboard options.
+
+Unfortunately, installing the iOS 8.0.1 update revealed that despite
+Apple’s promised fixes, it actually completely disables cellular service
+and Touch ID on many devices, though some iPhone 5s and older model
+owners report no issues. The bottom line is that you should definitely
+NOT install this update, at least until an updated version appears,
+at which time we’ll let you know it’s safe to go ahead.
+
+As you can see in the image below, Apple is also addressing an issue that
+blocked some photos from appearing in Photo Library, fixing reliability
+concerns around Reachability on iPhone 6 and 6 Plus (which brings the top
+of the screen down when you double touch the Home button), zapping bugs
+that cause unexpected data use when communicating via SMS or MMS, and
+improving the “Ask to Buy” feature for Family Sharing, specifically
+around in-app purchases, in addition to other minor bugs.\\ \hline
+
+\emph{Weblog post text abstract from RSS} \\ \hline
+Apple has a new version of iOS 8 out, just a short time after the
+initial launch of the software. The update, 8.0.1, includes a number of
+fixes, but most notably (and listed first), it addressed the bug that
+prevented HealthKit apps from being available at launch. It also zaps... \\ \hline
+\end{tabular}}
+\label{table:techcrunch}
+\end{table}
+
+\begin{table}
+\tbl{Blog post excerpt and full text similarity using different $N$ values.}
+{\begin{tabular}{@{}lccc@{}} \toprule
+        \emph{$N$} & \emph{2} & \emph{3} & \emph{4} \\ \hline
+Similarity & 0.7817 & 0.6680 & 0.6212 \\ \hline
+\end{tabular}}
+\label{table:similarity-n-values}
+\end{table}
+
+With bigrams computed in this dynamic programming manner, the overall
+time to compute all \coderef{bigramsAlgo}\code{(}\emph{node.text}\code{)}
+is linear. To conclude the proof that \autoref{linearAlgo} runs in linear
+time we show that all other computations of the inner loop can be done
+in constant \emph{amortized} time. As the number of edges in a tree is
+one less than the number of nodes, the \emph{amortized} number of bigrams
+unions per inner loop iteration tends to one. Each \emph{quotient of
+similarity} computation requires one bigrams intersection and three
+bigrams length computations. Over a finite alphabet (we used printable
+ASCII), bigrams sizes have bounded size and each of these operations
+takes constant time.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Variations for authors, dates, comments}
+\label{variationsforauthorsdatesandcomments}
+
+Using string similarity as the only score measurement leads to poor
+performance on author and date extraction, and is not suitable for
+comment extraction. This subsection presents variations of the
+\code{ScoreFunction} which addresses issues of these other types of content.
+
+The case of authors is problematic because authors' names often appear in
+multiple places of a page, which results in several rules with maximum
+\coderef{similarityAlgo} score. The heuristic we use to get around this
+issue consists of adding a new component in the \code{ScoreFunction} for
+author extraction rules: the \emph{tree distance} between the evaluated
+node and the post content node. This new component takes advantage of
+the positioning of a post's authors node which often is a direct child
+or shares its parent with the post content node.
+
+Dates are affected by the same duplication issue, as well as the issue of
+inconsistencies of format between web feeds and web pages. Our solution
+for date extraction extends the \code{ScoreFunction} for authors by
+comparing the \emph{extracted} string to multiple \emph{targets}, each
+being a different string representation of the original date obtained
+from the web feed. For instance, if the feed indicates that a post was
+published at \stringliteral{Thu, 01 Jan 1970 00:00:00}, our algorithm
+will search for a rule that returns one of \stringliteral{Thursday
+January 1, 1970}, \stringliteral{1970-01-01}, \stringliteral{43 years
+ago} and so on. So far we do not support dates in multiple languages,
+but adding new target formats based on languages detection would be a
+simple extension of our date extraction algorithm.
+
+Comments are usually available in separate web feeds, one per blog post.
+Similarly to blog feeds, comment feeds have a limited number of entries,
+and when the number of comments on a blog post exceeds this limit,
+comments have to be extracted from web pages. To do so, we use the
+following \code{ScoreFunction}:
+
+\begin{itemize}
+\item
+Rules returning fewer HTML nodes than the number of comments on the feed
+are filtered out with a zero~score,
+\item
+The scores of the remaining rules are computed with the value of the
+\emph{maximum weighted matching} in the \emph{complete bipartite graph}
+$G = (U, V, E)$, where $U$ is the set of HTML nodes returned by the rule,
+$V$ is the set of target comment fields from the web feed (such as
+comment authors) and $E(u, v)$ has weight equal to
+\coderef{similarityAlgo}\code{(}\emph{u, v}\code{)}.
+\end{itemize}
+
+Regarding time complexity, computing the \emph{tree distance} of each
+node of a graph to a single reference node can be done in linear time,
+and multiplying the number of targets by a constant factor does not
+affect the asymptotic computational complexity. Computing scores of
+comment extraction rules requires a more expensive algorithm. However,
+this is compensated by the fact that the proportion of candidates left,
+after filtering out rules not returning enough results, is very low in
+practice. Analogous reformulations to the one done with
+\autoref{linearAlgo} can be straightforwardly applied on each
+\code{ScoreFunction} to minimize the time spent in
+\coderef{similarityAlgo}.
+
diff --git a/4-architecture.tex b/4-architecture.tex
new file mode 100644
index 0000000..ac3d455
--- /dev/null
+++ b/4-architecture.tex
@@ -0,0 +1,342 @@
+﻿\section{Architecture}
+\label{architecture}
+
+We present the BlogForever crawler system architecture which implements
+the proposed algorithms for weblog data extraction via the generation
+of extraction rules. We describe the system architecture and discuss
+the software tools and techniques we used, such as the enrichment of the
+Scrapy framework for our specific usage and the integration of a headless
+web browser into the harvesting process to achieve content extraction
+from webpages which use JavaScript to display content. Following,
+we focus on the scalability design and distributed architecture of our
+system. Finally, we present our provisions for interoperability using
+established open standards which increases the value and reusability
+of the proposed system in many contexts.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{System and workflow}
+
+The BlogForever crawler is a Python\footnote{\label{python}\url{http://www.python.org/}}
+application which is based on  Scrapy, an open-source framework for web crawling.
+Scrapy provides an elegant and modular architecture illustrated
+in Fig. \ref{scrapyarchitecture}. Several components can be plugged into
+the Scrapy core infrastructure. Following, we present each part of the
+architecture and our own contributions:
+
+\begin{itemize}
+\item
+\emph{Spiders} define how a target website is scraped, including how to
+perform the crawl (i.e. follow links). The BlogForever crawer implementation
+includes two new types of spiders: \emph{NewCrawl} and \emph{UpdateCrawl},
+which implement the logic to respectively crawl a new blog and get updates
+from a previously crawled blog.
+\item
+\emph{Item Pipeline} defines the processing of extracted data from
+the spiders through several components that are executed sequentially.
+The BlogForever crawler implementation includes a new item pipeline
+which orchestrates all aspects of crawling. More specifically the
+BlogForever pipeline is defined as follows:
+  \begin{enumerate}
+  \item JavaScript rendering,
+  \item Extract content,
+  \item Extract comments,
+  \item Download multimedia files,
+  \item Prepare Archival Information Packages (APIs) to propagate
+the results to potential back-ends.
+  \end{enumerate}
+\item
+\emph{Downloader Middlewares} is a framework of hooks into Scrapy’s
+request/response processing and altering Scrapy’s requests and responses.
+\item
+\emph{Spider Middlewares} is a framework of hooks into Scrapy’s spider
+processing mechanism.
+\end{itemize}
+
+\begin{figure}[t]
+\capstart
+\centering
+\includegraphics[width=\textwidth]{./img/scrapy_architecture.eps}
+\caption{Overview of the crawler architecture. (Credit: Pablo Hoffman, Daniel Graña, Scrapy)}
+\label{scrapyarchitecture}
+\end{figure}
+
+The system architecture providers great modularity. This is illustrated
+clearly in our work with the following
+example:
+
+\begin{itemize}
+\item
+If it is necessary to disable JavaScript rendering or plugging in an
+alternative back-end can be done by editing a single line of code.
+\item The features to extract comments and download multimedia files
+were implemented after creating the initial logic to extract content
+and were added as extra steps in the pipeline.
+\item The requirement to implement interoperability provisions later
+presented in section \ref{interop} was easily covered with the implementation
+of an extra middleware plugin which was invoked from the main crawler
+architecture. No further modifications were necessary in the code.
+\end{itemize}
+
+
+In the remaining parts of this section, we elaborate our work on each
+specific part of the crawler system.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{JavaScript rendering}
+
+JavaScript is a widely used language for client-side scripting.
+While some applications simply use it for aesthetics, an increasing
+number of websites use JavaScript to download and display content.
+In such cases, traditional HTML based crawlers do not see web pages
+as they are presented to a human visitor by a web browser, and might
+therefore be obsolete for data extraction.
+
+In our experiments whilst crawling the blogosphere, we encountered
+several blogs where crawled data was incomplete because of the lack
+of JavaScript interpretation. The most frequent cases were blogs using
+the Disqus\footnote{\url{http://disqus.com/websites}} and
+LiveFyre\footnote{\url{http://web.livefyre.com}} comment hosting services.
+For webmasters, these tools are very handy because the entire comments
+infrastructure is externalized and their setup essentially comes down
+to including a JavaScript snippet in each target page. Both of these
+services heavily rely on JavaScript to download and display the comments,
+even providing functionalities such as real-time updates for edits and
+newly written comments. Less commonly, some blogs are fully rendered
+using JavaScript. When loading such websites, the web browser will not
+receive the page content as an HTML document, but will instead have
+to execute JavaScript code to download and display the page content.
+The Blogger platform provides the \emph{Dynamic Views} as a default
+template, which uses this mechanism~\cite{antinharasymiv2011}.
+
+To support blogs with JavaScript-generated content, we embed a full web
+browser into the crawler. After considering multiple options, we opted
+for PhantomJS\footnote{\url{http://phantomjs.org}}, a headless web
+browser with great performance and scripting capabilities. The JavaScript
+rendering is the very first step of web page processing. Therefore,
+extracting blog post articles, comments or multimedia files works equally
+well on blogs with JavaScript-generated content and on traditional
+HTML-only blogs.
+
+When the number of comments on a page exceeds a certain threshold, both
+Disqus and LiveFyre will only load the most recent ones and the stream
+of comments will end with a \emph{Show More Comments} button. As part of
+the page loading process, we instruct PhantomJS to repeatedly click on
+these buttons until all comments are loaded. Paths to Disqus and LiveFyre
+\emph{Show More} buttons are manually obtained. They constitute the
+only non-generic elements of our extraction stack which require human
+intervention to maintain and extend to other commenting platforms.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Content extraction}\label{enrichingscrapy}
+
+In order to identify web pages as blog posts, our implementation enriches
+Scrapy with two components to narrow the extraction process down to the
+subsets of pages which are blog posts: \emph{blog post identification}
+and \emph{download priority heuristic}.
+
+Given a URL entry point to a website, the default Scrapy behaviour
+traverses all the pages of the same domain in a \emph{last-in-first-out}
+manner. The \emph{blog post identification} function is able to identify
+whether an URL points to a blog post or not. Internally, for each blog,
+this function uses a regular expression constructed from the blog post
+URLs found in the web feed. This simple approach requires that blogs use
+the same URL pattern for all their posts (or false negatives will occur)
+which has to be distinct for pages that are not posts (or false positives
+will occur). In practice, this assumption holds for all blog platforms
+we encountered and seems to be a common practice among web developers.
+
+In order to efficiently deal with blogs that have a large number of
+pages which are not posts, the \emph{blog post identification} mechanism
+is not sufficient. Indeed, after all pages identified as blog posts
+are processed, the crawler needs to download all other pages to search
+for additional blog posts. To replace the naive \emph{random walk},
+\emph{depth first search} or \emph{breadth first search} web site
+traversals, we use a priority queue where priorities for new URLs are
+determined by a machine learning system. This mechanism has shown
+to be mandatory for blogs hosted on a single domain alongside large
+number of other types of web pages, such as those in forums or wikis.
+
+The idea is to give high priority to URLs which are believed to
+point to pages with links to blog posts. These predictions are
+done using an active \emph{Distance-Weighted $k$-Nearest-Neighbour}
+classifier~\cite{dudani1976}. Let $L(u)$ be the number of links to blog
+posts contained in a page with URL $u$. Whenever a page is downloaded,
+its URL $u$ and $L(u)$ are given to the machine learning system as
+training data. When the crawler encounters a new URL $v$, it will ask the
+machine learning system for an estimation of $L(v)$, and use this value
+as the download priority of $v$. $L(v)$ is estimated by calculating a
+weighted average of the values of the $k$ URLs most similar to $v$.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{The BlogForever metadata schema for interoperability}
+\label{interop}
+
+One of the key BlogForever project goals is interoperability with third
+party platforms. The original BlogForever crawler was intended to
+insert blog data directly to the BlogForever repository component but
+later the architecture was reworked to make it possible to use
+other storage and archiving systems as well.
+To achieve this goal, we implement a special interoperability middleware
+for the spider to produce Archival Information Packages (AIPs) from
+harvested blog content. The AIPs can be used by any software platform
+which complies with the OAIS reference model~\cite{lavoie2000meeting}.
+It must be noted also that this is the first time weblog content is
+encoded in this way.
+
+The AIPs consist of XML files structured using the
+METS~\cite{cantara2005mets} standard for encoding metadata and
+content. METS is widely adopted and supported by all popular digital
+library systems. In addition, the blog content attributes which
+are included in the METS XML packages are encoded using the MARCXML
+Schema\cite{marc2003official}. The reason for the selection of MARCXML
+is the wide adoption of the standard, its flexibility and extensibility,
+as well as previous experience with the Invenio digital library
+system\footnote{\url{http://invenio-software.org/}} which is also based
+on MARCXML.
+
+There are three kinds of entities which can be included in an AIP:
+Blog, Entry and Comment. The content extracted from weblogs is mapped
+to the relevant entities using the following rule: If an attribute is
+already defined in MARC for other content types use the same MARC code
+for blogs. If an attribute is totally new, an unused MARC 9xx tag is
+chosen to represent it, composing therefore the BlogForever metadata
+schema~\cite{llopis2012d4}. Following, we present the BlogForever
+metadata schema for Blog, Post, Page and Comment entities in Tables
+\ref{table:blog-record-attributes},
+\ref{table:post-page-shared-attributes} and
+\ref{table:comment-attributes}.
+
+\begin{table}
+\tbl{Blog record attributes - MARC 21 representations mapping.}
+{\begin{tabular}{@{}ll@{}} \toprule
+\textbf{Blog attribute} & \textbf{MARC 21 representation} \\ \hline
+title & 245 \$a \\
+subtitle & 245 \$b \\
+URI & 520 \$u\\
+aliases & 100 \$g \\
+status\_code & 952 \$a\\
+language & 041 \$a\\
+encoding & 532\\
+sitemap\_uri & 520\\
+platform & 781 \$a\\
+platform\_version & 781 \$b\\
+webmaster & 955 \$a\\
+hosting\_ip & 956 \$a\\
+location\_city & 270 \$d\\
+location\_country & 270 \$b\\
+last\_activity\_date & 954 \$a\\
+post\_frequency & 954 \$b\\
+update\_frequency & 954 \$c\\
+copyright & 542\\
+ownership\_rights & 542\\
+distribution\_rights & 542\\
+access\_rights & 542\\
+license & 542 \$f\\ \hline
+\end{tabular}}
+\label{table:blog-record-attributes}
+\end{table}
+
+\begin{table}
+\tbl{Blog record attributes - MARC 21 representations mapping.}
+{\begin{tabular}{@{}ll@{}} \toprule
+\textbf{Post and page attribute} & \textbf{MARC 21 representation} \\ \hline
+title & 245 \$a \\
+subtitle & 245 \$b \\
+full\_content & 520 \$a \\
+full\_content\_format & 520 \$b \\
+author & 100 \$a \\
+URI & 520 \$u \\
+aliases & 100 \$g \\
+alt\_identifier (UR) & 0247 \$a \\
+date\_created & 269 \$c\\
+date\_modified & 260 \$m \\
+version & 950 \$a \\
+status\_code & 952 \$a \\
+response\_code & 952 \$b \\
+geo\_longitude & 342 \$g \\
+geo\_latitude & 342 \$h \\
+access\_restriction & 506 \\
+has\_reply & 788 \$a \\
+last\_reply\_date & 788 \$c \\
+num\_of\_replies & 788 \$b \\
+child\_of & 760 \$o \$4 \$w\\
+\hline
+\end{tabular}}
+\label{table:post-page-shared-attributes}
+\end{table}
+
+\begin{table}
+\tbl{Comment record attributes - MARC tags mapping.}
+{\begin{tabular}{@{}ll@{}} \toprule
+\textbf{Comment attribute} & \textbf{MARC 21 representation} \\ \hline
+subject & 245 \$a\\
+author & 100 \$a \\
+full\_content & 520 \$a \\
+full\_content\_format & 520 \$b \\
+URI & 520 \$u\\
+status & 952 \$a\\
+date\_added & 269 \$c\\
+date\_modified & 269 \$m\\
+addressed\_to\_URI & 789 \$u\\
+%& \textit{timezone} & \\
+%& \textit{format} & \\
+%& comment\_type (UR) & \\
+%& source\_URI (UR) & \\
+%& source\_name (UR) & \\
+geo\_longitude & 342 \$g \\
+geo\_latitude & 342 \$h \\
+has\_reply & 788 \$a \\
+num\_replies & 788 \$b\\
+is\_child\_of\_post & 773 \$o \$4 \$w\\
+is\_child\_of\_comment & 773 \$o \$4 \$w\\ \hline
+\end{tabular}}
+\label{table:comment-attributes}
+\end{table}
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Distributed architecture and scalability}
+\label{scalability}
+
+One of the problems of web crawling is the large amount
+of input which need to be processed. To address this issue,
+it is crucial to build every layer of the system with scalability in
+mind~\cite{thereactivemanifesto2013}.
+
+The BlogForever Crawler, and in particular the two core procedures
+\emph{NewCrawl} and \emph{UpdateCrawl}, are designed to be usable as
+part of an event-driven, scalable and fault-resilient distributed system.
+Heading in this direction, we made the key design choice to have
+both \emph{NewCrawl} and \emph{UpdateCrawl} as stateless components.
+From a high-level point of view, these two components are \emph{purely functional}:
+%
+\begin{eqnarray*}
+NewCrawl:    &~ URL \rightarrow \mathcal{P}(RECORD) \\
+UpdateCrawl: &~ URL \times DATE \rightarrow \mathcal{P}(RECORD)
+\end{eqnarray*}
+%
+where $URL$, $DATE$ and $RECORD$ are respectively the set of all URLs,
+dates and records, and $\mathcal{P}$ designates the power set operator.
+By delegating all shared mutable state to the back-end system,
+web crawler instances can be added, removed and used interchangeably.
+
+To implement a distributed crawler architecture, we choose to use
+Scrapyd\footnote{\url{http://scrapyd.readthedocs.org/en/latest/}},
+an application for deploying and running Scrapy spiders.
+The process is quite straightforward:
+
+\begin{enumerate}
+\item
+Deploy the BlogForever crawler in any number of servers according
+to requirements. Using the Scrapyd component which is run as a system
+daemon, each crawler is listening for requests to run crawling tasks
+and spawn a process for each new command.
+\item
+Implement a small control program that reads the list of target weblogs
+which need to be crawled and issue commands in a round-robin fashion
+using the Scrapyd JSON
+API\footnote{\url{http://scrapyd.readthedocs.org/en/latest/api.html}}.
+\item
+All crawlers share a common storage service where they save the crawling
+results.
+\end{enumerate}
+
diff --git a/5-evaluation.tex b/5-evaluation.tex
new file mode 100644
index 0000000..af4b2c3
--- /dev/null
+++ b/5-evaluation.tex
@@ -0,0 +1,111 @@
+\section{Evaluation}
+\label{evaluation}
+
+Our evaluation is articulated in two parts. First, we compare the
+article extraction procedure presented in \autoref{algorithms} with
+three open-source projects capable of extracting articles and titles
+from web pages. The comparison will show that our weblog-targeted solution
+has better performance both in terms of success rate and running time.
+Second, a discussion is held regarding the different solutions available
+to archive data beyond what is available in the HTML source code.
+Extraction of authors, dates and comments is not part of this evaluation
+because of the lack of publicly available competing projects and
+reference data sets.
+
+In our experiments we used \emph{Debian GNU/Linux 7.2}, \emph{Python 2.7}
+and an \emph{Intel Core i7-3770 3.4 GHz} processor. Timing measurements
+were made on a single dedicated core with garbage collection disabled.
+The Git repository for this
+paper\footnote{\url{https://github.com/OlivierBlanvillain/bfc-paper}}
+contains the necessary scripts and instructions to reproduce all the
+evaluation experiments presented in this section. The crawler source
+code is available under the MIT license from the project's
+websites\footnote{\url{https://github.com/BlogForever/crawler}}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Extraction success rates}
+
+To evaluate article and title extraction from weblog posts
+we compare our approach to three open source projects:
+Readability\footnote{\url{https://github.com/gfxmonk/python-readability}},
+Boilerpipe~\cite{kohlschuetter2010} and Goose\footnote{\url{https://github.com/GravityLabs/goose}},
+which are implemented in JavaScript, Java and Scala respectively.
+These projects are more generic than our blog-specific approach in the
+sense that they are able to identify and extract data directly from HTML
+source code, and do not make use of web feeds or structural similarities
+between pages of the same weblog (observations (\ref{havefeedAssum}) and
+(\ref{similarhtmlAssum})). Table \ref{table:evaluation-performance} shows the extraction
+success rates for article and title on a test sample of 2300 posts
+from 230 weblogs obtained from the Spinn3r dataset~\cite{burton2011}.
+
+\begin{table}
+\tbl{Extraction success rates for different algorithms.}
+{\begin{tabular}{@{}lcccc@{}} \toprule
+		\textbf{Target} & \textbf{Our~approach} & \textbf{Readability} & \textbf{Boilerpipe} & \textbf{Goose} \\ \hline
+    Article & 93.0\% & 88.1\% & 79.3\% & 79.2\% \\
+    Title   & 95.0\% & 74.0\% & N/A    & 84.9\% \\ \hline
+\end{tabular}}
+\label{table:evaluation-performance}
+\end{table}
+
+On our test dataset, \autoref{extractionAlgo} outperformed the
+competition by 4.9\% on article extraction and 10.1\% on title
+extraction. It is important to stress that Readability, Boilerpipe
+and Goose rely on generic techniques such as word density, paragraph
+clustering and heuristics on HTML tagging conventions, which are designed
+to work for any type of web page. On the contrary, our algorithm is
+only suitable for pages with associated web feeds, as these provide the
+reference data used to build extraction rules. Therefore, results shown
+in Table \ref{table:evaluation-performance} should not be interpreted as a general
+quality evaluation of the different projects, but simply as evidence
+that our approach is more suitable when working with weblogs.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Article extraction running times}
+
+In addition to the quality of the extracted data we also evaluated the
+running time of the extraction procedure. The main point of interest is
+the ability of the extraction procedure to scale as the number of posts
+in the processed weblog increases. This corresponds to the evaluation of
+a \emph{NewCrawl} task, which is in charge of harvesting all published
+content on a weblog.
+
+Figure \ref{runningtime} shows the cumulated time spent for each article
+extraction procedure (this excludes common tasks such as downloading
+pages and storing results) as a function of the number of weblog posts
+processed. We used the Quantum Diaries\footnote{\url{http://www.quantumdiaries.org}}
+blog for this experiment. Data presented in this graph was obtained
+by taking the arithmetic mean over 10 measurements. These results are
+believed to be significant given that standard deviations are of
+the order of 2 milliseconds.
+
+
+\begin{figure*}[!hbt]
+\centering
+\label{runningtime}
+\input{main-gnuplottex-fig1.tex}
+\end{figure*}
+
+As illustrated in \autoref{runningtime}, our approach spends the majority
+of its total running time between the initialisation the processing
+of the first weblog post. This initial increase of about 0.4 seconds
+corresponds to cost of executing \autoref{linearAlgo} to compute
+extraction rule for articles. As already mentioned, this consists
+in computing the \emph{best extraction rule} of each pages references
+by the web feed and picking the one functioning best on these pages.
+Once we have this extraction rule, processing subsequent weblog posts only
+requires parsing and applying the rule, which takes about 3 milliseconds
+and are barely visible on the scale of \autoref{runningtime}. The other
+evaluated solutions do not function this way: each weblog post is processed
+as new and independent input, leading to approximately linear running
+times.
+
+The vertical dashed line at 15 processed weblog posts represents a suitable
+point of comparison of processing time per post. Indeed, as the
+web feed of our test weblog contains 15 posts, the extraction rule
+computation performed by our approach include the cost of entirely
+processing these 15 entries. That being said, comparing raw performance
+of algorithms implemented in different programming languages is not very
+informative given the high variations of running times observed across
+programming languages~\cite{hundt2011}.
+
diff --git a/6-conclusion-and-future-work.tex b/6-conclusion-and-future-work.tex
new file mode 100644
index 0000000..2ff9f1d
--- /dev/null
+++ b/6-conclusion-and-future-work.tex
@@ -0,0 +1,45 @@
+\section{Discussion and Conclusions}
+\label{conclusionandfuturework}
+In this article, we presented our extended work on a scalable approach to
+harvest modern weblogs. Our approach is based on a new algorithm to build
+extraction rules from web feeds. The key observations which led us to
+the inception and implementation of this algorithm are the facts that:
+(1) weblogs provide web feeds which include structured and standardized
+views of the latest blog posts, and (2) post of the same weblog share
+a similar HTML structure. Following, we presented a simple adaptation
+of this procedure that allows extracting different types of content,
+including authors, dates, comments and potentially any other element.
+The elaboration of this process enables the wider use of this method
+as it is feasible to devise variations of the proposed method to extract
+any kind of weblog content.
+
+A critical part of this work was the presentation of the BlogForever
+crawler architecture and discussion of the software tools and the novel
+techniques we used. In order to support rapidly evolving web technologies
+such as JavaScript-generated content, the crawler uses a headless web
+browser to render pages before processing them. Another important aspect
+of the crawler architecture was the interoperability provisions.
+In our design, we introduced a new metadata schema for interoperability,
+encoding weblog crawling results in Archival Information Packages (AIPs)
+using established open standards. This feature enables the use of our
+system in many contexts and with multiple different back-ends, increasing
+its relevance and reusability. We also highlighted the design choices
+made to achieve both modularity and scalability. This is particularly
+relevant in the domain of web crawling given that intensive network
+operations can be a serious bottleneck. Crawlers greatly benefit from
+the use of multiple Internet access points which makes them natural
+candidates for distributed computing.
+
+Our method had great success with content extraction accuracy and
+performance against state-of-the-art open source web article extraction
+systems as presented in the evaluation section. We have to note thought
+that our experiments on a considerably large weblogs dataset showed that
+there were some failing tests which stem from either the violation of one
+of our two key observations, or from an insufficient amount of text in
+posts. Therefore, it is suggested to potential users to ensure that these
+observations are valid on the target weblogs before proceeding with using
+the BlogForever crawler. Future work could attempt to alleviate this problem
+using \emph{hybrid} extraction algorithms. Combining our approach with
+others techniques such as word density or special reasoning could lead
+to better performance given that these techniques are insensible to the
+above issues.
diff --git a/7-acknowledgments.tex b/7-acknowledgments.tex
new file mode 100644
index 0000000..e3e5bd6
--- /dev/null
+++ b/7-acknowledgments.tex
@@ -0,0 +1,6 @@
+\section*{Acknowledgments}
+\label{acknowledgments}
+
+Acknowledgments to G. Gkotsis from the University of Warwick
+for generously sharing his research material, time, and ideas with us.
+
diff --git a/LICENSE.MIT b/LICENSE.MIT
deleted file mode 100644
index 0b001ac..0000000
--- a/LICENSE.MIT
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2013 Olivier Blanvillain
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index 73b6086..0000000
--- a/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-blogforever-crawler-publication
--------------------------------
-
-This repository contains all the scripts and files related the blogforever-crawler-publication. It is organized as follows:
-
-- `/tex` contains the latex and gnuplot files together with instructions on how to compile [the paper][1] from source,
-- `/dataset` explains how to extract our test-set from of the [Spinn3r Dataset](http://www.icwsm.org/data/),
-- `/success-rates` has the scripts we used to obtain the
-"extraction success rates" data,
-- `/running-times` contains the code we used for running time measurements.
-
-Please keep in mind that the scripts you will find here were written as "single use code" and are anything but beautiful. If you have any issue compiling the paper or running the experiments just let me know!
-
-[1]: https://github.com/OlivierBlanvillain/blogforever-crawler-publication/raw/master/tex/main.pdf
diff --git a/tex/sig-alternate.cls b/acm_proc_article-sp.cls
similarity index 89%
rename from tex/sig-alternate.cls
rename to acm_proc_article-sp.cls
index 694a897..9ec6f3c 100644
--- a/tex/sig-alternate.cls
+++ b/acm_proc_article-sp.cls
@@ -1,16 +1,15 @@
-% SIG-ALTERNATE.CLS - VERSION 2.5
-% "COMPATIBLE" WITH THE "ACM_PROC_ARTICLE-SP.CLS" V3.2SP
-% Gerald Murray - May 23rd 2012
+% ACM_PROC_ARTICLE-SP.CLS - VERSION 3.2SP
+% COMPATIBLE WITH THE "SIG-ALTERNATE" V2.4
+% Gerald Murray - April 22nd. 2009
 %
 % ---- Start of 'updates'  ----
-% Changed $10 fee to $15 -- May 2012  --  Gerry
-% Changed $5 fee to $10 --  April 2009 -- Gerry
+%
 % April 22nd. 2009 - Fixed 'Natbib' incompatibility problem - Gerry
 % April 22nd. 2009 - Fixed 'Babel' incompatibility problem - Gerry
 % April 22nd. 2009 - Inserted various bug-fixes and improvements - Gerry
 %
 % To produce Type 1 fonts in the document plus allow for 'normal LaTeX accenting' in the critical areas;
-% title, author block, section-heads, confname, etc. etc.
+% title, author block, section-heads, etc. etc.
 % i.e. the whole purpose of this version update is to NOT resort to 'inelegant accent patches'.
 % After much research, three extra .sty packages were added to the the tail (ae, aecompl, aeguill) to solve,
 % in particular, the accenting problem(s). We _could_ ask authors (via instructions/sample file) to 'include' these in
@@ -19,7 +18,6 @@
 % NOTE: all 'patchwork accenting" has been commented out (here) and is no longer 'used' in the sample .tex file (either).
 % Gerry June 2007
 %
-% Patch for accenting in conference name/location. Gerry May 3rd. 2007
 % Rule widths changed to .5, author count (>6) fixed, roll-back for Type 3 problem. Gerry March 20th. 2007
 % Changes made to 'modernize' the fontnames but esp. for MikTeX users V2.4/2.5 - Nov. 30th. 2006
 % Updated the \email definition to allow for its use inside of 'shared affiliations' - Nov. 30th. 2006
@@ -29,22 +27,24 @@
 % Georgia fixed bug in sub-sub-section numbering in paragraphs (July 29th. 2002)
 % JS/GM fix to vertical spacing before Proofs (July 30th. 2002)
 %
-% Made the Permission Statement / Conference Info / Copyright Info
-% 'user definable' in the source .tex file OR automatic if
-% not specified.
-%
 % Allowance made to switch default fonts between those systems using
 % normal/modern font names and those using 'Type 1' or 'Truetype' fonts.
-% See LINE NUMBER 255 for details.
+% See LINE NUMBER 269 for details.
 % Also provided for enumerated/annotated Corollaries 'surrounded' by
-% enumerated Theorems (line 848).
+% enumerated Theorems (line 844).
 % Gerry November 11th. 1999
 %
+% This 'sp' version does NOT produce the permission block.
+%
+% Major change in January 2000 was to include a "blank line" in between
+% new paragraphs. This involved major changes to the, then, acmproc-sp.cls  1.0SP
+% file, precipitating a 'new' name: "acm_proc_article-sp.cls" V2.01SP.
+%
 % ---- End of 'updates' ----
 %
-\def\fileversion{v2.5}          % for ACM's tracking purposes
-\def\filedate{May 23, 2012}    % Gerry Murray's tracking data
-\def\docdate {Wednesday 23rd. May 2012} % Gerry Murray (with deltas to doc}
+\def\fileversion{V3.2SP}         % for ACM's tracking purposes
+\def\filedate{April 22, 2009}    % Gerry Murray's tracking data
+\def\docdate {Wednesday 22nd. April 2009} % Gerry Murray (with deltas to doc}
 \usepackage{epsfig}
 \usepackage{amssymb}
 \usepackage{amsmath}
@@ -53,22 +53,19 @@
 %\usepackage[T1]{fontenc}  % Gerry March 12, 2007 - causes Type 3 problems (body text)
 %\usepackage{textcomp}
 %
-% SIG-ALTERNATE DOCUMENT STYLE
+% ACM_PROC_ARTICLE-SP  DOCUMENT STYLE
 % G.K.M. Tobin August-October 1999
 %    adapted from ARTICLE document style by Ken Traub, Olin Shivers
 %    also using elements of esub2acm.cls
-% HEAVILY MODIFIED, SUBSEQUENTLY, BY GERRY MURRAY 2000
+% LATEST REVISION V3.2SP - APRIL 2009
 % ARTICLE DOCUMENT STYLE -- Released 16 March 1988
 %    for LaTeX version 2.09
 % Copyright (C) 1988 by Leslie Lamport
 %
 %
-%%% sig-alternate.cls is an 'ALTERNATE' document style for producing
-%%% two-column camera-ready pages for ACM conferences.
-%%% THIS FILE DOES NOT STRICTLY ADHERE TO THE SIGS (BOARD-ENDORSED)
-%%% PROCEEDINGS STYLE. It has been designed to produce a 'tighter'
-%%% paper in response to concerns over page budgets.
-%%% The main features of this style are:
+%%% ACM_PROC_ARTICLE-SP is a document style for producing two-column camera-ready pages for
+%%% ACM conferences, according to ACM specifications.  The main features of
+%%% this style are:
 %%%
 %%% 1)  Two columns.
 %%% 2)  Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of
@@ -92,7 +89,7 @@
 %%%
 %
 %%% Copyright Space:
-%%% This style automatically reserves 1" blank space at the bottom of page 1/
+%%% This style automatically leaves 1" blank space at the bottom of page 1/
 %%% column 1.  This space can optionally be filled with some text using the
 %%% \toappear{...} command.  If used, this command must be BEFORE the \maketitle
 %%% command.  If this command is defined AND [preprint] is on, then the
@@ -113,12 +110,12 @@
 %%% You may turn this hackery off via the -e option:
 %%%     dvips -e 0 foo.dvi >foo.ps
 %%%
-\typeout{Document Class 'sig-alternate' <23rd. May '12>.  Modified by G.K.M. Tobin/Gerry Murray}
+\typeout{Document Class 'acm_proc_article-sp' <22nd. April '09>.  Modified by G.K.M. Tobin}
 \typeout{Based in part upon document Style `acmconf' <22 May 89>. Hacked 4/91 by}
 \typeout{shivers@cs.cmu.edu, 4/93 by theobald@cs.mcgill.ca}
 \typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.}
-\typeout{****** Bugs/comments/suggestions/technicalities to Gerry Murray -- murray@hq.acm.org ******}
-\typeout{Questions on the style, SIGS policies, etc. to Adrienne Griscti griscti@acm.org}
+\typeout{****** Bugs/comments/suggestions  to Gerry Murray -- murray@hq.acm.org ******}
+
 \oddsidemargin 4.5pc
 \evensidemargin 4.5pc
 \advance\oddsidemargin by -1in  % Correct for LaTeX gratuitousness
@@ -139,6 +136,7 @@
 \@ifundefined{footheight}{\newdimen\footheight}{}% this is for LaTeX2e
 \footheight 12pt                % Height of box containing running foot.

+
 %% Must redefine the top margin so there's room for headers and
 %% page numbers if you are using the preprint option. Footers
 %% are OK as is. Olin.
@@ -189,8 +187,12 @@
 \marginparpush 5pt       % Minimum vertical separation between two marginal
                          % notes.

-\parskip 0pt plus 1pt            % Extra vertical space between paragraphs.
-\parindent 9pt  % GM July 2000 / was 0pt - width of paragraph indentation.
+\parskip 0pt                % Extra vertical space between paragraphs.
+                    % Set to 0pt outside sections, to keep section heads
+                    % uniformly spaced.  The value of parskip is set
+                    % to leading value _within_ sections.
+                    % 12 Jan 2000 gkmt
+\parindent 0pt                % Width of paragraph indentation.
 \partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to
                                  % \parskip and \topsep, added when user
                                  % leaves blank line before environment.
@@ -275,6 +277,7 @@
 \end{tabular}%
   \begin{tabular}[t]{p{\auwidth}}\centering}%

+
 %  *** NOTE *** NOTE *** NOTE *** NOTE ***
 %  If you have 'font problems' then you may need
 %  to change these, e.g. 'arialb' instead of "arialbd".
@@ -302,7 +305,6 @@
 %\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi
 %\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times
 %\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times
-
 % *********************************************
 %  -- End of block A --
 %
@@ -352,6 +354,7 @@
  \setcounter{subsection}{0}
  \def\thesection{\Alph{section}} }

+
 \leftmargini 22.5pt
 \leftmarginii 19.8pt    % > \labelsep + width of '(m)'
 \leftmarginiii 16.8pt   % > \labelsep + width of 'vii.'
@@ -433,7 +436,7 @@
 \def\theequation{\arabic{equation}}

 \arraycolsep 4.5pt   % Half the space between columns in an array environment.
-\tabcolsep 5.4pt    % Half the space between columns in a tabular environment.
+\tabcolsep 5.4pt     % Half the space between columns in a tabular environment.
 \arrayrulewidth .5pt % Width of rules in array and tabular environment. % (was .4) updated Gerry March 20 2007
 \doublerulesep 1.8pt % Space between adjacent rules in array or tabular env.

@@ -479,7 +482,7 @@
    \addvspace{1.0em plus 1pt}   % space above toc entry
    \@tempdima 1.5em             % width of box holding section number
    \begingroup
-    \parindent  \z@ \rightskip \@pnumwidth
+     \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \bf                        % Boldface.
      \leavevmode                % TeX command to enter horizontal mode.
@@ -538,7 +541,6 @@
 \def\dbltopfraction{.7}
 \def\dblfloatpagefraction{.5}

-%
 \long\def\@makecaption#1#2{
    \vskip \baselineskip
    \setbox\@tempboxa\hbox{\textbf{#1: #2}}
@@ -548,17 +550,6 @@
        \hbox to\hsize{\hfil\box\@tempboxa\hfil}\par
    \fi}

-%
-
-\long\def\@makecaption#1#2{
-   \vskip 10pt
-   \setbox\@tempboxa\hbox{\textbf{#1: #2}}
-   \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
-       \textbf{#1: #2}\par                %   THEN set as ordinary paragraph.
-     \else                      %   ELSE  center.
-       \hbox to\hsize{\hfil\box\@tempboxa\hfil}
-   \fi}
-
 \@ifundefined{figure}{\newcounter {figure}} % this is for LaTeX2e

 \def\fps@figure{tbp}
@@ -610,7 +601,7 @@

 \if@ll
   \NeedsTeXFormat{LaTeX2e}
-  \ProvidesClass{sig-alternate} [2012/05/23 - V2.5 - based on acmproc.cls V1.3 <Nov. 30 '99>]
+  \ProvidesClass{acm_proc_article-sp} [2009/04/22 - V3.2SP - based on esub2acm.sty <23 April 96>]
   \RequirePackage{latexsym}% QUERY: are these two really needed?
   \let\dooptions\ProcessOptions
 \else
@@ -787,7 +778,7 @@
    \color@endgroup} %g}
 \fi
 \setcounter{footnote}{0}
-\section*{ABSTRACT}\normalsize%\ninept
+\section*{ABSTRACT}\normalsize %\the\parskip \the\baselineskip%\ninept
 }

 \def\endabstract{\if@twocolumn\else\endquotation\fi}
@@ -798,11 +789,14 @@
 \quotation
 \fi}

-\def\terms{\if@twocolumn
+% I've pulled the check for 2 cols, since proceedings are _always_
+% two-column  11 Jan 2000 gkmt
+\def\terms{%\if@twocolumn
 \section*{General Terms}
-\else \small
-\quotation
-\fi}
+%\else \small
+%\quotation\the\parskip
+%\fi}
+}

 % -- Classification needs to be a bit smart due to optionals - Gerry/Georgia November 2nd. 1999
 \newcount\catcount
@@ -872,7 +866,6 @@
   \space\number\day, \number\year}

 \def\@begintheorem#1#2{%
-    \parskip 0pt % GM July 2000 (for tighter spacing)
     \trivlist
     \item[%
         \hskip 10\p@
@@ -882,7 +875,6 @@
     \it
 }
 \def\@opargbegintheorem#1#2#3{%
-    \parskip 0pt % GM July 2000 (for tighter spacing)
     \trivlist
     \item[%
         \hskip 10\p@
@@ -993,6 +985,7 @@
 \def\thesubsection{\thesection.\arabic{subsection}}
 \def\thesubsubsection{\thesubsection.\arabic{subsubsection}} %removed \subsecfnt 29 July 2002 gkmt
 \def\theparagraph{\thesubsubsection.\arabic{paragraph}} %removed \subsecfnt 29 July 2002 gkmt
+
 \newif\if@uchead
 \@ucheadfalse

@@ -1005,19 +998,32 @@
     \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}
         {4\p@}{\normalsize\@ucheadtrue}%
 }
+
+% Rationale for changes made in next four definitions:
+% "Before skip" is made elastic to provide some give in setting columns (vs.
+% parskip, which is non-elastic to keep section headers "anchored" to their
+% subsequent text.
+%
+% "After skip" is minimized -- BUT setting it to 0pt resulted in run-in heads, despite
+% the documentation asserted only after-skip < 0pt would have result.
+%
+% Baselineskip added to style to ensure multi-line section titles, and section heads
+% followed by another section head rather than text, are decently spaced vertically.
+% 12 Jan 2000 gkmt
 \def\section{%
-    \@startsection{section}{1}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}% GM
-    {4\p@}{\baselineskip 14pt\secfnt\@ucheadtrue}%
+    \@startsection{section}{1}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}%
+    {0.5pt}{\baselineskip=14pt\secfnt\@ucheadtrue}%
 }

 \def\subsection{%
-    \@startsection{subsection}{2}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}
-    {4\p@}{\secfnt}%
+    \@startsection{subsection}{2}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}
+    {0.5pt}{\baselineskip=14pt\secfnt}%
 }
 \def\subsubsection{%
-    \@startsection{subsubsection}{3}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}%
-    {4\p@}{\subsecfnt}%
+    \@startsection{subsubsection}{3}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}%
+    {0.5pt}{\baselineskip=14pt\subsecfnt}%
 }
+
 %\def\paragraph{%
 %    \vskip 12pt\@startsection{paragraph}{3}{\z@}{6\p@ \@plus \p@}% original
 %    {-5\p@}{\subsecfnt}%
@@ -1031,6 +1037,7 @@
     \vskip 12pt\@startsection{paragraph}{4}{\z@}{6\p@ \@plus \p@}%    % GM and Wolfgang May - 11/30/06
     {-5\p@}{\subsecfnt}%
 }
+
 \let\@period=.
 \def\@startsection#1#2#3#4#5#6{%
         \if@noskipsec  %gkmt, 11 aug 99
@@ -1038,24 +1045,41 @@
         \leavevmode
         \global\let\@period.%
     \fi
-      \par %
+    \par
     \@tempskipa #4\relax
     \@afterindenttrue
     \ifdim \@tempskipa <\z@
         \@tempskipa -\@tempskipa
         \@afterindentfalse
     \fi
-    \if@nobreak
-    \everypar{}%
-    \else
+    %\if@nobreak  11 Jan 00 gkmt
+        %\everypar{}
+    %\else
         \addpenalty\@secpenalty
         \addvspace\@tempskipa
-    \fi
-\parskip=0pt % GM July 2000 (non numbered) section heads
+    %\fi
+    \parskip=0pt
     \@ifstar
         {\@ssect{#3}{#4}{#5}{#6}}
         {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
 }
+
+
+\def\@ssect#1#2#3#4#5{%
+  \@tempskipa #3\relax
+  \ifdim \@tempskipa>\z@
+    \begingroup
+      #4{%
+        \@hangfrom{\hskip #1}%
+          \interlinepenalty \@M #5\@@par}%
+    \endgroup
+  \else
+    \def\@svsechd{#4{\hskip #1\relax #5}}%
+  \fi
+  \vskip -10.5pt  %gkmt, 7 jan 00 -- had been -14pt, now set to parskip
+  \@xsect{#3}\parskip=10.5pt} % within the starred section, parskip = leading 12 Jan 2000 gkmt
+
+
 \def\@sect#1#2#3#4#5#6[#7]#8{%
     \ifnum #2>\c@secnumdepth
         \let\@svsec\@empty
@@ -1087,8 +1111,8 @@
             \endgroup
         \endgroup
         \csname #1mark\endcsname{#7}%
-        \vskip -12pt  %gkmt, 11 aug 99 and GM July 2000 (was -14) - numbered section head spacing
-\addcontentsline{toc}{#1}{%
+        \vskip -10.5pt  % -14pt gkmt, 11 aug 99 -- changed to -\parskip 11 Jan 2000
+      \addcontentsline{toc}{#1}{%
             \ifnum #2>\c@secnumdepth \else
                 \protect\numberline{\csname the#1\endcsname}%
             \fi
@@ -1113,8 +1137,7 @@
             }%
         }%
     \fi
-    \@xsect{#5}\hskip 1pt
-    \par
+    \@xsect{#5}\parskip=10.5pt% within the section, parskip = leading 12 Jan 2000 gkmt
 }
 \def\@xsect#1{%
     \@tempskipa #1\relax
@@ -1146,6 +1169,7 @@
     \fi
     \ignorespaces
 }
+
 \def\@trivlist{%
     \@topsepadd\topsep
     \if@noskipsec
@@ -1175,9 +1199,10 @@
     \@outerparskip\parskip
 }

-%%% Actually, 'abbrev' works just fine as the default
+%%% Actually, 'abbrev' works just fine as the default - Gerry Feb. 2000
 %%% Bibliography style.

+\parindent 0pt
 \typeout{Using 'Abbrev' bibliography style}
 \newcommand\bibyear[2]{%
     \unskip\quad\ignorespaces#1\unskip
@@ -1256,7 +1281,7 @@
             \fi
         }%
     }%
-    \@ifstar\@citeyear\@citeyear  % GM July 2000
+    \@ifstar\@citeyear\@citeyear % changed from  "\@ifstart" 12 Jan 2000 gkmt
 }

 \def\@citenormal{%
@@ -1294,8 +1319,8 @@
 }
 %\let\@biblabel\@gobble   % Dec. 2008 - Gerry
 % ----
-\def\@biblabelnum#1{[#1]} % Gerry's solution #1 - for Natbib -- April 2009
-\let\@biblabel=\@biblabelnum  % Gerry's solution #1 - for Natbib -- April 2009
+\def\@biblabelnum#1{[#1]} % Gerry's solution #1 - for Natbib
+\let\@biblabel=\@biblabelnum  % Gerry's solution #1 - for Natbib
 \def\newblock{\relax} % Gerry Dec. 2008
 % ---
 \newdimen\bibindent
@@ -1305,7 +1330,6 @@
 \ifnum\addauflag=0\addauthorsection\global\addauflag=1\fi
      \section[References]{%    <=== OPTIONAL ARGUMENT ADDED HERE
         {References} % was uppercased but this affects pdf bookmarks (SP/GM October 2004)
-          {\vskip -9pt plus 1pt} % GM Nov. 2006 / GM July 2000 (for somewhat tighter spacing)
          \@mkboth{{\refname}}{{\refname}}%
      }%
      \list{[\arabic{enumi}]}{%
@@ -1410,9 +1434,9 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%
 \ps@plain
 \baselineskip=11pt
-\let\thepage\relax % For NO page numbers - GM Nov. 30th. 1999 and July 2000
+\let\thepage\relax % For  NO page numbers - Gerry Nov. 30th. 1999
 \def\setpagenumber#1{\global\setcounter{page}{#1}}
-%\pagenumbering{arabic}  % Arabic page numbers GM July 2000
+%\pagenumbering{arabic}  % Arabic page numbers but commented out for NO page numbes - Gerry Nov. 30th. 1999
 \twocolumn             % Double column.
 \flushbottom           % Even bottom -- alas, does not balance columns at end of document
 \pagestyle{plain}
@@ -1422,21 +1446,17 @@
 \newtoks\copyrtyr
 \newtoks\acmcopyr
 \newtoks\boilerplate
-\global\acmcopyr={X-XXXXX-XX-X/XX/XX}  % Default - 5/11/2001 *** Gerry
-\global\copyrtyr={20XX}                % Default - 3/3/2003 *** Gerry
 \def\CopyrightYear#1{\global\copyrtyr{#1}}
 \def\crdata#1{\global\acmcopyr{#1}}
 \def\permission#1{\global\boilerplate{#1}}
 %
-\global\boilerplate={Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page.  To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.}
 \newtoks\copyrightetc
-\global\copyrightetc{Copyright \the\copyrtyr\ ACM \the\acmcopyr\ ...\$15.00} % Gerry changed to 15 May 2012
+\global\copyrightetc{\ } %  Need to have 'something' so that adequate space is left for pasting in a line if "confinfo" is supplied.
+
 \toappear{\the\boilerplate\par
-{\confname{\the\conf}} \the\confinfo\par \the\copyrightetc.}
-%\DeclareFixedFont{\altcrnotice}{OT1}{tmr}{m}{n}{8}  % << patch needed for accenting e.g. Montreal - Gerry, May 2007
-%\DeclareFixedFont{\altconfname}{OT1}{tmr}{m}{it}{8}  % << patch needed for accenting in italicized confname - Gerry, May 2007
-%
-%{\altconfname{{\the\conf}}} {\altcrnotice\the\confinfo\par} \the\copyrightetc.}  % << Gerry, May 2007
+{\confname{\the\conf}} \the\confinfo\par \the\copyrightetc}
+% End of ACM_PROC_ARTICLE-SP.CLS -- V3.2SP - 04/22/2009 --
+% Gerry Murray -- Wednesday April 22nd. 2009
 %
 % The following section (i.e. 3 .sty inclusions) was added in May 2007 so as to fix the problems that many
 % authors were having with accents. Sometimes accents would occur, but the letter-character would be of a different
@@ -1647,3 +1667,4 @@
 \endinput
 %

+
diff --git a/tex/algos.tex b/algos.tex
similarity index 94%
rename from tex/algos.tex
rename to algos.tex
index 5c46a18..8a0e8bc 100644
--- a/tex/algos.tex
+++ b/algos.tex
@@ -60,7 +60,7 @@
         \emph{rules \Arrow rules} + \set{\stringliteral{
           //*[@class=`\textnormal{\it node.class}']}}\;
       } \lElse{
-        \emph{rules \Arrow rules} + \RelativePathTo{node}
+        \emph{rules \Arrow rules} + \set{\RelativePathTo{node}}
       }
     }
     \Return{rules}\;
@@ -72,16 +72,11 @@
 \makeatother

 \newcommand\similarityAlgo{
+
   \begingroup
   \removelatexerror
   \begin{figure}[ht]

-    \begin{function}[H]      \caption{Bigrams(string)}\label{bigramsAlgo}
-      \Return{\emph{set of pairs of adjacent characters in \emph{string}}}\;
-    \end{function}
-
-    \vspace{10pt}
-
     \begin{function}[H]
       \capstart
       \caption{Similarity(string1, string2)}\label{similarityAlgo}
@@ -89,13 +84,17 @@

       \emph{bigrams1 \Arrow} \Bigrams{string1}\;
       \emph{bigrams2 \Arrow} \Bigrams{string2}\;
-      \Return{\emph{2} \len{bigrams1 $\cap$ bigrams2} \emph{/} \Par{\len{bigrams1}\emph{+}\len{bigrams2}}}\;
+      \Return{\emph{2} \len{bigrams1 $\cap$ bigrams2} \emph{/} \Par{\len{bigrams1} \emph{+} \len{bigrams2}}}\;
+    \end{function}
+
+    \vspace{5pt}
+
+    \begin{function}[H]
+      \caption{Bigrams(string)}\label{bigramsAlgo}
+      \Return{\emph{set of pairs of adjacent characters in \emph{string}}}\;
     \end{function}
-
-  \vspace{-11px}
-
+
   \end{figure}
-
   \endgroup
 }

diff --git a/tex/data/runningtime.txt b/data/runningtime.txt
similarity index 100%
rename from tex/data/runningtime.txt
rename to data/runningtime.txt
diff --git a/tex/data/scores.txt b/data/scores.txt
similarity index 100%
rename from tex/data/scores.txt
rename to data/scores.txt
diff --git a/dataset/README.md b/dataset/README.md
deleted file mode 100644
index ef9bd55..0000000
--- a/dataset/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Our extraction evaluation is based on the [the ICWSM 2009 Spinn3r Dataset](http://www.icwsm.org/data/). This dataset is only available for research purposes, which mean that we can not include it in this repository.
-
-Starting from `dump.sql`:
-
-    "manually" merge lines starting with (INSERT INTO `api_data` VALUES) into api
-    sed -i "s/'),(1/'\n1/g" api
-    sed "s/\\\'/ESCAPEDDD/g" lapi > apiESCAPEDDD
-    python tofile.py
-    python toFilesTitles.py
-
-`dataset/titles/` and `dataset/contents/` contain an example of the expected output.
diff --git a/dataset/articles/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/dataset/articles/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index 4459853..0000000
--- a/dataset/articles/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1 +0,0 @@
-This is a tradition I don’t think I’ve mentioned on the blog before. It is — as far as I can tell — less important than michaelmas, but that’s not to say it’s unimportant. It’s basically the waldorf take on an old european tradition. The children usually make their own lanterns and then — on a dark afternoon or evening, usually on the 11th of November (three days after St Martin’s day of death, chew that anthroposophical chew-bone!) — walk in procession carrying their lanterns while singing. Anthroposophically speaking, what can be better than the pentagon-dodecahedron lantern with its neat pentagram stars? I urge you to look up the dodecahedron and the foundation stone (in the context of anthroposophy). And the importance of pentagrams in anthroposophy. However, I shall not delve into the spiritual symbolism and significance of the geometrical shapes of lanterns. You don’t actually need to have the dodecahedron, although it is interesting to note — given the anthroposophical meaning of them — the presence of dodecahedron lanterns. (They’re too advanced for kindergarten kids to make. So there are several types of lanterns. Round, cylindrical, even squares; sometimes coloured silk papers glued together very simply into globes…) Instead I want to share with you a recent article in German waldorf education magazine Erziehungskunst. It deals with this November celebration. I assure you, who don’t read German, that it is worth running this article through google translate! The author, Fabrizio Venturini, writes: So kann das einfache Kinderlied: »Ich geh mit meiner Laterne / und meine Laterne mit mir« – zum Lebensmotto werden: Man trägt das Ziel, dem man folgen will, selbstgesetzt vor sich her! Das Laternenlicht wird zum Bild für den inneren Leitstern. Es ist berührend, die jüngeren Kinder ihr »Licht-Ich« vor sich her tragen zu sehen: Man weiß zuweilen nicht, ob die Laterne vom Kind getragen oder ob dieses vom vorangehenden Licht gezogen wird. Ist es mit den Idealen im Leben nicht ebenso? I think that (the child being ‘pulled’ by the light rather than the child carrying the light) is a subtle reference to reinkarnation and karma. Das Laternenlicht-Ich symbolisiert das idealische Selbst des Menschen, das mit der Welt und dem Kosmos verbunden ist. Sonne, Mond und Sterne treten in der Laterne auf; sie auf »Sternenbahnen« zu tragen gleicht ihrem kosmischen Umlauf. Diese Sphärenharmonie sollte deshalb von Singen, nicht von Schwatzen begleitet sein. The ideal self is, supposedly, the reincarnating spirit. The eternal core, with its cosmic connections. The reference to a harmony of the spheres is pure anthro-speak, too. Which again sets Erziehungskunst apart — on the one hand, they fail to explain some things and remain anthroposophically obscure, on the other: at least they use the concepts, they mention the ideas. They don’t completely ignore that this element of anthroposophical spirituality is a vital part of waldorf education. And should be, if the education is to be called ‘waldorf’. Die Ich-Flamme in jedem Menschen ist in der geistig finster werdenden Welt gefährdet; die Mächte der Dunkelheit wollen sie auslöschen – deshalb muss sie geschützt werden, deshalb braucht sie eine Hülle. Aber diese Hülle darf das Leuchten des Ichs nicht zudecken, sie muss durchlässig, durchsichtig, transparent gemacht werden. Dafür muss die Seele geläutert werden.’ I don’t need to tell you how anthroposophical this is, do I? The struggle of the eternal human spirit in a dark world where sinister forces battle for domination. Ahriman, Lucifer, materialism, intellectualism, et cetera. Of course, waldorf education is there to protect children from such detrimental influences of this world during their incarnation process, that is, during the time when they grow up… Read more.
\ No newline at end of file
diff --git a/dataset/bloglist.py b/dataset/bloglist.py
deleted file mode 100644
index 2a3b5b4..0000000
--- a/dataset/bloglist.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from os import listdir
-from itertools import imap
-
-print "\n".join(set(imap(
-  lambda _: _.split("{")[2],
-  listdir("contents/"))))
diff --git a/dataset/bloglist.txt b/dataset/bloglist.txt
deleted file mode 100644
index b51310c..0000000
--- a/dataset/bloglist.txt
+++ /dev/null
@@ -1,240 +0,0 @@
-chrisdavis.wordpress.com
-chriswynters.wordpress.com
-grandprixinsider.wordpress.com
-creativeportraits.wordpress.com
-randomerror.wordpress.com
-rickwood.wordpress.com
-probulost.wordpress.com
-blin90.wordpress.com
-connieemeraldeyes.wordpress.com
-caixinhademusicas.blogspot.com
-thesamerowdycrowd.wordpress.com
-clancyjane.wordpress.com
-cambridgeforecast.wordpress.com
-tullycast.com
-broadwaydave.blogspot.com
-nearlynormalized.wordpress.com
-simple-trading-system.blogspot.com
-cafecrem.wordpress.com
-americanelephant.wordpress.com
-nocure.blogspot.com
-outovfocus.wordpress.com
-jmhans.wordpress.com
-codeshooter.wordpress.com
-ingridlavoie.wordpress.com
-colldevsnoisle.wordpress.com
-creatilfun.blogspot.com
-badforshidduchim.wordpress.com
-kcsp.wordpress.com
-loofapoofa.wordpress.com
-boskolives.wordpress.com
-intervaldrinks.blogspot.com
-stlouiscatholic.blogspot.com
-xapis.wordpress.com
-marianna68.wordpress.com
-carpdreams.wordpress.com
-bogsofohio.wordpress.com
-kraakfm.blogspot.com
-cade14.wordpress.com
-writegirlblog.wordpress.com
-audreysnetwork.wordpress.com
-pricklypearbloom.wordpress.com
-saramason.wordpress.com
-katesquilting.blogspot.com
-elvnprya.wordpress.com
-peterdoranlawn.wordpress.com
-zooey.wordpress.com
-parentsunderground.wordpress.com
-absurdistry.wordpress.com
-liberrydwarf.wordpress.com
-kathleenf.wordpress.com
-gregbashore.wordpress.com
-mumbainews.wordpress.com
-thefieldistheworld.wordpress.com
-torontonightclubs.wordpress.com
-writingcontests.wordpress.com
-threelilsisters.wordpress.com
-helenwashington.com
-am11.wordpress.com
-bwitch.wordpress.com
-larrycorreia.wordpress.com
-biomigviz.wordpress.com
-whatyouwrite.wordpress.com
-racheljonas.wordpress.com
-modernityblog.wordpress.com
-whatisthewhat.wordpress.com
-mattwisdom.wordpress.com
-the10101.wordpress.com
-theaterjblogs.wordpress.com
-wurdz.wordpress.com
-nareshbojja.wordpress.com
-hisvorpal.wordpress.com
-oldtothenew.wordpress.com
-papundits.wordpress.com
-yonodigonada.wordpress.com
-barramundi.wordpress.com
-imstartingover.wordpress.com
-eflorence.wordpress.com
-hedgeshappenings.wordpress.com
-jenniferelliott14.wordpress.com
-olvyouthministry.wordpress.com
-trash2treasure.wordpress.com
-sagworks.wordpress.com
-vlorbik.wordpress.com
-nwhog.wordpress.com
-derek4messiah.wordpress.com
-seamonster02.wordpress.com
-causeiwanna.wordpress.com
-viequeslaw.wordpress.com
-dkwatson.wordpress.com
-ymciprincipal.wordpress.com
-tutormentor.blogspot.com
-laurelbeard.wordpress.com
-artoutwest.blogspot.com
-dentonlibrary.wordpress.com
-magnoliablossom.wordpress.com
-kb4sp.wordpress.com
-askbusinesscoach.wordpress.com
-liadan.wordpress.com
-locock3.blogspot.com
-gmcmissing.wordpress.com
-katystuff.wordpress.com
-japanlost.blogspot.com
-fosters1537.wordpress.com
-chatwrite.wordpress.com
-theorchidroom.wordpress.com
-emergingfaith.wordpress.com
-frigginloon.wordpress.com
-joejolly.wordpress.com
-adamsmom24.wordpress.com
-bkbirch.wordpress.com
-apocalisp.wordpress.com
-huecri.wordpress.com
-bobotron.wordpress.com
-morveniona.wordpress.com
-cpltbb.wordpress.com
-boulderlibrary.wordpress.com
-lydiasee.wordpress.com
-heathermurphy04.wordpress.com
-dobee.wordpress.com
-iaoj.wordpress.com
-pastelsbeeman.blogspot.com
-jayfingers.wordpress.com
-missionalthoughts.wordpress.com
-andrewburke.wordpress.com
-christophergrant.org
-ckutnews.wordpress.com
-yiyunyu.wordpress.com
-katella.wordpress.com
-shivausa.wordpress.com
-kobak.wordpress.com
-businessspeak.wordpress.com
-milleytude.wordpress.com
-mikezenz.wordpress.com
-eastofmina.wordpress.com
-makingpeace.wordpress.com
-dirtgypsy.wordpress.com
-plushu.wordpress.com
-grumpylion.wordpress.com
-seeingredaz.wordpress.com
-vaultofevil.wordpress.com
-smile93.wordpress.com
-lexya.wordpress.com
-shelleymhouse.wordpress.com
-donjuan666.wordpress.com
-gnome.wordpress.com
-martinbrossmanmedia.wordpress.com
-russtucker.wordpress.com
-gunnyg.wordpress.com
-nellyandi.wordpress.com
-eclecticgirl.wordpress.com
-thornberry.wordpress.com
-tacet.wordpress.com
-ncowie.wordpress.com
-bigpapadaddy.wordpress.com
-sandlapperclassic.wordpress.com
-asdinteriors.wordpress.com
-mmm333.wordpress.com
-grault.wordpress.com
-seminarian.wordpress.com
-stockadventures.wordpress.com
-innermagicclub.wordpress.com
-chocolatechic.wordpress.com
-luinriel.wordpress.com
-erlabjorke.wordpress.com
-jcyrus.wordpress.com
-alliegee.wordpress.com
-booksr4reading.wordpress.com
-karenadria.wordpress.com
-gardendrama.wordpress.com
-valiant.wordpress.com
-deepthroated.wordpress.com
-fiberfollies.wordpress.com
-capdiamont.wordpress.com
-therockingfeelings.wordpress.com
-raymondpronk.wordpress.com
-melodycadenza.wordpress.com
-yonkersinsider.wordpress.com
-mnagel.wordpress.com
-madlofa.wordpress.com
-featheredfibers.wordpress.com
-133mhzrecords.wordpress.com
-neo1984.wordpress.com
-bigsteez.wordpress.com
-dervi05.wordpress.com
-mrbarlow.wordpress.com
-bethmillner.wordpress.com
-rachelyn.wordpress.com
-whatcomradio.wordpress.com
-cathytowle.wordpress.com
-historysurvey.wordpress.com
-haysvillelibrary.wordpress.com
-macndos.wordpress.com
-babymother.wordpress.com
-andbabybmakesthree.wordpress.com
-timmaundrell.wordpress.com
-workcomplaw.wordpress.com
-sjonesjrmd.wordpress.com
-bingoman.wordpress.com
-keeponknittinginthefreeworld.blogspot.com
-addhumorandfaith.wordpress.com
-willowcaroline.wordpress.com
-grizzleo.wordpress.com
-jaredjohnsonfam.wordpress.com
-fitartist.wordpress.com
-hermaf.wordpress.com
-smoothspan.wordpress.com
-dkzody.wordpress.com
-sakurasnow.wordpress.com
-johnparajuli.com
-cotterpinhouse.wordpress.com
-junemoon.wordpress.com
-kimandscotts.wordpress.com
-deohsan.wordpress.com
-mdid.wordpress.com
-jacklyn747.wordpress.com
-duncansdonuts.wordpress.com
-shawdevos.wordpress.com
-thinkingpractices.wordpress.com
-carabinieri.wordpress.com
-slcharlton.wordpress.com
-dandelionsalad.wordpress.com
-sciencebhakta.wordpress.com
-areleykingslabour.wordpress.com
-piusgsponer.wordpress.com
-tomandemma.wordpress.com
-wyreforestlabour.wordpress.com
-thevigilantlens.com
-markgorman.wordpress.com
-vbaines.wordpress.com
-chadhartigan.wordpress.com
-highlinelibrary.wordpress.com
-bsge7.wordpress.com
-fbckeiser.wordpress.com
-armyofcp.com
-albao.wordpress.com
-jillmalleck.wordpress.com
-myartfullife.wordpress.com
-chrisonscooter.wordpress.com
-thousandoaksrealestateblog.wordpress.com
-bbrathwaite.wordpress.com
diff --git a/dataset/titles/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/dataset/titles/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index 8a910a0..0000000
--- a/dataset/titles/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1 +0,0 @@
-lantern festival (st martins)
\ No newline at end of file
diff --git a/dataset/toFilesArticles.py b/dataset/toFilesArticles.py
deleted file mode 100644
index befd905..0000000
--- a/dataset/toFilesArticles.py
+++ /dev/null
@@ -1,337 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-import codecs
-def main():
-  with codecs.open("apiESCAPEDDD", "r", encoding="utf-8") as f:
-    for line in f:
-      result = re.search(
-        r"^\d*,'[^']*','[^']*','([^']*)','[^']*',\d*,'([^']*)'$"
-        , line)
-      if result:
-        content = fix_bad_unicode(result.groups()[0].replace("ESCAPEDDD", "'"))
-        url = result.groups()[1].replace("/", "{")
-        with codecs.open("articles/" + url, "w", encoding="utf-8") as out:
-          out.write(content)
-
-# Source: http://blog.luminoso.com/2012/08/20/fix-unicode-mistakes-with-python/
-import unicodedata
-
-def fix_bad_unicode(text):
-    u"""
-    Something you will find all over the place, in real-world text, is text
-    that's mistakenly encoded as utf-8, decoded in some ugly format like
-    latin-1 or even Windows codepage 1252, and encoded as utf-8 again.
-
-    This causes your perfectly good Unicode-aware code to end up with garbage
-    text because someone else (or maybe "someone else") made a mistake.
-
-    This function looks for the evidence of that having happened and fixes it.
-    It determines whether it should replace nonsense sequences of single-byte
-    characters that were really meant to be UTF-8 characters, and if so, turns
-    them into the correctly-encoded Unicode character that they were meant to
-    represent.
-
-    The input to the function must be Unicode. It's not going to try to
-    auto-decode bytes for you -- then it would just create the problems it's
-    supposed to fix.
-
-        >>> print fix_bad_unicode(u'Ãºnico')
-        único
-
-        >>> print fix_bad_unicode(u'This text is fine already :þ')
-        This text is fine already :þ
-
-    Because these characters often come from Microsoft products, we allow
-    for the possibility that we get not just Unicode characters 128-255, but
-    also Windows's conflicting idea of what characters 128-160 are.
-
-        >>> print fix_bad_unicode(u'This â€” should be an em dash')
-        This — should be an em dash
-
-    We might have to deal with both Windows characters and raw control
-    characters at the same time, especially when dealing with characters like
-    \x81 that have no mapping in Windows.
-
-        >>> print fix_bad_unicode(u'This text is sad .â\x81”.')
-        This text is sad .⁔.
-
-    This function even fixes multiple levels of badness:
-
-        >>> wtf = u'\xc3\xa0\xc2\xb2\xc2\xa0_\xc3\xa0\xc2\xb2\xc2\xa0'
-        >>> print fix_bad_unicode(wtf)
-        ಠ_ಠ
-
-    However, it has safeguards against fixing sequences of letters and
-    punctuation that can occur in valid text:
-
-        >>> print fix_bad_unicode(u'not such a fan of Charlotte Brontë…”')
-        not such a fan of Charlotte Brontë…”
-
-    Cases of genuine ambiguity can sometimes be addressed by finding other
-    characters that are not double-encoding, and expecting the encoding to
-    be consistent:
-
-        >>> print fix_bad_unicode(u'AHÅ™, the new sofa from IKEA®')
-        AHÅ™, the new sofa from IKEA®
-
-    Finally, we handle the case where the text is in a single-byte encoding
-    that was intended as Windows-1252 all along but read as Latin-1:
-
-        >>> print fix_bad_unicode(u'This text was never Unicode at all\x85')
-        This text was never Unicode at all…
-    """
-    # if not isinstance(text, unicode):
-    #     raise TypeError("This isn't even decoded into Unicode yet. "
-    #                     "Decode it first.")
-    if len(text) == 0:
-        return text
-
-    maxord = max(ord(char) for char in text)
-    tried_fixing = []
-    if maxord < 128:
-        # Hooray! It's ASCII!
-        return text
-    else:
-        attempts = [(text, text_badness(text) + len(text))]
-        if maxord < 256:
-            tried_fixing = reinterpret_latin1_as_utf8(text)
-            tried_fixing2 = reinterpret_latin1_as_windows1252(text)
-            attempts.append((tried_fixing, text_cost(tried_fixing)))
-            attempts.append((tried_fixing2, text_cost(tried_fixing2)))
-        elif all(ord(char) in WINDOWS_1252_CODEPOINTS for char in text):
-            tried_fixing = reinterpret_windows1252_as_utf8(text)
-            attempts.append((tried_fixing, text_cost(tried_fixing)))
-        else:
-            # We can't imagine how this would be anything but valid text.
-            return text
-
-        # Sort the results by badness
-        attempts.sort(key=lambda x: x[1])
-        #print attempts
-        goodtext = attempts[0][0]
-        if goodtext == text:
-            return goodtext
-        else:
-            return fix_bad_unicode(goodtext)
-
-def reinterpret_latin1_as_utf8(wrongtext):
-    newbytes = wrongtext.encode('latin-1', 'ignore')
-    return newbytes.decode('utf-8', 'ignore')
-
-def reinterpret_windows1252_as_utf8(wrongtext):
-    altered_bytes = []
-    for char in wrongtext:
-        if ord(char) in WINDOWS_1252_GREMLINS:
-            altered_bytes.append(char.encode('WINDOWS_1252'))
-        else:
-            altered_bytes.append(char.encode('latin-1', 'replace'))
-    return ''.join(altered_bytes).decode('utf-8', 'replace')
-
-def reinterpret_latin1_as_windows1252(wrongtext):
-    """
-    Maybe this was always meant to be in a single-byte encoding, and it
-    makes the most sense in Windows-1252.
-    """
-    return wrongtext.encode('latin-1').decode('WINDOWS_1252', 'replace')
-
-def text_badness(text):
-    u'''
-    Look for red flags that text is encoded incorrectly:
-
-    Obvious problems:
-    - The replacement character \ufffd, indicating a decoding error
-    - Unassigned or private-use Unicode characters
-
-    Very weird things:
-    - Adjacent letters from two different scripts
-    - Letters in scripts that are very rarely used on computers (and
-      therefore, someone who is using them will probably get Unicode right)
-    - Improbable control characters, such as 0x81
-
-    Moderately weird things:
-    - Improbable single-byte characters, such as ƒ or ¬
-    - Letters in somewhat rare scripts
-    '''
-    # assert isinstance(text, unicode)
-    errors = 0
-    very_weird_things = 0
-    weird_things = 0
-    prev_letter_script = None
-    for pos in xrange(len(text)):
-        char = text[pos]
-        index = ord(char)
-        if index < 256:
-            # Deal quickly with the first 256 characters.
-            weird_things += SINGLE_BYTE_WEIRDNESS[index]
-            if SINGLE_BYTE_LETTERS[index]:
-                prev_letter_script = 'latin'
-            else:
-                prev_letter_script = None
-        else:
-            category = unicodedata.category(char)
-            if category == 'Co':
-                # Unassigned or private use
-                errors += 1
-            elif index == 0xfffd:
-                # Replacement character
-                errors += 1
-            elif index in WINDOWS_1252_GREMLINS:
-                lowchar = char.encode('WINDOWS_1252').decode('latin-1')
-                weird_things += SINGLE_BYTE_WEIRDNESS[ord(lowchar)] - 0.5
-
-            if category.startswith('L'):
-                # It's a letter. What kind of letter? This is typically found
-                # in the first word of the letter's Unicode name.
-                name = unicodedata.name(char)
-                scriptname = name.split()[0]
-                freq, script = SCRIPT_TABLE.get(scriptname, (0, 'other'))
-                if prev_letter_script:
-                    if script != prev_letter_script:
-                        very_weird_things += 1
-                    if freq == 1:
-                        weird_things += 2
-                    elif freq == 0:
-                        very_weird_things += 1
-                prev_letter_script = script
-            else:
-                prev_letter_script = None
-
-    return 100 * errors + 10 * very_weird_things + weird_things
-
-def text_cost(text):
-    """
-    Assign a cost function to the length plus weirdness of a text string.
-    """
-    return text_badness(text) + len(text)
-
-#######################################################################
-# The rest of this file is esoteric info about characters, scripts, and their
-# frequencies.
-#
-# Start with an inventory of "gremlins", which are characters from all over
-# Unicode that Windows has instead assigned to the control characters
-# 0x80-0x9F. We might encounter them in their Unicode forms and have to figure
-# out what they were originally.
-
-WINDOWS_1252_GREMLINS = [
-    # adapted from http://effbot.org/zone/unicode-gremlins.htm
-    0x0152,  # LATIN CAPITAL LIGATURE OE
-    0x0153,  # LATIN SMALL LIGATURE OE
-    0x0160,  # LATIN CAPITAL LETTER S WITH CARON
-    0x0161,  # LATIN SMALL LETTER S WITH CARON
-    0x0178,  # LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017E,  # LATIN SMALL LETTER Z WITH CARON
-    0x017D,  # LATIN CAPITAL LETTER Z WITH CARON
-    0x0192,  # LATIN SMALL LETTER F WITH HOOK
-    0x02C6,  # MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC,  # SMALL TILDE
-    0x2013,  # EN DASH
-    0x2014,  # EM DASH
-    0x201A,  # SINGLE LOW-9 QUOTATION MARK
-    0x201C,  # LEFT DOUBLE QUOTATION MARK
-    0x201D,  # RIGHT DOUBLE QUOTATION MARK
-    0x201E,  # DOUBLE LOW-9 QUOTATION MARK
-    0x2018,  # LEFT SINGLE QUOTATION MARK
-    0x2019,  # RIGHT SINGLE QUOTATION MARK
-    0x2020,  # DAGGER
-    0x2021,  # DOUBLE DAGGER
-    0x2022,  # BULLET
-    0x2026,  # HORIZONTAL ELLIPSIS
-    0x2030,  # PER MILLE SIGN
-    0x2039,  # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A,  # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC,  # EURO SIGN
-    0x2122,  # TRADE MARK SIGN
-]
-
-# a list of Unicode characters that might appear in Windows-1252 text
-WINDOWS_1252_CODEPOINTS = range(256) + WINDOWS_1252_GREMLINS
-
-# Rank the characters typically represented by a single byte -- that is, in
-# Latin-1 or Windows-1252 -- by how weird it would be to see them in running
-# text.
-#
-#   0 = not weird at all
-#   1 = rare punctuation or rare letter that someone could certainly
-#       have a good reason to use. All Windows-1252 gremlins are at least
-#       weirdness 1.
-#   2 = things that probably don't appear next to letters or other
-#       symbols, such as math or currency symbols
-#   3 = obscure symbols that nobody would go out of their way to use
-#       (includes symbols that were replaced in ISO-8859-15)
-#   4 = why would you use this?
-#   5 = unprintable control character
-#
-# The Portuguese letter Ã (0xc3) is marked as weird because it would usually
-# appear in the middle of a word in actual Portuguese, and meanwhile it
-# appears in the mis-encodings of many common characters.
-
-SINGLE_BYTE_WEIRDNESS = (
-#   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5,  # 0x00
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  # 0x10
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x20
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x30
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x40
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x50
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x60
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,  # 0x70
-    2, 5, 1, 4, 1, 1, 3, 3, 4, 3, 1, 1, 1, 5, 1, 5,  # 0x80
-    5, 1, 1, 1, 1, 3, 1, 1, 4, 1, 1, 1, 1, 5, 1, 1,  # 0x90
-    1, 0, 2, 2, 3, 2, 4, 2, 4, 2, 2, 0, 3, 1, 1, 4,  # 0xa0
-    2, 2, 3, 3, 4, 3, 3, 2, 4, 4, 4, 0, 3, 3, 3, 0,  # 0xb0
-    0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xc0
-    1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xd0
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xe0
-    1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xf0
-)
-
-# Pre-cache the Unicode data saying which of these first 256 characters are
-# letters. We'll need it often.
-SINGLE_BYTE_LETTERS = [
-    unicodedata.category(unichr(i)).startswith('L')
-    for i in xrange(256)
-]
-
-# A table telling us how to interpret the first word of a letter's Unicode
-# name. The number indicates how frequently we expect this script to be used
-# on computers. Many scripts not included here are assumed to have a frequency
-# of "0" -- if you're going to write in Linear B using Unicode, you're
-# probably aware enough of encoding issues to get it right.
-#
-# The lowercase name is a general category -- for example, Han characters and
-# Hiragana characters are very frequently adjacent in Japanese, so they all go
-# into category 'cjk'. Letters of different categories are assumed not to
-# appear next to each other often.
-SCRIPT_TABLE = {
-    'LATIN': (3, 'latin'),
-    'CJK': (2, 'cjk'),
-    'ARABIC': (2, 'arabic'),
-    'CYRILLIC': (2, 'cyrillic'),
-    'GREEK': (2, 'greek'),
-    'HEBREW': (2, 'hebrew'),
-    'KATAKANA': (2, 'cjk'),
-    'HIRAGANA': (2, 'cjk'),
-    'HIRAGANA-KATAKANA': (2, 'cjk'),
-    'HANGUL': (2, 'cjk'),
-    'DEVANAGARI': (2, 'devanagari'),
-    'THAI': (2, 'thai'),
-    'FULLWIDTH': (2, 'cjk'),
-    'MODIFIER': (2, None),
-    'HALFWIDTH': (1, 'cjk'),
-    'BENGALI': (1, 'bengali'),
-    'LAO': (1, 'lao'),
-    'KHMER': (1, 'khmer'),
-    'TELUGU': (1, 'telugu'),
-    'MALAYALAM': (1, 'malayalam'),
-    'SINHALA': (1, 'sinhala'),
-    'TAMIL': (1, 'tamil'),
-    'GEORGIAN': (1, 'georgian'),
-    'ARMENIAN': (1, 'armenian'),
-    'KANNADA': (1, 'kannada'),  # mostly used for looks of disapproval
-    'MASCULINE': (1, 'latin'),
-    'FEMININE': (1, 'latin')
-}
-
-main()
diff --git a/dataset/toFilesTitles.py b/dataset/toFilesTitles.py
deleted file mode 100644
index af459f5..0000000
--- a/dataset/toFilesTitles.py
+++ /dev/null
@@ -1,337 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-import codecs
-def main():
-  with codecs.open("apiESCAPEDDD", "r", encoding="utf-8") as f:
-    for line in f:
-      result = re.search(
-        r"^\d*,'([^']*)','[^']*','[^']*','[^']*',\d*,'([^']*)'$"
-        , line)
-      if result:
-        content = fix_bad_unicode(result.groups()[0].replace("ESCAPEDDD", "'"))
-        url = result.groups()[1].replace("/", "{")
-        with codecs.open("titles/" + url, "w", encoding="utf-8") as out:
-          out.write(content)
-
-# Source: http://blog.luminoso.com/2012/08/20/fix-unicode-mistakes-with-python/
-import unicodedata
-
-def fix_bad_unicode(text):
-    u"""
-    Something you will find all over the place, in real-world text, is text
-    that's mistakenly encoded as utf-8, decoded in some ugly format like
-    latin-1 or even Windows codepage 1252, and encoded as utf-8 again.
-
-    This causes your perfectly good Unicode-aware code to end up with garbage
-    text because someone else (or maybe "someone else") made a mistake.
-
-    This function looks for the evidence of that having happened and fixes it.
-    It determines whether it should replace nonsense sequences of single-byte
-    characters that were really meant to be UTF-8 characters, and if so, turns
-    them into the correctly-encoded Unicode character that they were meant to
-    represent.
-
-    The input to the function must be Unicode. It's not going to try to
-    auto-decode bytes for you -- then it would just create the problems it's
-    supposed to fix.
-
-        >>> print fix_bad_unicode(u'Ãºnico')
-        único
-
-        >>> print fix_bad_unicode(u'This text is fine already :þ')
-        This text is fine already :þ
-
-    Because these characters often come from Microsoft products, we allow
-    for the possibility that we get not just Unicode characters 128-255, but
-    also Windows's conflicting idea of what characters 128-160 are.
-
-        >>> print fix_bad_unicode(u'This â€” should be an em dash')
-        This — should be an em dash
-
-    We might have to deal with both Windows characters and raw control
-    characters at the same time, especially when dealing with characters like
-    \x81 that have no mapping in Windows.
-
-        >>> print fix_bad_unicode(u'This text is sad .â\x81”.')
-        This text is sad .⁔.
-
-    This function even fixes multiple levels of badness:
-
-        >>> wtf = u'\xc3\xa0\xc2\xb2\xc2\xa0_\xc3\xa0\xc2\xb2\xc2\xa0'
-        >>> print fix_bad_unicode(wtf)
-        ಠ_ಠ
-
-    However, it has safeguards against fixing sequences of letters and
-    punctuation that can occur in valid text:
-
-        >>> print fix_bad_unicode(u'not such a fan of Charlotte Brontë…”')
-        not such a fan of Charlotte Brontë…”
-
-    Cases of genuine ambiguity can sometimes be addressed by finding other
-    characters that are not double-encoding, and expecting the encoding to
-    be consistent:
-
-        >>> print fix_bad_unicode(u'AHÅ™, the new sofa from IKEA®')
-        AHÅ™, the new sofa from IKEA®
-
-    Finally, we handle the case where the text is in a single-byte encoding
-    that was intended as Windows-1252 all along but read as Latin-1:
-
-        >>> print fix_bad_unicode(u'This text was never Unicode at all\x85')
-        This text was never Unicode at all…
-    """
-    # if not isinstance(text, unicode):
-    #     raise TypeError("This isn't even decoded into Unicode yet. "
-    #                     "Decode it first.")
-    if len(text) == 0:
-        return text
-
-    maxord = max(ord(char) for char in text)
-    tried_fixing = []
-    if maxord < 128:
-        # Hooray! It's ASCII!
-        return text
-    else:
-        attempts = [(text, text_badness(text) + len(text))]
-        if maxord < 256:
-            tried_fixing = reinterpret_latin1_as_utf8(text)
-            tried_fixing2 = reinterpret_latin1_as_windows1252(text)
-            attempts.append((tried_fixing, text_cost(tried_fixing)))
-            attempts.append((tried_fixing2, text_cost(tried_fixing2)))
-        elif all(ord(char) in WINDOWS_1252_CODEPOINTS for char in text):
-            tried_fixing = reinterpret_windows1252_as_utf8(text)
-            attempts.append((tried_fixing, text_cost(tried_fixing)))
-        else:
-            # We can't imagine how this would be anything but valid text.
-            return text
-
-        # Sort the results by badness
-        attempts.sort(key=lambda x: x[1])
-        #print attempts
-        goodtext = attempts[0][0]
-        if goodtext == text:
-            return goodtext
-        else:
-            return fix_bad_unicode(goodtext)
-
-def reinterpret_latin1_as_utf8(wrongtext):
-    newbytes = wrongtext.encode('latin-1', 'ignore')
-    return newbytes.decode('utf-8', 'ignore')
-
-def reinterpret_windows1252_as_utf8(wrongtext):
-    altered_bytes = []
-    for char in wrongtext:
-        if ord(char) in WINDOWS_1252_GREMLINS:
-            altered_bytes.append(char.encode('WINDOWS_1252'))
-        else:
-            altered_bytes.append(char.encode('latin-1', 'replace'))
-    return ''.join(altered_bytes).decode('utf-8', 'replace')
-
-def reinterpret_latin1_as_windows1252(wrongtext):
-    """
-    Maybe this was always meant to be in a single-byte encoding, and it
-    makes the most sense in Windows-1252.
-    """
-    return wrongtext.encode('latin-1').decode('WINDOWS_1252', 'replace')
-
-def text_badness(text):
-    u'''
-    Look for red flags that text is encoded incorrectly:
-
-    Obvious problems:
-    - The replacement character \ufffd, indicating a decoding error
-    - Unassigned or private-use Unicode characters
-
-    Very weird things:
-    - Adjacent letters from two different scripts
-    - Letters in scripts that are very rarely used on computers (and
-      therefore, someone who is using them will probably get Unicode right)
-    - Improbable control characters, such as 0x81
-
-    Moderately weird things:
-    - Improbable single-byte characters, such as ƒ or ¬
-    - Letters in somewhat rare scripts
-    '''
-    # assert isinstance(text, unicode)
-    errors = 0
-    very_weird_things = 0
-    weird_things = 0
-    prev_letter_script = None
-    for pos in xrange(len(text)):
-        char = text[pos]
-        index = ord(char)
-        if index < 256:
-            # Deal quickly with the first 256 characters.
-            weird_things += SINGLE_BYTE_WEIRDNESS[index]
-            if SINGLE_BYTE_LETTERS[index]:
-                prev_letter_script = 'latin'
-            else:
-                prev_letter_script = None
-        else:
-            category = unicodedata.category(char)
-            if category == 'Co':
-                # Unassigned or private use
-                errors += 1
-            elif index == 0xfffd:
-                # Replacement character
-                errors += 1
-            elif index in WINDOWS_1252_GREMLINS:
-                lowchar = char.encode('WINDOWS_1252').decode('latin-1')
-                weird_things += SINGLE_BYTE_WEIRDNESS[ord(lowchar)] - 0.5
-
-            if category.startswith('L'):
-                # It's a letter. What kind of letter? This is typically found
-                # in the first word of the letter's Unicode name.
-                name = unicodedata.name(char)
-                scriptname = name.split()[0]
-                freq, script = SCRIPT_TABLE.get(scriptname, (0, 'other'))
-                if prev_letter_script:
-                    if script != prev_letter_script:
-                        very_weird_things += 1
-                    if freq == 1:
-                        weird_things += 2
-                    elif freq == 0:
-                        very_weird_things += 1
-                prev_letter_script = script
-            else:
-                prev_letter_script = None
-
-    return 100 * errors + 10 * very_weird_things + weird_things
-
-def text_cost(text):
-    """
-    Assign a cost function to the length plus weirdness of a text string.
-    """
-    return text_badness(text) + len(text)
-
-#######################################################################
-# The rest of this file is esoteric info about characters, scripts, and their
-# frequencies.
-#
-# Start with an inventory of "gremlins", which are characters from all over
-# Unicode that Windows has instead assigned to the control characters
-# 0x80-0x9F. We might encounter them in their Unicode forms and have to figure
-# out what they were originally.
-
-WINDOWS_1252_GREMLINS = [
-    # adapted from http://effbot.org/zone/unicode-gremlins.htm
-    0x0152,  # LATIN CAPITAL LIGATURE OE
-    0x0153,  # LATIN SMALL LIGATURE OE
-    0x0160,  # LATIN CAPITAL LETTER S WITH CARON
-    0x0161,  # LATIN SMALL LETTER S WITH CARON
-    0x0178,  # LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017E,  # LATIN SMALL LETTER Z WITH CARON
-    0x017D,  # LATIN CAPITAL LETTER Z WITH CARON
-    0x0192,  # LATIN SMALL LETTER F WITH HOOK
-    0x02C6,  # MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC,  # SMALL TILDE
-    0x2013,  # EN DASH
-    0x2014,  # EM DASH
-    0x201A,  # SINGLE LOW-9 QUOTATION MARK
-    0x201C,  # LEFT DOUBLE QUOTATION MARK
-    0x201D,  # RIGHT DOUBLE QUOTATION MARK
-    0x201E,  # DOUBLE LOW-9 QUOTATION MARK
-    0x2018,  # LEFT SINGLE QUOTATION MARK
-    0x2019,  # RIGHT SINGLE QUOTATION MARK
-    0x2020,  # DAGGER
-    0x2021,  # DOUBLE DAGGER
-    0x2022,  # BULLET
-    0x2026,  # HORIZONTAL ELLIPSIS
-    0x2030,  # PER MILLE SIGN
-    0x2039,  # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A,  # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC,  # EURO SIGN
-    0x2122,  # TRADE MARK SIGN
-]
-
-# a list of Unicode characters that might appear in Windows-1252 text
-WINDOWS_1252_CODEPOINTS = range(256) + WINDOWS_1252_GREMLINS
-
-# Rank the characters typically represented by a single byte -- that is, in
-# Latin-1 or Windows-1252 -- by how weird it would be to see them in running
-# text.
-#
-#   0 = not weird at all
-#   1 = rare punctuation or rare letter that someone could certainly
-#       have a good reason to use. All Windows-1252 gremlins are at least
-#       weirdness 1.
-#   2 = things that probably don't appear next to letters or other
-#       symbols, such as math or currency symbols
-#   3 = obscure symbols that nobody would go out of their way to use
-#       (includes symbols that were replaced in ISO-8859-15)
-#   4 = why would you use this?
-#   5 = unprintable control character
-#
-# The Portuguese letter Ã (0xc3) is marked as weird because it would usually
-# appear in the middle of a word in actual Portuguese, and meanwhile it
-# appears in the mis-encodings of many common characters.
-
-SINGLE_BYTE_WEIRDNESS = (
-#   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5,  # 0x00
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  # 0x10
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x20
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x30
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x40
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x50
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x60
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,  # 0x70
-    2, 5, 1, 4, 1, 1, 3, 3, 4, 3, 1, 1, 1, 5, 1, 5,  # 0x80
-    5, 1, 1, 1, 1, 3, 1, 1, 4, 1, 1, 1, 1, 5, 1, 1,  # 0x90
-    1, 0, 2, 2, 3, 2, 4, 2, 4, 2, 2, 0, 3, 1, 1, 4,  # 0xa0
-    2, 2, 3, 3, 4, 3, 3, 2, 4, 4, 4, 0, 3, 3, 3, 0,  # 0xb0
-    0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xc0
-    1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xd0
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xe0
-    1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xf0
-)
-
-# Pre-cache the Unicode data saying which of these first 256 characters are
-# letters. We'll need it often.
-SINGLE_BYTE_LETTERS = [
-    unicodedata.category(unichr(i)).startswith('L')
-    for i in xrange(256)
-]
-
-# A table telling us how to interpret the first word of a letter's Unicode
-# name. The number indicates how frequently we expect this script to be used
-# on computers. Many scripts not included here are assumed to have a frequency
-# of "0" -- if you're going to write in Linear B using Unicode, you're
-# probably aware enough of encoding issues to get it right.
-#
-# The lowercase name is a general category -- for example, Han characters and
-# Hiragana characters are very frequently adjacent in Japanese, so they all go
-# into category 'cjk'. Letters of different categories are assumed not to
-# appear next to each other often.
-SCRIPT_TABLE = {
-    'LATIN': (3, 'latin'),
-    'CJK': (2, 'cjk'),
-    'ARABIC': (2, 'arabic'),
-    'CYRILLIC': (2, 'cyrillic'),
-    'GREEK': (2, 'greek'),
-    'HEBREW': (2, 'hebrew'),
-    'KATAKANA': (2, 'cjk'),
-    'HIRAGANA': (2, 'cjk'),
-    'HIRAGANA-KATAKANA': (2, 'cjk'),
-    'HANGUL': (2, 'cjk'),
-    'DEVANAGARI': (2, 'devanagari'),
-    'THAI': (2, 'thai'),
-    'FULLWIDTH': (2, 'cjk'),
-    'MODIFIER': (2, None),
-    'HALFWIDTH': (1, 'cjk'),
-    'BENGALI': (1, 'bengali'),
-    'LAO': (1, 'lao'),
-    'KHMER': (1, 'khmer'),
-    'TELUGU': (1, 'telugu'),
-    'MALAYALAM': (1, 'malayalam'),
-    'SINHALA': (1, 'sinhala'),
-    'TAMIL': (1, 'tamil'),
-    'GEORGIAN': (1, 'georgian'),
-    'ARMENIAN': (1, 'armenian'),
-    'KANNADA': (1, 'kannada'),  # mostly used for looks of disapproval
-    'MASCULINE': (1, 'latin'),
-    'FEMININE': (1, 'latin')
-}
-
-main()
diff --git a/ijait-texnixcenter-project (ubiq's conflicted copy 2014-09-30).tps b/ijait-texnixcenter-project (ubiq's conflicted copy 2014-09-30).tps
new file mode 100644
index 0000000..d89b8c1
--- /dev/null
+++ b/ijait-texnixcenter-project (ubiq's conflicted copy 2014-09-30).tps
@@ -0,0 +1,26 @@
+[FormatInfo]
+Type=TeXnicCenterProjectSessionInformation
+Version=2
+
+[Frame0]
+Flags=0
+ShowCmd=1
+MinPos.x=-1
+MinPos.y=-1
+MaxPos.x=-1
+MaxPos.y=-1
+NormalPos.left=4
+NormalPos.top=26
+NormalPos.right=999
+NormalPos.bottom=1501
+Class=LaTeXView
+Document=main.tex
+
+[Frame0_View0,0]
+TopLine=0
+Cursor=0
+
+[SessionInfo]
+FrameCount=1
+ActiveFrame=0
+
diff --git a/ijait-texnixcenter-project.tcp b/ijait-texnixcenter-project.tcp
new file mode 100644
index 0000000..af1a5a7
--- /dev/null
+++ b/ijait-texnixcenter-project.tcp
@@ -0,0 +1,12 @@
+[FormatInfo]
+Type=TeXnicCenterProjectInformation
+Version=4
+
+[ProjectInfo]
+MainFile=main.tex
+UseBibTeX=1
+UseMakeIndex=0
+ActiveProfile=LaTeX ⇨ DVI ⇨ PDF
+ProjectLanguage=en
+ProjectDialect=US
+
diff --git a/ijait-texnixcenter-project.tps b/ijait-texnixcenter-project.tps
new file mode 100644
index 0000000..eee3b64
--- /dev/null
+++ b/ijait-texnixcenter-project.tps
@@ -0,0 +1,44 @@
+[FormatInfo]
+Type=TeXnicCenterProjectSessionInformation
+Version=2
+
+[Frame0]
+Flags=0
+ShowCmd=1
+MinPos.x=-1
+MinPos.y=-1
+MaxPos.x=-1
+MaxPos.y=-1
+NormalPos.left=4
+NormalPos.top=26
+NormalPos.right=999
+NormalPos.bottom=1501
+Class=LaTeXView
+Document=3-algorithms.tex
+
+[Frame0_View0,0]
+TopLine=226
+Cursor=13717
+
+[Frame1]
+Flags=0
+ShowCmd=1
+MinPos.x=-1
+MinPos.y=-1
+MaxPos.x=-1
+MaxPos.y=-1
+NormalPos.left=4
+NormalPos.top=26
+NormalPos.right=999
+NormalPos.bottom=1501
+Class=LaTeXView
+Document=main.tex
+
+[Frame1_View0,0]
+TopLine=18
+Cursor=1999
+
+[SessionInfo]
+FrameCount=2
+ActiveFrame=0
+
diff --git a/tex/img/scrapy_architecture.eps b/img/scrapy_architecture.eps
similarity index 100%
rename from tex/img/scrapy_architecture.eps
rename to img/scrapy_architecture.eps
diff --git a/tex/img/scrapy_architecture.png b/img/scrapy_architecture.png
similarity index 100%
rename from tex/img/scrapy_architecture.png
rename to img/scrapy_architecture.png
diff --git a/main.bib b/main.bib
new file mode 100644
index 0000000..3453cb9
--- /dev/null
+++ b/main.bib
@@ -0,0 +1,434 @@
+
+@misc{disqus2014,
+	url = {http://disqus.com/websites/},
+	author = {Disqus},
+	year = {2014},
+	howpublished = {http://disqus.com/websites/}
+},
+
+@techreport{najork2001,
+	title = {High-performance web crawling},
+	abstract = {{SRC{\textquoteright}s} charter is to advance the state of the art in computer systems by doing basic and applied research in support of our company{\textquoteright}s business objectives. Our interests and projects span scalable systems (including hardware, networking, distributed systems, and programming-language technology), the Internet (including the Web, e-commerce, and information retrieval), and human/computer interaction (including user-interface technology, computer-based appliances, and mobile computing). {SRC} was established in 1984 by Digital Equipment Corporation. We test the value of our ideas by building hardware and software prototypes and assessing their utility in realistic settings. Interesting systems are too complex to be evaluated solely in the abstract; practical use enables us to investigate their properties in depth. This experience is useful in the short term in refining our designs and invaluable in the long term in advancing our knowledge. Most of the major advances in information systems have come through this approach, including personal computing, distributed systems, and the Internet. We also perform complementary work of a more mathematical character. Some of},
+	institution = {{SRC} Research Report 173, Compaq Systems Research},
+	author = {Najork, Marc and Heydon, Allan and Najork, Marc and Heydon, Allan},
+	year = {2001}
+},
+
+@inproceedings{gkotsis2013,
+  address = {Berlin, Heidelberg},
+  author = {Gkotsis, George and Stepanyan, Karen and Cristea, Alexandra I. and Joy, Mike},
+  booktitle = {Proceedings of the 29th British National Conference on Big Data},
+  pages = {292--302},
+  series = {BNCOD'13},
+  title = {Self-supervised Automated Wrapper Generation for Weblog Data Extraction},
+  year = {2013},
+  doi = {10.1007/978-3-642-39467-6_26},
+  isbn = {978-3-642-39466-9},
+},
+
+@article{heydon99mercator,
+ author = {Heydon, Allan and Najork, Marc},
+ title = {Mercator: A Scalable, Extensible Web Crawler},
+ journal = {World Wide Web},
+ volume = {2},
+ number = {4},
+ year = {1999},
+ issn = {1386-145X},
+ pages = {219--229},
+ numpages = {11},
+ url = {http://dx.doi.org/10.1023/A:1019213109274},
+ doi = {10.1023/A:1019213109274},
+ acmid = {598733},
+ publisher = {Kluwer Academic Publishers},
+ address = {Hingham, MA, USA},
+},
+
+@inproceedings{muslea1999,
+	address = {New York, {NY}, {USA}},
+	series = {{AGENTS} '99},
+	title = {A hierarchical approach to wrapper induction},
+	isbn = {{1-58113-066-X}},
+	url = {http://doi.acm.org/10.1145/301136.301191},
+	doi = {10.1145/301136.301191},
+	booktitle = {Proceedings of the third annual conference on Autonomous Agents},
+	publisher = {{ACM}},
+	author = {Muslea, Ion and Minton, Steve and Knoblock, Craig},
+	year = {1999},
+	pages = {190{\textendash}197}
+},
+
+@misc{anderson2012,
+	type = {webpage},
+	title = {A Tale of a Disappearing Website {\textbar} The Signal: Digital Preservation},
+	shorttitle = {A Tale of a Disappearing Website {\textbar} The Signal},
+	url = {http://blogs.loc.gov/digitalpreservation/2012/01/a-tale-of-a-disappearing-website/},
+	abstract = {A Tale of a Disappearing Website. A blog post at {"The} Signal: Digital Preservation" on 2012-01-17.},
+	author = {Anderson, Martha},
+	year = {2012},
+	keywords = {Blogs, Digital Content, National Digital Information Infrastructure and Preservation Program, {NDIIPP}, Personal Archiving},
+	howpublished = {http://blogs.loc.gov/digitalpreservation/2012/01/a-tale-of-a-disappearing-website/}
+},
+
+@article{furche2013,
+	title = {{OXPath:} A language for scalable data extraction, automation, and crawling on the deep web},
+	volume = {22},
+	issn = {1066-8888},
+	shorttitle = {{OXPath}},
+	url = {http://dx.doi.org/10.1007/s00778-012-0286-6},
+	doi = {10.1007/s00778-012-0286-6},
+	abstract = {The evolution of the web has outpaced itself: A growing wealth of information and increasingly sophisticated interfaces necessitate automated processing, yet existing automation and data extraction technologies have been overwhelmed by this very growth. To address this trend, we identify four key requirements for web data extraction, automation, and (focused) web crawling: (1) interact with sophisticated web application interfaces, (2) precisely capture the relevant data to be extracted, (3) scale with the number of visited pages, and (4) readily embed into existing web technologies. We introduce {OXPath} as an extension of {XPath} for interacting with web applications and extracting data thus revealed--matching all the above requirements. {OXPath's} page-at-a-time evaluation guarantees memory use independent of the number of visited pages, yet remains polynomial in time. We experimentally validate the theoretical complexity and demonstrate that {OXPath's} resource consumption is dominated by page rendering in the underlying browser. With an extensive study of sublanguages and properties of {OXPath}, we pinpoint the effect of specific features on evaluation performance. Our experiments show that {OXPath} outperforms existing commercial and academic data extraction tools by a wide margin.},
+	number = {1},
+	journal = {The {VLDB} Journal},
+	author = {Furche, Tim and Gottlob, Georg and Grasso, Giovanni and Schallhart, Christian and Sellers, Andrew},
+	month = feb,
+	year = {2013},
+	keywords = {{AJAX}, Automation, Crawling, Data extraction, {DOM}, Web applications, Web extraction, {XPath}},
+	pages = {47{\textendash}72}
+},
+
+@article{dudani1976,
+	title = {The {Distance-Weighted} {k-Nearest-Neighbor} Rule},
+	volume = {{SMC-6}},
+	issn = {0018-9472},
+	doi = {10.1109/TSMC.1976.5408784},
+	abstract = {Among the simplest and most intuitively appealing classes of nonprobabilistic classification procedures are those that weight the evidence of nearby sample observations most heavily. More specifically, one might wish to weight the evidence of a neighbor close to an unclassified observation more heavily than the evidence of another neighbor which is at a greater distance from the unclassified observation. One such classification rule is described which makes use of a neighbor weighting function for the purpose of assigning a class to an unclassified sample. The admissibility of such a rule is also considered.},
+	number = {4},
+	journal = {{IEEE} Transactions on Systems, Man and Cybernetics},
+	author = {Dudani, Sahibsingh A.},
+	year = {1976},
+	pages = {325--327}
+},
+
+@misc{goose2012,
+	url = {https://github.com/GravityLabs/goose},
+	abstract = {goose - Html Content / Article Extractor in Scala - open sourced from Gravity Labs - http://gravity.com},
+	journal = {{GitHub}},
+	author = {Goose},
+	year = {2012},
+	howpublished = {{https://github.com/GravityLabs/goose}}
+},
+
+@inproceedings{lixto,
+  author = {Georg Gottlob and Christoph Koch and Robert Baumgartner and Marcus Herzog and Sergio Flesca},
+  booktitle = {Proceedings of the Twenty-third Symposium on Principles of Database Systems},
+  pages = {1--12},
+  title = {The Lixto Data Extraction Project: Back and Forth Between Theory and Practice},
+  year = {2004},
+  doi = {10.1145/1055558.1055560},
+  isbn = {158113858X},
+},
+
+@book{kleinberg2006,
+	address = {Boston},
+	title = {Algorithm design},
+	isbn = {0321295358  9780321295354},
+	abstract = {{"Algorithm} Design takes a fresh approach to the algorithms course, introducing algorithmic ideas through the real-world problems that motivate them. In a clear, direct style, Jon Kleinberg and Eva Tardos teach students to analyze and define problems for themselves, and from this to recognize which design principles are appropriate for a given situation. The text encourages a greater understanding of the algorithm design process and an appreciation of the role of algorithms in the broader field of computer {science."--BOOK} {JACKET.}},
+	publisher = {{Pearson/Addison-Wesley}},
+	author = {Kleinberg, Jon and Tardos, \'{E}va},
+	year = {2006}
+},
+
+@misc{garg2012,
+	title = {String Matching Algorithms and their Applicability in various Applications},
+	url = {http://www.academia.edu/1975650/String_Matching_Algorithms_and_their_Applicability_in_various_Applications},
+	abstract = {In this paper the applicability of the various strings matching algorithms are being described. Which algorithm is best in which application and why. This describes the optimal algorithm for various activities that include string matching as an},
+	author = {Garg, Deepak},
+	year = {2012},
+	keywords = {academia, academics, Biology, Chemistry, Computer Science, Earth Sciences, Economics, English, Geography, History, Law, Math, Medicine, Philosophy, Physics, Political Science, Psychology, Religion, research, universities},
+	howpublished = {{http://www.academia.edu/1975650/String\_Matching\_Algorithms\_and\_their\_Applicability\_in\_various\_Applications}}
+},
+
+@inproceedings{oita2010,
+	title = {Archiving Data Objects using Web Feeds},
+	url = {http://hal.inria.fr/inria-00537962},
+	abstract = {Web feeds, either in {RSS} or Atom {XML-based} formats, are evolving descriptive documents that characterize a dynamic hub of a Web site and help subscribers keep up with what is the most recent Web content of interest. In this paper, we show how Web feeds can be useful instruments for information extraction and Web page change detection. Web pages referenced by feed items are usually blog posts or news articles, data with a dynamic (then ephemeral) nature and which is clustered topically in a feed channel. We monitor Web channels and extract from the associated Web pages the text and references corresponding to Web articles. The result is enriched with the timestamp and additional metadata mined from the feed, and encapsulated in a 'data object'. The data object will be in particular information devoided of all the template elements or advertisements. These irrelevant elements, generically called boileplate, are not only consuming time and space from the crawler's point of view, but also hinder the data analysis process. We first make some statistics on a set of Web feeds, by crawling them for a period of time and observing their temporal aspects. Then we present the algorithm used for article extraction, algorithm that uses the feed semantics (more specifically the description and title of feed items) in order to identify the {DOM} node in the {HTML} page that contains the article. The data objects constructed in this way can be used as a semantic overlay collection for an archive or in the context of an incremental crawl, making it more efficient by detecting change at data object level. Experiments on the extraction technique are done in order to validate our approach, with good results even in cases when other techniques fail. We finally discuss useful applications based on the extraction and change detection of Web objects.},
+	author = {Oita, Marilena and Senellart, Pierre},
+	month = sep,
+	year = {2010},
+	keywords = {Web archiving data object Web feed Web page dynamics}
+},
+
+@article{oxpath2013,
+  author = {Furche, Tim and Gottlob, Georg and Grasso, Giovanni and Schallhart, Christian and Sellers, Andrew Jon},
+  biburl = {http://www.bibsonomy.org/bibtex/2a84a27fc0bd45b9d938d28266a15649d/dblp},
+  ee = {http://dx.doi.org/10.1007/s00778-012-0286-6},
+  interhash = {bf0e34671848f0fef5d9db9db822f733},
+  intrahash = {a84a27fc0bd45b9d938d28266a15649d},
+  journal = {VLDB J.},
+  keywords = {dblp},
+  number = 1,
+  pages = {47-72},
+  timestamp = {2013-01-24T00:00:00.000+0100},
+  title = {OXPath: A language for scalable data extraction, automation, and crawling on the deep web.},
+  url = {http://dblp.uni-trier.de/db/journals/vldb/vldb22.html#FurcheGGSS13},
+  volume = 22,
+  year = 2013
+}
+
+@article{zhai2007,
+	title = {Extracting Web Data Using {Instance-Based} Learning},
+	volume = {10},
+	issn = {{1386-145X}},
+	url = {http://dx.doi.org/10.1007/s11280-007-0022-0},
+	doi = {10.1007/s11280-007-0022-0},
+	abstract = {This paper studies structured data extraction from Web pages. Existing approaches to data extraction include wrapper induction and automated methods. In this paper, we propose an instance-based learning method, which performs extraction by comparing each new instance to be extracted with labeled instances. The key advantage of our method is that it does not require an initial set of labeled pages to learn extraction rules as in wrapper induction. Instead, the algorithm is able to start extraction from a single labeled instance. Only when a new instance cannot be extracted does it need labeling. This avoids unnecessary page labeling, which solves a major problem with inductive learning (or wrapper induction), i.e., the set of labeled instances may not be representative of all other instances. The instance-based approach is very natural because structured data on the Web usually follow some fixed templates. Pages of the same template usually can be extracted based on a single page instance of the template. A novel technique is proposed to match a new instance with a manually labeled instance and in the process to extract the required data items from the new instance. The technique is also very efficient. Experimental results based on 1,200 pages from 24 diverse Web sites demonstrate the effectiveness of the method. It also outperforms the state-of-the-art existing systems significantly.},
+	number = {2},
+	journal = {World Wide Web},
+	author = {Zhai, Yanhong and Liu, Bing},
+	month = jun,
+	year = {2007},
+	keywords = {instance-based learning, web content mining, web data extraction},
+	pages = {113{\textendash}132}
+},
+
+@article{dice1945,
+	title = {Measures of the Amount of Ecologic Association Between Species},
+	volume = {26},
+	issn = {00129658},
+	url = {http://www.jstor.org/discover/10.2307/1932409?uid=16673648&uid=3737760&uid=2&uid=3&uid=5911624&uid=67&uid=62&uid=16673552&sid=21103011050973},
+	doi = {10.2307/1932409},
+	number = {3},
+	journal = {Ecology},
+	author = {Dice, Lee R.},
+	month = jul,
+	year = {1945},
+	pages = {297}
+},
+
+@inproceedings{caffaro????,
+	title = {Invenio: A Modern Digital Library for Grey Literature},
+	booktitle = {Twelfth International Conference on Grey Literature},
+	author = {Caffaro, J. and Kaplun, S.}
+},
+
+@inproceedings{kordomatis2013,
+	address = {New York, {NY}, {USA}},
+	series = {{WIMS} '13},
+	title = {Web object identification for web automation and meta-search},
+	isbn = {978-1-4503-1850-1},
+	url = {http://doi.acm.org/10.1145/2479787.2479798},
+	doi = {10.1145/2479787.2479798},
+	abstract = {Web object identification plays an important role in research fields such as information extraction, web automation, and web form understanding for building meta-search engines. In contrast to other works, we approach this problem by analyzing various spatial, visual, functional and textual characteristics of web pages. We compute 49 unique features for all visible web page elements, which are then applied to machine learning classifiers in order to identify similar elements on other previously unexamined web pages. We evaluate our approach with different scenarios by analyzing the relevance of the chosen features and the classification rate of the applied classifiers. These scenarios focus on understanding search forms from the transportation domain, particularly flight, train, and bus connections. The results of the evaluation are very promising.},
+	booktitle = {Proceedings of the 3rd International Conference on Web Intelligence, Mining and Semantics},
+	publisher = {{ACM}},
+	author = {Kordomatis, Iraklis and Herzog, Christoph and Fayzrakhmanov, Ruslan R. and {Kr\"{u}pl-Sypien}, Bernhard and Holzinger, Wolfgang and Baumgartner, Robert},
+	year = {2013},
+	keywords = {machine learning, web accessibility, web automation, web object identification, web page visual representation},
+	pages = {13:1{\textendash}13:12}
+},
+
+@misc{livefyre2014,
+	url = {http://web.livefyre.com/},
+	journal = {Livefyre},
+	author = {Livefyre},
+	year = {2014},
+	howpublished = {http://web.livefyre.com/}
+},
+
+@inproceedings{burton2011,
+	title = {The {ICWSM} 2011 Spinn3r Dataset},
+	booktitle = {Fifth Annual Conference on Weblogs and Social Media},
+	author = {Burton, K. and Kasch, N. and Soboroff, I.},
+	year = {2011}
+},
+
+@misc{brianwilson2008-a,
+	title = {Metadata Analysis and Mining Application: {W3C} validator research},
+	url = {http://dev.opera.com/articles/view/mama-w3c-validator-research-2/},
+	author = {Brian Wilson},
+	year = {2008},
+	howpublished = {http://dev.opera.com/articles/view/mama-w3c-validator-research-2/}
+},
+
+@inproceedings{hundt2011,
+	title = {Loop Recognition in {C++/Java/Go/Scala}},
+	url = {https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf},
+	booktitle = {Proceedings of Scala Days},
+	author = {Hundt, Robert},
+	year = {2011}
+},
+
+@misc{twisted2014,
+	url = {http://twistedmatrix.com/},
+	author = {Twisted},
+	year = {2014},
+	howpublished = {http://twistedmatrix.com/}
+},
+
+@inproceedings{faheem2012,
+	address = {New York, {NY}, {USA}},
+	series = {{WWW} '12 Companion},
+	title = {Intelligent crawling of web applications for web archiving},
+	isbn = {978-1-4503-1230-1},
+	url = {http://doi.acm.org/10.1145/2187980.2187996},
+	doi = {10.1145/2187980.2187996},
+	abstract = {The steady growth of the World Wide Web raises challenges regarding the preservation of meaningful Web data. Tools used currently by Web archivists blindly crawl and store Web pages found while crawling, disregarding the kind of Web site currently accessed (which leads to suboptimal crawling strategies) and whatever structured content is contained in Web pages (which results in page-level archives whose content is hard to exploit). We focus in this {PhD} work on the crawling and archiving of publicly accessible Web applications, especially those of the social Web. A Web application is any application that uses Web standards such as {HTML} and {HTTP} to publish information on the Web, accessible by Web browsers. Examples include Web forums, social networks, geolocation services, etc. We claim that the best strategy to crawl these applications is to make the Web crawler aware of the kind of application currently processed, allowing it to refine the list of {URLs} to process, and to annotate the archive with information about the structure of crawled content. We add adaptive characteristics to an archival Web crawler: being able to identify when a Web page belongs to a given Web application and applying the appropriate crawling and content extraction methodology.},
+	booktitle = {Proceedings of the 21st international conference companion on World Wide Web},
+	publisher = {{ACM}},
+	author = {Faheem, Muhammad},
+	year = {2012},
+	keywords = {archiving, Crawling, extraction, web application, {XPath}},
+	pages = {127{\textendash}132}
+},
+
+@misc{python-readability2011,
+	url = {https://github.com/gfxmonk/python-readability},
+	abstract = {python-readability - python port of arc90's readability bookmarklet},
+	journal = {{GitHub}},
+	author = {python-readability},
+	year = {2011},
+	howpublished = {https://github.com/gfxmonk/python-readability}
+},
+
+@inproceedings{shkapenyuk2002,
+	title = {Design and implementation of a high-performance distributed Web crawler},
+	doi = {10.1109/ICDE.2002.994750},
+	abstract = {Broad Web search engines as well as many more specialized search tools rely on Web crawlers to acquire large collections of pages for indexing and analysis. Such a Web crawler may interact with millions of hosts over a period of weeks or months, and thus issues of robustness, flexibility, and manageability are of major importance. In addition, {I/O} performance, network resources, and {OS} limits must be taken into account in order to achieve high performance at a reasonable cost. In this paper, we describe the design and implementation of a distributed Web crawler that runs on a network of workstations. The crawler scales to (at least) several hundred pages per second, is resilient against system crashes and other events, and can be adapted to various crawling applications. We present the software architecture of the system, discuss the, performance bottlenecks, and describe efficient techniques for achieving high performance. We also report preliminary experimental results based on a crawl of 120 million pages on 5 million hosts},
+	booktitle = {18th International Conference on Data Engineering, 2002. Proceedings},
+	author = {Shkapenyuk, V. and Suel, Torsten},
+	year = {2002},
+	keywords = {analysis, Application software, broad Web search engines, Computer crashes, Costs, Crawlers, flexibility, high-performance distributed Web crawler, hypermedia, indexing, information retrieval, Internet, {I/O} performance, manageability, network of workstations, network resources, {OS} limits, performance bottlenecks, robustness, search engines, software architecture, specialized search tools, Web search, workstation clusters, Workstations},
+	pages = {357--368}
+},
+
+@article{stalker,
+  author = {Ion Muslea and Steven Minton and Craig A. Knoblock},
+  journal = {Journal of Autonomous Agents and Multi-Agent Systems},
+  pages = {93--114},
+  title = {Hierarchical Wrapper Induction for Semistructured Information Sources},
+  volume = {4},
+  year = {2001},
+},
+
+@inproceedings{boldi2003,
+	title = {{UbiCrawler:} a scalable fully distributed web crawler},
+	shorttitle = {{UbiCrawler}},
+	url = {http://citeseer.uark.edu:8380/citeseerx/viewdoc/similar;jsessionid=9A1EB49FA584CEE26215545EDBE977AA?doi=10.1.1.14.4239&type=sc},
+	abstract = {{CiteSeerX} - Document Details {(Isaac} Councill, Lee Giles): We report our experience in implementing {UbiCrawler}, a scalable distributed web crawler, using the Java programming language. The main features of {UbiCrawler} are platform independence, fault tolerance, a very effective assignment function for partitioning the domain to crawl, and more in general the complete decentralization of every task. The necessity of handling very large sets of data has highlighted some limitation of the Java {APIs}, which prompted the authors to partially reimplement them.},
+	author = {Boldi, Paolo and Codenotti, Bruno and Santini, Massimo and Vigna, Sebastiano},
+	year = {2003},
+	keywords = {Bruno Codenotti, {CiteSeerX}, Massimo Santini, Paolo Boldi, Sebastiano Vigna}
+},
+
+@misc{scrapy2014,
+	url = {http://scrapy.org/},
+	abstract = {Scrapy, a fast high-level screen scraping and web crawling framework for Python.},
+	author = {Scrapy},
+	year = {2014},
+	howpublished = {http://scrapy.org/}
+},
+
+@techreport{ferrara2012,
+	type = {{arXiv} e-print},
+	title = {Web Data Extraction, Applications and Techniques: A Survey},
+	shorttitle = {Web Data Extraction, Applications and Techniques},
+	url = {http://arxiv.org/abs/1207.0246},
+	abstract = {Web Data Extraction is an important problem that has been studied by means of different scientific tools and in a broad range of application domains. Many approaches to extracting data from the Web have been designed to solve specific problems and operate in ad-hoc application domains. Other approaches, instead, heavily reuse techniques and algorithms developed in the field of Information Extraction. This survey aims at providing a structured and comprehensive overview of the research efforts made in the field of Web Data Extraction. The fil rouge of our work is to provide a classification of existing approaches in terms of the applications for which they have been employed. This differentiates our work from other surveys devoted to classify existing approaches on the basis of the algorithms, techniques and tools they use. We classified Web Data Extraction approaches into categories and, for each category, we illustrated the basic techniques along with their main variants. We grouped existing applications in two main areas: applications at the Enterprise level and at the Social Web level. Such a classification relies on a twofold reason: on one hand, Web Data Extraction techniques emerged as a key tool to perform data analysis in Business and Competitive Intelligence systems as well as for business process re-engineering. On the other hand, Web Data Extraction techniques allow for gathering a large amount of structured data continuously generated and disseminated by Web 2.0, Social Media and Online Social Network users and this offers unprecedented opportunities of analyzing human behaviors on a large scale. We discussed also about the potential of cross-fertilization, i.e., on the possibility of re-using Web Data Extraction techniques originally designed to work in a given domain, in other domains.},
+	number = {1207.0246},
+	author = {Ferrara, Emilio and De Meo, Pasquale and Fiumara, Giacomo and Baumgartner, Robert},
+	month = jul,
+	year = {2012},
+	keywords = {Computer Science - Information Retrieval}
+},
+
+@article{levenshtein1966,
+	title = {Binary codes capable of correcting deletions, insertions and reversals.},
+	volume = {10},
+	abstract = {Seems to be the first person to define what became known as the (simple) edit-distance and show it to be a metric. Paper mostly about constructing optimal codes to transmit such corrections.},
+	number = {8},
+	journal = {Soviet Physics Doklady.},
+	author = {Levenshtein, {VI}},
+	month = feb,
+	year = {1966},
+	keywords = {algorithm, code, codes, comparison, correcting, delete, deletion, distance, dpa, dynamic, edit, edit-distance, error, import, indel, insert, lcs, lcss, metric, programming, sellers, sequence, similarity, string, strings, string-to-string},
+	pages = {707--710}
+},
+
+@misc{phantomjs2014,
+	url = {http://phantomjs.org/},
+	author = {{PhantomJS}},
+	year = {2014},
+	howpublished = {http://phantomjs.org/}
+},
+
+@article{agha1985,
+	title = {{ACTORS:} A Model of Concurrent Computation in Distributed Systems},
+	shorttitle = {{ACTORS}},
+	url = {http://dspace.mit.edu/handle/1721.1/6952},
+	abstract = {A foundational model of concurrency is  developed in this thesis. We examine issues  in the design of parallel systems and show  why the actor model is suitable for exploiting  large-scale parallelism. Concurrency in actors  is constrained only by the availability of  hardware resources and by the logical  dependence inherent in the computation.  Unlike dataflow and functional programming,  however, actors are dynamically  reconfigurable and can model shared  resources with changing local state.  Concurrency is spawned in actors using  asynchronous message-passing, pipelining,  and the dynamic creation of actors. This  thesis deals with some central issues in  distributed computing. Specifically, problems  of divergence and deadlock are addressed.  For example, actors permit dynamic deadlock  detection and removal. The problem of  divergence is contained because  independent transactions can execute  concurrently and potentially infinite processes  are nevertheless available for interaction.},
+	author = {Agha, Gul Abdulnabi},
+	month = jun,
+	year = {1985}
+},
+
+@book{hohpe2003,
+	address = {Boston, {MA}, {USA}},
+	title = {Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions},
+	isbn = {0321200683},
+	shorttitle = {Enterprise Integration Patterns},
+	abstract = {Would you like to use a consistent visual notation for drawing integration solutions? Look inside the front cover. Do you want to harness the power of asynchronous systems without getting caught in the pitfalls? See {"Thinking} Asynchronously" in the Introduction. Do you want to know which style of application integration is best for your purposes? See Chapter 2, Integration Styles. Do you want to learn techniques for processing messages concurrently? See Chapter 10, Competing Consumers and Message Dispatcher. Do you want to learn how you can track asynchronous messages as they flow across distributed systems? See Chapter 11, Message History and Message Store. Do you want to understand how a system designed using integration patterns can be implemented using Java Web services, {.NET} message queuing, and a {TIBCO-based} publish-subscribe architecture? See Chapter 9, Interlude: Composed {Messaging.Utilizing} years of practical experience, seasoned experts Gregor Hohpe and Bobby Woolf show how asynchronous messaging has proven to be the best strategy for enterprise integration success. However, building and deploying messaging solutions presents a number of problems for developers. Enterprise Integration Patterns provides an invaluable catalog of sixty-five patterns, with real-world solutions that demonstrate the formidable of messaging and help you to design effective messaging solutions for your {enterprise.The} authors also include examples covering a variety of different integration technologies, such as {JMS}, {MSMQ}, {TIBCO} {ActiveEnterprise}, Microsoft {BizTalk}, {SOAP}, and {XSL.} A case study describing a bond trading system illustrates the patterns in practice, and the book offers a look at emerging standards, as well as insights into what the future of enterprise integration might {hold.This} book provides a consistent vocabulary and visual notation framework to describe large-scale integration solutions across many technologies. It also explores in detail the advantages and limitations of asynchronous messaging architectures. The authors present practical advice on designing code that connects an application to a messaging system, and provide extensive information to help you determine when to send a message, how to route it to the proper destination, and how to monitor the health of a messaging system. If you want to know how to manage, monitor, and maintain a messaging system once it is in use, get this book. {0321200683B09122003}},
+	publisher = {{Addison-Wesley} Longman Publishing Co., Inc.},
+	author = {Hohpe, Gregor and Woolf, Bobby},
+	year = {2003}
+},
+
+@article{navarro2001,
+	title = {A Guided Tour to Approximate String Matching},
+	volume = {33},
+	issn = {0360-0300},
+	url = {http://doi.acm.org/10.1145/375360.375365},
+	doi = {10.1145/375360.375365},
+	abstract = {We survey the current techniques to cope with the problem of string matching that allows errors. This is becoming a more and more relevant issue for many fast growing areas such as information retrieval and computational biology. We focus on online searching and mostly on edit distance, explaining the problem and its relevance, its statistical behavior, its history and current developments, and the central ideas of the algorithms and their complexities. We present a number of experiments to compare the performance of the different algorithms and show which are the best choices. We conclude with some directions for future work and open problems.},
+	number = {1},
+	journal = {{ACM} Comput. Surv.},
+	author = {Navarro, Gonzalo},
+	month = mar,
+	year = {2001},
+	keywords = {edit distance, Levenshtein distance, online string matching, text searching allowing errors},
+	pages = {31{\textendash}88}
+},
+
+@article{sxpath2010,
+  author = {Ermelinda Oro and Massimo Ruffolo and Steffen Staab},
+  title = {SXPath - Extending XPath towards Spatial Querying on Web Documents},
+  journal = {{PVLDB}},
+  year = {2010},
+  volume = {4},
+  number = {2},
+  pages = {129--140},
+  url = {http://www.vldb.org/pvldb/vol4/p129-oro.pdf},
+  timestamp = {Thu, 25 Sep 2014 12:31:17 +0200},
+  biburl = {http://dblp.uni-trier.de/rec/bib/journals/pvldb/OroRS10},
+  bibsource = {dblp computer science bibliography, http://dblp.org}
+},
+
+@inbook{oevre2012,
+    title = "The Blogosphere as Oeuvre: Individual and Collective Influence on Bloggers",
+    keywords = "Blog, Blogosphere, Collective benefit, PLS, Knowledge sharing",
+    publisher = "Association for Information Systems. AIS Electronic Library (AISeL)",
+    author = "Hendrik Kalb and Matthias Trier",
+    note = "2012; Paper 110",
+    year = "2012",
+    series = "Proceedings / European Conference on Information Systems (ECIS)",
+    booktitle = "ECIS 2012 Proceedings",
+},
+
+@article{chung2007uses,
+    title={Uses and perceptions of blogs: A report on professional journalists and journalism educators},
+    author={Chung, Deborah S and Kim, Eunseong and Trammell, Kaye D and Porter, Lance V},
+    journal={Journalism \& Mass Communication Educator},
+    volume={62},
+    number={3},
+    pages={305--322},
+    year={2007},
+    publisher={SAGE Publications}
+},
+
+@article{lavoie2000meeting,
+   title={Meeting the challenges of digital preservation: The OAIS reference model},
+   author={Lavoie, Brian},
+   journal={OCLC Newsletter},
+   volume={243},
+   pages={26--30},
+   year={2000}
+}
diff --git a/main.tex b/main.tex
new file mode 100644
index 0000000..42c150e
--- /dev/null
+++ b/main.tex
@@ -0,0 +1,120 @@
+﻿\documentclass{ws-ijait}
+
+\parindent 0pt
+\usepackage[ruled, vlined]{algorithm2e}
+\parindent 10pt
+\usepackage[T1]{fontenc}
+\usepackage[utf8x]{inputenc}
+\usepackage[autostyle=false, style=english]{csquotes}
+\usepackage[usenames,dvipsnames]{color}
+% \usepackage[justification=centering]{caption}
+\usepackage[nodayofweek]{datetime}
+\usepackage{amssymb}
+\usepackage{booktabs}
+% \usepackage{balance}
+% \usepackage{microtype}
+\usepackage{enumitem}
+\usepackage{graphicx}
+\usepackage{gnuplottex}
+\usepackage{pifont}
+\usepackage{quoting}
+\usepackage[hyphens]{url}
+\usepackage{sepfootnotes}
+\usepackage{setspace}
+\usepackage[pdfpagelabels=false]{hyperref}
+\usepackage{hypcap}
+\usepackage{atbegshi}% http://ctan.org/pkg/atbegshi
+
+\newdateformat{lv}{\THEDAY{ }\shortmonthname[\THEMONTH] \THEYEAR}
+\newcommand{\lastvisited}{Last visited \lv\today}
+
+% \MakeOuterQuote{"}
+\newfootnotes{A}
+\quotingsetup{vskip=0pt,font={itshape}}
+\setenumerate{noitemsep,topsep=4pt,parsep=4pt,partopsep=0pt}
+\setitemize{noitemsep,topsep=4pt,parsep=4pt,partopsep=0pt}
+\setlength\floatsep{1.25\baselineskip plus 3pt minus 2pt}
+\setlength\textfloatsep{1.25\baselineskip plus 3pt minus 2pt}
+\setlength\intextsep{1.25\baselineskip plus 3pt minus 2 pt}
+\def\algorithmautorefname{Algorithm}
+\graphicspath{{img/}}
+
+\newcommand{\cmark}{\ding{51}}
+\newcommand{\xmark}{\ding{55}}
+
+\newcommand\TODO[1]{\emph{\color{Red} TODO: #1}}
+\renewcommand\comment[1]{\emph{\color{Gray}#1}}
+\newcommand\code[1]{\texttt{#1}}
+\newcommand\coderef[1]{\texttt{\ref{#1}}}
+\newcommand\stringliteral[1]{\texttt{\char`\"#1\char`\"}}
+\newcommand\len[1]{|#1|}
+\newcommand\set[1]{\{#1\}}
+\newcommand\surl[1]{\urlstyle{ff}\url{#1}}
+\newcommand\Oof[1]{$\mathcal{O}(#1)$}
+\renewcommand{\figurename}{Figure}
+
+\begin{document}
+
+\markboth{Vangelis Banos, Olivier Blanvillain, Nikos Kasioumis, Yannis Manolopoulos}
+{A scalable approach to harvest modern weblogs}
+
+%%%%%%%%%%%%%%%%%%%%% Publisher's Area please ignore %%%%%%%%%%%%%%%
+\catchline{}{}{}{}{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\title{A scalable approach to harvest modern weblogs}
+
+\author{\footnotesize Vangelis Banos}
+
+\address{Department of Informatics, Aristotle University of Thessaloniki (AUTH),\\
+Thessaloniki, 54124, Greece.\\
+\email{vbanos@gmail.com}}
+
+\author{\footnotesize Olivier Blanvillain}
+
+\address{École Polytechnique Fédérale de Lausanne (EPFL),\\
+1015 Lausanne, Switzerland.\\
+\email{olivier.blanvillain@epfl.ch}}
+
+\author{\footnotesize Nikos Kasioumis}
+
+\address{European Organization for Nuclear Research (CERN),\\
+Geneva 23, 1211, Switzerland.\\
+\email{nikos.kasioumis@cern.ch}}
+
+\author{\footnotesize Yannis Manolopoulos}
+
+\address{Department of Informatics, Aristotle University of Thessaloniki (AUTH),\\
+Thessaloniki, 54124, Greece.\\
+\email{manolopo@csd.auth.gr}}
+
+\maketitle
+
+\begin{history}
+\received{(Day Month Year)}
+\revised{(Day Month Year)}
+\accepted{(Day Month Year)}
+%\comby{(xxxxxxxxxx)}
+\end{history}
+
+\begin{abstract}
+    \input{0-abstract.tex}
+\end{abstract}
+
+\keywords{Blog crawler; web data extraction; wrapper generation; interoperability.}
+
+\input{algos.tex}
+\input{tables.tex}
+% ~\\~\\~\\~\\~\\~\\~\\
+\input{1-intro.tex}
+\input{2-related-work.tex}
+\input{3-algorithms.tex}
+\input{4-architecture.tex}
+\input{5-evaluation.tex}
+\input{6-conclusion-and-future-work.tex}
+\input{7-acknowledgments.tex}
+
+\bibliographystyle{abbrv}
+\bibliography{main,manual}
+
+\end{document}
diff --git a/tex/short.bib b/manual.bib
similarity index 51%
rename from tex/short.bib
rename to manual.bib
index c952efa..f4ab8c1 100644
--- a/tex/short.bib
+++ b/manual.bib
@@ -1,260 +1,193 @@
-@article{activeobject1996,
-  author = {R. Greg Lavender and Douglas C. Schmidt},
-  title = {Active Object -- An Object Behavioral Pattern for Concurrent Programming},
-  year = {1996},
-}
-
-@article{board2007rss,
-  author = {{RSS Advisory Board}},
-  title = {RSS 2.0 Specification},
-  year = {2007},
-}
-
-@article{dice1945,
-  author = {Dice, Lee R.},
-  journal = {Ecology},
-  number = {3},
-  pages = {297},
-  title = {Measures of the Amount of Ecologic Association Between Species},
-  volume = {26},
-  year = {1945},
-  doi = {10.2307/1932409},
-  issn = {00129658},
-}
-
-@article{dudani1976,
-  author = {Dudani, Sahibsingh A.},
-  journal = {{IEEE} Transactions on Systems, Man and Cybernetics},
-  number = {4},
-  pages = {325--327},
-  title = {The {Distance-Weighted} {k-Nearest-Neighbor} Rule},
-  volume = {{SMC-6}},
-  year = {1976},
-  doi = {10.1109/TSMC.1976.5408784},
-  issn = {0018-9472},
-}
+@misc{thereactivemanifesto2013,
+  title = {The Reactive Manifesto},
+  author = {{Various authors}},
+  URL = {http://reactivemanifesto.org},
+  howpublished = {\url{http://reactivemanifesto.org}},
+  note = {\lastvisited},
+},

-@article{heydon99mercator,
- author = {Heydon, Allan and Najork, Marc},
- title = {Mercator: A Scalable, Extensible Web Crawler},
- journal = {World Wide Web},
- volume = {2},
- number = {4},
- year = {1999},
- issn = {1386-145X},
- pages = {219--229},
- numpages = {11},
- url = {http://dx.doi.org/10.1023/A:1019213109274},
- doi = {10.1023/A:1019213109274},
- acmid = {598733},
- publisher = {Kluwer Academic Publishers},
- address = {Hingham, MA, USA},
-}
+@misc{blogforeverrequirements2009,
+  title = {BlogForever: User Requirements and Platform Specifications Report},
+  year = {2009},
+  URL = {http://goo.gl/Rjn5wT},
+  howpublished = {http://goo.gl/Rjn5wT},
+},

 @article{johnson2008blogs,
+  title = {Are Blogs Here to Stay?: An Examination of the Longevity and Currency of a Static List of Library and Information Science Weblogs},
   author = {Johnson, Kay},
   journal = {Serials review},
+  volume = {34},
   number = {3},
   pages = {199--204},
-  title = {Are Blogs Here to Stay?: An Examination of the Longevity and Currency of a Static List of Library and Information Science Weblogs},
-  volume = {34},
   year = {2008},
-}
-
-@article{kasioumis2013towards,
-  author = {Kasioumis, Nikos and Banos, Vangelis and Kalb, Hendrik},
-  journal = {World Wide Web},
-  pages = {1--27},
-  title = {Towards building a blog preservation platform},
-  year = {2013},
-}
-
-@article{levenshtein1966,
-  author = {Levenshtein, {VI}},
-  journal = {Soviet Physics Doklady.},
-  number = {8},
-  pages = {707--710},
-  title = {Binary codes capable of correcting deletions, insertions and reversals.},
-  volume = {10},
-  year = {1966},
-}
+},

 @article{lindahl2003weblogs,
+  title = {Weblogs: simplifying web publishing},
   author = {Lindahl, Charlie and Blount, Elise},
   journal = {Computer},
+  volume = {36},
   number = {11},
   pages = {114--116},
-  title = {Weblogs: simplifying web publishing},
-  volume = {36},
   year = {2003},
-}
-
-@article{stalker,
-  author = {Ion Muslea and Steven Minton and Craig A. Knoblock},
-  journal = {Journal of Autonomous Agents and Multi-Agent Systems},
-  pages = {93--114},
-  title = {Hierarchical Wrapper Induction for Semistructured Information Sources},
-  volume = {4},
-  year = {2001},
-}
+},

-@inproceedings{berger2011,
-  author = {Berger, P. and Hennig, P. and Bross, J. and Meinel, C.},
-  booktitle = {Third International Conference on Social Computing},
-  pages = {672--677},
-  title = {Mapping the {Blogosphere{\textendash}Towards} a Universal and Scalable {Blog-Crawler}},
-  year = {2011},
-  doi = {10.1109/PASSAT/SocialCom.2011.57},
-}
-
-@inproceedings{boldi2003,
-  author = {Boldi, Paolo and Codenotti, Bruno and Santini, Massimo and Vigna, Sebastiano},
-  title = {{UbiCrawler:} a scalable fully distributed web crawler},
-  year = {2003},
-}
+@article{board2007rss,
+  title = {RSS 2.0 Specification},
+  author = {{RSS Advisory Board}},
+  year = {2007},
+},

-@inproceedings{burton2011,
-  author = {Burton, K. and Kasch, N. and Soboroff, I.},
-  booktitle = {Fifth Annual Conference on Weblogs and Social Media},
-  title = {The {ICWSM} 2011 Spinn3r Dataset},
-  year = {2011},
-}
+@article{kasioumis2013towards,
+  title = {Towards building a blog preservation platform},
+  author = {Kasioumis, Nikos and Banos, Vangelis and Kalb, Hendrik},
+  journal = {World Wide Web},
+  pages = {1--27},
+  year = {2013},
+},

 @inproceedings{faheem2012intelligent,
+  title = {Intelligent crawling of Web applications for Web archiving},
   author = {Faheem, Muhammad},
   booktitle = {Proceedings of the 21st international conference companion on World Wide Web},
   pages = {127--132},
-  title = {Intelligent crawling of Web applications for Web archiving},
   year = {2012},
-}
-
-@inproceedings{gkotsis2013,
-  address = {Berlin, Heidelberg},
-  author = {Gkotsis, George and Stepanyan, Karen and Cristea, Alexandra I. and Joy, Mike},
-  booktitle = {Proceedings of the 29th British National Conference on Big Data},
-  pages = {292--302},
-  series = {BNCOD'13},
-  title = {Self-supervised Automated Wrapper Generation for Weblog Data Extraction},
-  year = {2013},
-  doi = {10.1007/978-3-642-39467-6_26},
-  isbn = {978-3-642-39466-9},
-}
+},

-@inproceedings{hundt2011,
-  author = {Hundt, Robert},
-  booktitle = {Proceedings of Scala Days},
-  title = {Loop Recognition in {C++/Java/Go/Scala}},
-  year = {2011},
-}
-
-@inproceedings{kohlschuetter2010,
-  address = {New York, {NY}, {USA}},
-  author = {Kohlsch\"{u}tter, Christian and Fankhauser, Peter and Nejdl, Wolfgang},
-  booktitle = {Proceedings of the Third {ACM} International Conference on Web Search and Data Mining},
-  pages = {441{\textendash}450},
-  series = {{WSDM} '10},
-  title = {Boilerplate Detection Using Shallow Text Features},
-  year = {2010},
-  doi = {10.1145/1718487.1718542},
-  isbn = {978-1-60558-889-6},
-}
-
-@inproceedings{lixto,
-  author = {Georg Gottlob and Christoph Koch and Robert Baumgartner and Marcus Herzog and Sergio Flesca},
-  booktitle = {Proceedings of the Twenty-third Symposium on Principles of Database Systems},
-  pages = {1--12},
-  title = {The Lixto Data Extraction Project: Back and Forth Between Theory and Practice},
-  year = {2004},
-  doi = {10.1145/1055558.1055560},
-  isbn = {158113858X},
-}
-
-@inproceedings{oita2010,
-  author = {Oita, Marilena and Senellart, Pierre},
-  title = {Archiving Data Objects using Web Feeds},
-  year = {2010},
-}
-
-@inproceedings{shkapenyuk2002,
-  author = {Shkapenyuk, V. and Suel, Torsten},
-  booktitle = {18th International Conference on Data Engineering, 2002. Proceedings},
-  pages = {357--368},
-  title = {Design and implementation of a high-performance distributed Web crawler},
-  year = {2002},
-  doi = {10.1109/ICDE.2002.994750},
-}
+@article{activeobject1996,
+  author = {R. Greg Lavender and Douglas C. Schmidt},
+  title = {Active Object -- An Object Behavioral Pattern for Concurrent Programming},
+  year = {1996},
+},

 @inproceedings{treeedit,
-  address = {New York, NY, USA},
   author = {Reis, D. C. and Golgher, P. B. and Silva, A. S. and Laender, A. F.},
+  title = {Automatic Web News Extraction Using Tree Edit Distance},
   booktitle = {Proceedings of the 13th International Conference on World Wide Web},
-  pages = {502--511},
   series = {WWW '04},
-  title = {Automatic Web News Extraction Using Tree Edit Distance},
   year = {2004},
-  doi = {10.1145/988672.988740},
   isbn = {1-58113-844-X},
-}
-
-@misc{andrewrogers2014,
-  author = {Andrew Rogers and Gary Brewer},
-  howpublished = {\url{http://trends.builtwith.com/docinfo/Microdata}},
-  note = {\lastvisited},
-  title = {Microdata Usage Statistics},
-}
+  location = {New York, NY, USA},
+  pages = {502--511},
+  numpages = {10},
+  url = {http://doi.acm.org/10.1145/988672.988740},
+  doi = {10.1145/988672.988740},
+  address = {New York, NY, USA},
+  keywords = {data extraction, edit distance, schema inference, web},
+},

 @misc{antinharasymiv2011,
+  title = {Blogger Dynamic Views},
+  url = {http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html},
   author = {Antin Harasymiv},
-  howpublished = {\href{http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html}{\nolinkurl{http://buzz.blogger.com/2011/09/dynamic-views-}}\\\href{http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html}{\nolinkurl{seven-new-ways-to-share.html}}},
+  howpublished = {\href{http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.htm}{\nolinkurl{http://buzz.blogger.com/2011/09/dynamic-views-}}\\\href{http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.htm}{\nolinkurl{seven-new-ways-to-share.htm}}},
   note = {\lastvisited},
-  title = {Blogger Dynamic Views},
-}
+},
+
+@inproceedings{berger2011,
+  title = {Mapping the {Blogosphere{\textendash}Towards} a Universal and Scalable {Blog-Crawler}},
+  doi = {10.1109/PASSAT/SocialCom.2011.57},
+  booktitle = {Third International Conference on Social Computing},
+  author = {Berger, P. and Hennig, P. and Bross, J. and Meinel, C.},
+  year = {2011},
+  keywords = {Blog, blog-crawler, blogosphere, Blogs, Crawlers, Databases, Data mining, Feeds, Hardware, Hasso Plattner, {HTML}, {In-Memory}, {MapReduce}, open source intelligence, Ranking, social media, Social Media Monitoring, social networking (online), tailor-mode feed-crawler},
+  pages = {672--677},
+},
+
+@misc{whatwg2014,
+  title = {Microdata - {HTML5} Draft Standard},
+  url = {http://whatwg.org/specs/web-apps/current-work/multipage/microdata.html},
+  author = {{WHATWG}},
+  howpublished = {\href{http://whatwg.org/specs/web-apps/current-work/multipage/microdata.html}{\nolinkurl{http://whatwg.org/specs/web-apps/current-}}\\\href{http://whatwg.org/specs/web-apps/current-work/multipage/microdata.html}{\nolinkurl{work/multipage/microdata.html}}},
+  note = {\lastvisited},
+},

 @misc{brianwilson2008,
+  title = {Metadata Analysis and Mining Application},
+  url = {http://dev.opera.com/articles/view/mama},
   author = {Brian Wilson},
   howpublished = {\url{http://dev.opera.com/articles/view/mama}},
   note = {\lastvisited},
-  title = {Metadata Analysis and Mining Application},
-}
-
-@misc{nahedeltantawy2012,
-  author = {Nahed Eltantawy and Julie B. Wiest},
-  journal = {Ikkevold},
-  title = {Social Media in the Egyptian Revolution: Reconsidering Resource Mobilization Theory (1-3)},
-  year = {2012},
-}
-
-@misc{thereactivemanifesto2013,
-  author = {{Various authors}},
-  howpublished = {\url{http://reactivemanifesto.org}},
-  note = {\lastvisited},
-  title = {The Reactive Manifesto},
-}
+},

-@misc{w3c2002,
-  author = {{Various authors, WC3}},
-  howpublished = {\url{http://www-mit.w3.org/QA/Tips/Use\_h1\_for\_Title}},
+@misc{wordpress2014,
+  title = {Posting Activity},
+  url = {http://wordpress.com/stats/posting},
+  author = {{WordPress}},
+  howpublished = {\url{http://wordpress.com/stats/posting}},
   note = {\lastvisited},
-  title = {Use h1 for top level heading},
-}
+},

 @misc{w3c2014,
+  title = {{W3C} standards},
+  url = {http://w3.org/standards},
   author = {{Various authors, W3C}},
   howpublished = {\url{http://w3.org/standards}},
   note = {\lastvisited},
-  title = {{W3C} standards},
-}
+},

-@misc{whatwg2014,
-  author = {{WHATWG}},
-  howpublished = {\href{http://whatwg.org/specs/web-apps/current-work/multipage}{\nolinkurl{http://whatwg.org/specs/web-apps/current-}}\\\href{http://whatwg.org/specs/web-apps/current-work/multipage}{\nolinkurl{work/multipage}}},
+@misc{andrewrogers2014,
+  title = {Microdata Usage Statistics},
+  url = {http://trends.builtwith.com/docinfo/Microdata},
+  author = {Andrew Rogers and Gary Brewer},
+  howpublished = {\url{http://trends.builtwith.com/docinfo/Microdata}},
   note = {\lastvisited},
-  title = {Microdata - {HTML5} Draft Standard},
-}
+},

-@misc{wordpress2014,
-  author = {{WordPress}},
-  howpublished = {\url{http://wordpress.com/stats/posting}},
+@misc{w3c2002,
+  title = {Use h1 for top level heading},
+  url = {http://www-mit.w3.org/QA/Tips/Use_h1_for_Title},
+  author = {{Various authors, WC3}},
+  howpublished = {\url{http://www-mit.w3.org/QA/Tips/Use\_h1\_for\_Title}},
   note = {\lastvisited},
-  title = {Posting Activity},
+},
+
+@misc{nahedeltantawy2012,
+  title = {Social Media in the Egyptian Revolution: Reconsidering Resource Mobilization Theory (1-3)},
+  shorttitle = {Social Media in the Egyptian Revolution},
+  url = {http://www.ikkevold.no/2012/06/social-media-in-the-egyptian-revolutionreconsidering-resource-mobilization-theory-1-3/},
+  journal = {Ikkevold},
+  author = {Nahed Eltantawy and Julie B. Wiest},
+  year = {2012}
+},
+
+@inproceedings{kohlschuetter2010,
+  address = {New York, {NY}, {USA}},
+  series = {{WSDM} '10},
+  title = {Boilerplate Detection Using Shallow Text Features},
+  isbn = {978-1-60558-889-6},
+  url = {http://doi.acm.org/10.1145/1718487.1718542},
+  doi = {10.1145/1718487.1718542},
+  abstract = {In addition to the actual content Web pages consist of navigational elements, templates, and advertisements. This boilerplate text typically is not related to the main content, may deteriorate search precision and thus needs to be detected properly. In this paper, we analyze a small set of shallow text features for classifying the individual text elements in a Web page. We compare the approach to complex, state-of-the-art techniques and show that competitive accuracy can be achieved, at almost no cost. Moreover, we derive a simple and plausible stochastic model for describing the boilerplate creation process. With the help of our model, we also quantify the impact of boilerplate removal to retrieval performance and show significant improvements over the baseline. Finally, we extend the principled approach by straight-forward heuristics, achieving a remarkable detection accuracy.},
+  booktitle = {Proceedings of the Third {ACM} International Conference on Web Search and Data Mining},
+  author = {Kohlsch\"{u}tter, Christian and Fankhauser, Peter and Nejdl, Wolfgang},
+  year = {2010},
+  keywords = {boilerplate removal, full-text extraction, template detection, text cleaning, web document modeling},
+  pages = {441{\textendash}450}
+},
+
+@article{cantara2005mets,
+    title={METS: The metadata encoding and transmission standard},
+    author={Cantara, Linda},
+    journal={Cataloging \& classification quarterly},
+    volume={40},
+    number={3-4},
+    pages={237--253},
+    year={2005},
+    publisher={Taylor \& Francis}
+},
+
+@inproceedings{marc2003official,
+    title={Official Web Site},
+    author={MARC, XML},
+    year={2003},
+    organization={Library of Congress}
+},
+
+@article{llopis2012d4,
+    title={D4. 4: Digital Repository Component Design},
+    author={Llopis, J Garc{\i}a and Encinar, R Jim{\'e}nez and Stepanyan, K and Kim, Y and Haberfield, A and Postac{\i}, Senan and Gkotsis, G and Lazaridou, A C{\i}nar and Kalb, H and Banos, V and others},
+    journal={work package, European Organization for Nuclear Research (CERN)},
+    year={2012}
 }
diff --git a/oldmain.tex b/oldmain.tex
new file mode 100644
index 0000000..3e4dcda
--- /dev/null
+++ b/oldmain.tex
@@ -0,0 +1,154 @@
+\documentclass{ws-ijait}
+
+\usepackage[ruled, vlined]{algorithm2e}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[autostyle=false, style=english]{csquotes}
+\usepackage[usenames,dvipsnames]{color}
+\usepackage[justification=centering]{caption}
+\usepackage[nodayofweek]{datetime}
+\usepackage{amssymb}
+\usepackage{booktabs}
+\usepackage{balance}
+% \usepackage{microtype}
+\usepackage{enumitem}
+\usepackage{graphicx}
+\usepackage{gnuplottex}
+\usepackage{pifont}
+\usepackage{quoting}
+\usepackage[hyphens]{url}
+\usepackage{sepfootnotes}
+\usepackage{setspace}
+\usepackage[pdfpagelabels=false]{hyperref}
+\usepackage{hypcap}
+
+\newdateformat{lv}{\THEDAY{ }\shortmonthname[\THEMONTH] \THEYEAR}
+\newcommand{\lastvisited}{Last visited \lv\today}
+
+\MakeOuterQuote{"}
+\newfootnotes{A}
+\quotingsetup{vskip=0pt,font={itshape}}
+\setenumerate{noitemsep,topsep=0pt,parsep=2pt,partopsep=0pt}
+\setitemize{noitemsep,topsep=0pt,parsep=4pt,partopsep=0pt}
+\setlength\floatsep{1.25\baselineskip plus 3pt minus 2pt}
+\setlength\textfloatsep{1.25\baselineskip plus 3pt minus 2pt}
+\setlength\intextsep{1.25\baselineskip plus 3pt minus 2 pt}
+\def\algorithmautorefname{Algorithm}
+\graphicspath{{img/}}
+\newcommand{\cmark}{\ding{51}}
+\newcommand{\xmark}{\ding{55}}
+
+\newcommand\TODO[1]{\emph{\color{Red} TODO: #1}}
+\renewcommand\comment[1]{\emph{\color{Gray}#1}}
+\newcommand\code[1]{\texttt{#1}}
+\newcommand\coderef[1]{\texttt{\ref{#1}}}
+\newcommand\stringliteral[1]{\texttt{\char`\"#1\char`\"}}
+\newcommand\len[1]{|#1|}
+\newcommand\set[1]{\{#1\}}
+\newcommand\surl[1]{\urlstyle{ff}\url{#1}}
+\newcommand\Oof[1]{$\mathcal{O}(#1)$}
+
+\begin{document}
+
+\markboth{Vangelis Banos, Authors' Names}
+{Instructions for Typing Manuscripts (Paper's Title)}
+
+%%%%%%%%%%%%%%%%%%%%% Publisher's Area please ignore %%%%%%%%%%%%%%%
+%
+\catchline{}{}{}{}{}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\title{INSTRUCTIONS FOR TYPESETTING MANUSCRIPTS\\
+    USING \TeX\ OR \LaTeX\footnote{For the title, try not to use more than
+        3 lines. Typeset the title in 10 pt Times roman, uppercase and
+    boldface.}
+}
+
+\author{\footnotesize FIRST AUTHOR\footnote{
+        Typeset names in 8~pt Times roman, uppercase. Use the footnote
+to indicate the present or permanent address of the author.}}
+
+\address{University Department, University Name, Address\\
+    City, State ZIP/Zone,
+    Country\footnote{State completely without abbreviations, the
+        affiliation and mailing address, including country. Typeset in 8~pt
+    Times italic.}\\
+first\_author@university.edu}
+
+\author{SECOND AUTHOR}
+
+\address{Group, Laboratory, Address\\
+    City, State ZIP/Zone, Country\\
+second\_author@group.com}
+
+\maketitle
+
+\begin{history}
+    \received{(Day Month Year)}
+    \revised{(Day Month Year)}
+    \accepted{(Day Month Year)}
+    %\comby{(xxxxxxxxxx)}
+\end{history}
+
+%\author{
+  % 1st. author
+%  \alignauthor
+%	Vangelis Banos\\
+%         \affaddr{Department of Informatics}\\
+%         \affaddr{Aristotle University of Thessaloniki, Greece}\\
+%         \email{\href{vmailto:vbanos@gmail.com}{vbanos@gmail.com}}
+%  % 2nd. author
+%	\alignauthor
+%	Olivier Blanvillain\\
+%         \affaddr{École Polytechnique Fédérale de Lausanne (EPFL)}\\
+%         \affaddr{1015 Lausanne, Switzerland}\\
+%         \email{\href{mailto:olivier.blanvillain@epfl.ch}{olivier.blanvillain@epfl.ch}}
+  % 3rd. author
+%	\alignauthor
+%  Nikos Kasioumis\\
+%         \affaddr{European Organization for Nuclear Research (CERN)}\\
+%         \affaddr{1211 Geneva 23, Switzerland}\\
+%         \email{\href{mailto:nikos.kasioumis@cern.ch}{nikos.kasioumis@cern.ch}}
+%  \alignauthor
+%	Yannis Manolopoulos\\
+%         \affaddr{Department of Informatics}\\
+%         \affaddr{Aristotle University of Thessaloniki, Greece}\\
+%         \email{\href{vmailto:manolopo@csd.auth.gr}{manolopo@csd.auth.gr}}
+%  }
+%
+%  \additionalauthors{Yannis Manolopoulos (Department of Informatics, Aristotle University of Thessaloniki, Greece, {\texttt{manolopo@csd.auth.gr}})}
+%
+%  \hypersetup{pageanchor=false}
+  \maketitle
+
+  \begin{abstract}
+    \input{0-abstract.tex}
+  \end{abstract}
+
+%  \category{H.3.3}{Information Storage and Retrieval}{Information Search and Retrieval}[Information filtering, Query formulation, Selection process]
+%  \category{\\D.2.8}{Software Engineering}{Metrics}[Complexity measures, Performance measures]
+
+  % In order of most significant, first letter of each word capitalized.
+%  \terms{Design, Algorithms, Performance, Experimentation}
+
+  % In alphabetical order, first letter of the first word capitalized.
+  \keywords{Blog crawler, web data extraction, wrapper generation}
+
+  \input{algos.tex}
+  \input{tables.tex}
+  ~\\~\\~\\~\\~\\~\\~\\
+  \input{1-intro.tex}
+  \input{2-related-work.tex}
+  \input{3-algorithms.tex}
+  \input{4-architecture.tex}
+  \input{5-evaluation.tex}
+  \input{6-conclusion-and-future-work.tex}
+  \input{7-acknowledgments.tex}
+
+  \balance
+
+  \bibliographystyle{abbrv}
+  \bibliography{main,manual}
+
+\end{document}
diff --git a/performance.eps b/performance.eps
new file mode 100644
index 0000000..d0bc3cd
--- /dev/null
+++ b/performance.eps
@@ -0,0 +1,2448 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: performance.eps
+%%CreationDate: Tue Sep 30 15:08:34 2014
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 871 529
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 514 translate
+856 -514 scale
+% Image geometry
+856 514 8
+% Transformation matrix
+[ 856 0 0 514 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 856 string def
+/gstr 856 string def
+/bstr 856 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       132192 ASCII Bytes
+colorimage
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+f`)0BiU#OiiTu-qJcC<$JcC<$JcFF'J,~>
+f`)0BiU#OiiTu-qJcC<$JcC<$JcFF'J,~>
+f`)0BiU#OiiTu-qJcC<$JcC<$JcFF'J,~>
+h>[QL[!MHH!`P$$JcC<$JcC<$JcC<$h>`!~>
+h>[QL[!MHH!`P$$JcC<$JcC<$JcC<$h>`!~>
+h>[QL[!MHH!`P$$JcC<$JcC<$JcC<$h>`!~>
+hu<nfBE/#mMi7JV!jml3rVutWf7EsQs+13$s+13$s5<p-~>
+hu<nfBE/#mMi7JV!jml3rVutWf7EsQs+13$s+13$s5<p-~>
+hu<nfBE/#mMi7JV!jml3rVutWf7EsQs+13$s+13$s5<p-~>
+i;WmX!!'Ctrrh;=!!'BWs+13$s+13$s+14/s*t~>
+i;WmX!!'Ctrrh;=!!'BWs+13$s+13$s+14/s*t~>
+i;WmX!!'Ctrrh;=!!'BWs+13$s+13$s+14/s*t~>
+ir9,I3G?Y*rr_Vp;i?5,JcC<$JcC<$JcFa0J,~>
+ir9,I3G?Y*rr_Vp;i?5,JcC<$JcC<$JcFa0J,~>
+ir9,I3G?Y*rr_Vp;i?5,JcC<$JcC<$JcFa0J,~>
+j8T2)!5Rq#"71qEon!-os+13$s+13$s5a31~>
+j8T2)!5Rq#"71qEon!-os+13$s+13$s5a31~>
+j8T2)!5Rq#"71qEon!-os+13$s+13$s5a31~>
+jSo84Ms(*AltH'Cs+13$s+13$s+143s*t~>
+jSo84Ms(*AltH'Cs+13$s+13$s+143s*t~>
+jSo84Ms(*AltH'Cs+13$s+13$s+143s*t~>
+jSo5=jo5AJon!-os+13$s+13$s5j92~>
+jSo5=jo5AJon!-os+13$s+13$s5j92~>
+jSo5=jo5AJon!-os+13$s+13$s5j92~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+d/O/G!48p/JH16$JH16$SH+oSJ,~>
+d/O/G!48p/JH16$JH16$SH+oSJ,~>
+d/O/G!48p/JH16$JH16$SH+oSJ,~>
+dJj=8!!#s#s+(0$!.b-$!1a+Ss*t~>
+dJj=8!!#s#s+(0$!.b-$!1a+Ss*t~>
+dJj=8!!#s#s+(0$!.b-$!1a+Ss*t~>
+dJj=A!!$]8s8N(qs8N(qs8N(rs8N(qs8N(qs8N(qs8N)Ks8N(`s*t~>
+dJj=A!!$]8s8N(qs8N(qs8N(rs8N(qs8N(qs8N(qs8N)Ks8N(`s*t~>
+dJj=A!!$]8s8N(qs8N(qs8N(rs8N(qs8N(qs8N(qs8N)Ks8N(`s*t~>
+d/O16iUsARrrAnqrrAnqrrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+d/O16iUsARrrAnqrrAnqrrCsV"0DP'Fj0mc!2]_q!2]_q!2]_q!7_&K!0mM6~>
+d/O16iUsARrrAnqrrAnqrrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+JcGTHrrAnqrrCRK!5I"_rrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+JcGTHrrAnqrrCRK!5I"_rrCsV"2o>)U!3Q:!2]_q!2]_q!2]_q!7_&K!0mM6~>
+JcGTHrrAnqrrCRK!5I"_rrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+JcGTHrrAnqrrCRK!5I"_rrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+JcGTHrrAnqrrCRK!5I"_rrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+JcGTHrrAnqrrCRK!5I"_rrAqrrrAnqrrAnqrrAnqrrCRKrrA;`J,~>
+dJj7+orS2n!2]_q!7_#K^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+dJj7+orS2n!2]_q!7_#K^XN5_!8meYmFg1Qbl@\CV>pPqV>pPqV>pPqeGoOKPlH7~>
+dJj7+orS2n!2]_q!7_#K^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+gA_8^!)r7^rrV.m[&sB.!2]_q!7_#K^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+gA_8^!)r7^rrV.m[&sB.!2]_q!7_#K^XN5_!9*q]fu0um!-QNcrrAnqrrAnqrrAnqrrCRKrrA;`
+J,~>
+gA_8^!)r7^rrV.m[&sB.!2]_q!7_#K^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+g]%D`BE/%1qZ$SnY5eM%V>pPqeGfN`e,TFJVZ6YrV>pPqV>pPqV>pPqeGoOKPlH7~>
+g]%D`BE/%1qZ$SnY5eM%V>pPqeGfN`e,TFJjo5YI\b?&!!84KV`6A8]!2]_q!2]_q!2]_q!7_&K
+!0mM6~>
+g]%D`BE/%1qZ$SnY5eM%V>pPqeGfN`e,TFJVZ6YrV>pPqV>pPqV>pPqeGoOKPlH7~>
+g]%A6s(G@+rr@t[s8N(qs8N)KrrBg_s8N(rs8N(qs8N(qs8N(qs8N)Ks8N(`s*t~>
+g]%A6s(G@+rr@t[s8N(qs8N)KrrBg_s8N)_rs@`cs.KG=s-!H9aoDA@V>pPqV>pPqV>pPqeGoOK
+PlH7~>
+g]%A6s(G@+rr@t[s8N(qs8N)KrrBg_s8N(rs8N(qs8N(qs8N(qs8N)Ks8N(`s*t~>
+g]%83p&>'"m'$Hh!2]_q!7_#K^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+g]%83p&>'"m'$Hh!2]_q!7_#K^XN5_!9sLj\H'2?cN'[=_uR`ts8N(qs8N(qs8N(qs8N)Ks8N(`
+s*t~>
+g]%83p&>'"m'$Hh!2]_q!7_#K^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+g]%83p&>':m'$Hh!.k0$s+13$s.TJm!0mM6~>
+g]%83p&>':m'$Hh!.k0Prs%L@!9<bQTn35ps+14Js8N(`s*t~>
+g]%83p&>':m'$Hh!.k0$s+13$s.TJm!0mM6~>
+g]%7ep&>'"iNN:]!.k0$s+13$s.TJm!0mM6~>
+g]%7ep&>'"iNN:]!.k0Srs%.6j8[$t\Ujd3s+14Gs8N(`s*t~>
+g]%7ep&>'"iNN:]!.k0$s+13$s.TJm!0mM6~>
+g]%;4HM@F?i;g%\rr@WMpAY--JcG?A#5-TTVmO8+JcFp5!TEBrs5*eU!0mM6~>
+g]%;4HM@F?i;g%\rr@WMpAY--]`//G!)N=gj1bNtp"-RK[(u$Zs6'C_iTu-qhZ*TUPlH7~>
+g]%;4HM@F?i;g%\rr@WMpAY--JcG?A#5-TTVmO8+JcFp5!TEBrs5*eU!0mM6~>
+g]%B-!,1?grr_Vc!2m""rr@WMpAY--JcGBB#daSXiW&r%!,-r`li-tDr;_EKhZ*TUPlH7~>
+g]%B-!,1?grr_Vc!2m""rr@WMpAY--^]+N3PP5$1!4ffC#daSXiW&r%!,-r`li-tDr;_EKhZ*TU
+PlH7~>
+g]%B-!,1?grr_Vc!2m""rr@WMpAY--JcGBB#daSXiW&r%!,-r`li-tDr;_EKhZ*TUPlH7~>
+gA_/[rVuq3regnm!!$^!Y5eM%JcGHD!5F*bpAY6RMZD!!rr_pm!47=WmJd=^bbkF@JcFU,rrA;`
+J,~>
+gA_/[rVuq3regnm!!$^!Y5eM%JcGHD!5H;K"d8qMs7X";rr_5<!6kB@"8,Rm["88Erri#=VZ6^J
+s5*eU!0mM6~>
+gA_/[rVuq3regnm!!$^!Y5eM%JcGHD!5F*bpAY6RMZD!!rr_pm!47=WmJd=^bbkF@JcFU,rrA;`
+J,~>
+g&D*);u-IoVl]pu!.k1DrrBfbs7cNqbQ%XeqYpZj;ZM`,s6K^b!.k1,s8N(`s*t~>
+g&D*);u-IoVl]pu!.k1DrrBgMrrp@@p.k\7^&J2Y!!(7>rr_pm!/lF.li6tbJcFU,rrA;`J,~>
+g&D*);u-IoVl]pu!.k1DrrBfbs7cNqbQ%XeqYpZj;ZM`,s6K^b!.k1,s8N(`s*t~>
+fDblYMuE\WMsRMErr@WMpAY--JcGNF"7/qdVt^2m;ZP$ms6Tdc!.k1,s8N(`s*t~>
+fDblYMuE\WMsRMErr@WMpAY--_Z'h(!6"otFnWQL"7/qdVt^2m;ZP$ms6Tdc!.k1,s8N(`s*t~>
+fDblYMuE\WMsRMErr@WMpAY--JcGNF"7/qdVt^2m;ZP$ms6Tdc!.k1,s8N(`s*t~>
+JcGTHrr@WMpAY--JcGNF"1/%.iV3?RZiFcjs6Tdc!.k1,s8N(`s*t~>
+JcGTHrr@WMpAY--`;^#.s4IB0j1G<nZiC*bp\t<%!,-r`m/R(cJcFU,rrA;`J,~>
+JcGTHrr@WMpAY--JcGNF"1/%.iV3?RZiFcjs6Tdc!.k1,s8N(`s*t~>
+fDbp=f@U$%!TE^Qs8N(Ms7ZHm^OcF[rrQ+!;tg4ni;`l%JcG-;rr@WMhZ*TUPlH7~>
+fDbp=f@U$%!TE^Qs8N(Ms7ZHm^W$3W\M`FIXYneDrrQ+!;tg4ni;`l%JcG-;rr@WMhZ*TUPlH7~>
+fDbp=f@U$%!TE^Qs8N(Ms7ZHm^OcF[rrQ+!;tg4ni;`l%JcG-;rr@WMhZ*TUPlH7~>
+g&D)g;uQdrrrV.m[&sB.!.k1DrrBfbs7uZsbQ%XMp&G!kJcG-;rr@WMhZ*TUPlH7~>
+g&D)g;uQdrrrV.m[&sB.!.k1DrrBgQrroM)AH2]']DhuW!!'D!s8E"Ls6]jd!.k1,s8N(`s*t~>
+g&D)g;uQdrrrV.m[&sB.!.k1DrrBfbs7uZsbQ%XMp&G!kJcG-;rr@WMhZ*TUPlH7~>
+g]%KEBE1thM`L_8s/3%"rr@WMJcG-;",d-ZiV!3WH2mrss8U^0VmQF&"P;VJ[*8LK$.mD!bl@^e
+[(uA+rrD$WMZRRMbkh>HfAWX7s8U<MVni!'rsIB:VmQL(bd=:`p&"aqf?C/:s8U<M_"IX*#2tJd
+MgC<?qYpQSreghkMp1tr!o]&`regclr;Zcss8N)Xregd8JcFj3rrA;`J,~>
+g]%KEBE1thM`L_8s/3%"rr@WM]`/2hL&_0q!84p_",d-ZiV!3WH2mrss8U^0VmQF&"P;VJ[*8LK
+$.mD!bl@^e[(uA+rrD$WMZRRMbkh>HfAWX7s8U<MVni!'rsIB:VmQL(bd=:`p&"aqf?C/:s8U<M
+_"IX*#2tJdMgC<?qYpQSreghkMp1tr!o]&`regclr;Zcss8N)Xregd8JcFj3rrA;`J,~>
+g]%KEBE1thM`L_8s/3%"rr@WMJcG-;",d-ZiV!3WH2mrss8U^0VmQF&"P;VJ[*8LK$.mD!bl@^e
+[(uA+rrD$WMZRRMbkh>HfAWX7s8U<MVni!'rsIB:VmQL(bd=:`p&"aqf?C/:s8U<M_"IX*#2tJd
+MgC<?qYpQSreghkMp1tr!o]&`regclr;Zcss8N)Xregd8JcFj3rrA;`J,~>
+g]%>^!4;b*!/paS!/oG.!S?\ms8N(Ms+14;rrQ+!!;-9pMZ<ams5EnVrVufr!/pjV!9*nW#)iL[
+bbkG>o`#!O!9*qW!iH$Vr;QcUr;[*&;p>:AMZB[SrrD$V!!iO&bl@^$!2oeq!9*nW#)iL[bbkG>
+rVlr+!8%5M!nRFZr;QiW!9*qW!iH$VqYpW(!.+VD!E6B(s8N'(s/1eTs/,jCJcFm4rrA;`J,~>
+g]%>^!4;b*!/paS!/oG.!S?\ms8N(Ms1J@8FTA-8p=ZtU!`K(!o`#)Q!!'h7iV`cTs8;otMuN_V
+iVif]MuQ`"VZ9ZfrrV-ZiVriYVZ;YQrrD$V!!iO&bl@^$!2ohr!9*kV#QI`Hs8RuWVu?VqiVif]
+MuQ`"VZ9ZorrTP-fDbdOf)W2UrrV-ZiVriYVZ;YOrrTP-HN!jE;mcN'rr<<(Vi1TTVZ;$os5s@]
+!0mM6~>
+g]%>^!4;b*!/paS!/oG.!S?\ms8N(Ms+14;rrQ+!!;-9pMZ<ams5EnVrVufr!/pjV!9*nW#)iL[
+bbkG>o`#!O!9*qW!iH$Vr;QcUr;[*&;p>:AMZB[SrrD$V!!iO&bl@^$!2oeq!9*nW#)iL[bbkG>
+rVlr+!8%5M!nRFZr;QiW!9*qW!iH$VqYpW(!.+VD!E6B(s8N'(s/1eTs/,jCJcFm4rrA;`J,~>
+g]%:fm/?qaMu3MT[-ZHF!o[)%qYpcYMgC;-MrEq#rr@WMpAY--JcGQGrW)Tj",d-ZVuH\ti;`lU
+rr_q-!/pdT#iPcAMno@N!!)Zk!fI%WrVlpt!4;Y'"SD`p;p>4?!fI&:rVm#n!!#sArVlqW!/pdT
+#iPcAMno@N!!*#u!mCYgr;QiB!4;_)!fI%WrVlpt!4;\(!oX-*rVlpt!!)utrr<(tMuE\U!!(5o
+s6'F^!0mM6~>
+g]%:fm/?qaMu3MT[-ZHF!o[)%qYpcYMgC;-MrEq#rr@WMpAY--bPqe6`;fNg!9:NfrW)Tj",d-Z
+VuH\ti;`lUrr_q-!/pdT#iPcAMno@N!!)Zk!fI%WrVlpt!4;Y'"SD`p;p>4?!fI&:rVm#n!!#sA
+rVlqW!/pdT#iPcAMno@N!!*#u!mCYgr;QiB!4;_)!fI%WrVlpt!4;\(!oX-*rVlpt!!)utrr<(t
+MuE\U!!(5os6'F^!0mM6~>
+g]%:fm/?qaMu3MT[-ZHF!o[)%qYpcYMgC;-MrEq#rr@WMpAY--JcGQGrW)Tj",d-ZVuH\ti;`lU
+rr_q-!/pdT#iPcAMno@N!!)Zk!fI%WrVlpt!4;Y'"SD`p;p>4?!fI&:rVm#n!!#sArVlqW!/pdT
+#iPcAMno@N!!*#u!mCYgr;QiB!4;_)!fI%WrVlpt!4;\(!oX-*rVlpt!!)utrr<(tMuE\U!!(5o
+s6'F^!0mM6~>
+g]%83r;QbTqu6]@m+MC@lt?CCqu6`A3R%L&!mE[KlMpkaJcGHD!5F*bq>^Eoo`##O!!'D)s8N)r
+rrS)YMu3MZ!'+`ms6R,Eo`"u\!'1#X!pfncqZ$Qq!:9X`"8)Wo[/L%)!!)B`rr_oo!4;\($ii;$
+s8VGmfDkm;!.+MA!dXjRrr3%f!'1#X!pfncr;QgY!8%2L!b_R4rVult!,2<1!fI&:JcFp5rrA;`
+J,~>
+g]%83r;QbTqu6]@m+MC@lt?CCqu6`A3R%L&!mE[KlMpkaJcGHD!5H_W"]#-Es3IgTs8E#jrr\/Z
+!4;_)rrDrr!fI&:qu6m$3GAHmm'PC:rrSSg3W8sZli9u\s8N'!m/6kco`,!!rVult!:9X`"8)Wo
+[/Bq4!'+`ms6R,Es8VEcHM[XCH2t>OrrSSg3W8sZli9u^rrP1\fDY^NBE2!0s8N'!B`.l3MZAZd
+s6'F^!0mM6~>
+g]%83r;QbTqu6]@m+MC@lt?CCqu6`A3R%L&!mE[KlMpkaJcGHD!5F*bq>^Eoo`##O!!'D)s8N)r
+rrS)YMu3MZ!'+`ms6R,Eo`"u\!'1#X!pfncqZ$Qq!:9X`"8)Wo[/L%)!!)B`rr_oo!4;\($ii;$
+s8VGmfDkm;!.+MA!dXjRrr3%f!'1#X!pfncr;QgY!8%2L!b_R4rVult!,2<1!fI&:JcFp5rrA;`
+J,~>
+g]%83r;QbTqu6](iS"55H2mrhr;QiW!5SO4!l+f[li6tbJcGHD!5F*bq>^Eoo`##O!!&qqs8N)r
+rrS)YMu3PS!!'CorrK%ar;ZcsqZ$QqqYpW(!,2?2rrDoq!jhr@r;Zcs!4;V&!dXjEqYpVp!)rjr
+!N5;^s8N)trrTP-!;lcs[,Lu`rr<&+r;QhV!/lF.kPtP^PlH7~>
+g]%83r;QbTqu6](iS"55H2mrhr;QiW!5SO4!l+f[li6tbJcGHD!5HeY"mu?9!&a/Ms8E#jrr\/Z
+!2oeqrrDrr!fI&:qu?Zr!4;1o!N5;^s8N)qs8N)qrrTP-B`7u2!;c]sZiFe;s8N'![/0e(H2sl>
+rrT(u;uQ^sVsO?]rrE#t!jhq-qu6](iVifV!!'D(rrS)YMh1oks8N(`s*t~>
+g]%83r;QbTqu6](iS"55H2mrhr;QiW!5SO4!l+f[li6tbJcGHD!5F*bq>^Eoo`##O!!&qqs8N)r
+rrS)YMu3PS!!'CorrK%ar;ZcsqZ$QqqYpW(!,2?2rrDoq!jhr@r;Zcs!4;V&!dXjEqYpVp!)rjr
+!N5;^s8N)trrTP-!;lcs[,Lu`rr<&+r;QhV!/lF.kPtP^PlH7~>
+g]%:ffDY^LMu3MS;q_0RbYnKAbl%JAMZEVRrrDBbrr@WMpAY--JcGQGrW)Tj",d-Z[/L%)!;lct
+MZA\4s8N'!m-"EK!;c`q!;c]tbQ%Y9rr;uuqYpZA!!)]js8N'!m/$b^!!(7>rrUCE!;?Hm!<)p!
+MZ@G`s8N)rrrS)YMh1oks8N(`s*t~>
+g]%:ffDY^LMu3MS;q_0RbYnKAbl%JAMZEVRrrDBbrr@WMpAY--cMn)Z2>7'DL%_kQrW)Tj",d-Z
+[/L%)!;lctMZA\4s8N'!m-"EK!;c`q!;c]tbQ%Y9rr;uuqYpZA!!)]js8N'!m/$b^!!(7>rrUCE
+!;?Hm!<)p!MZ@G`s8N)rrrS)YMs:8>!!'.Ts8N(`s*t~>
+g]%:ffDY^LMu3MS;q_0RbYnKAbl%JAMZEVRrrDBbrr@WMpAY--JcGQGrW)Tj",d-Z[/L%)!;lct
+MZA\4s8N'!m-"EK!;c`q!;c]tbQ%Y9rr;uuqYpZA!!)]js8N'!m/$b^!!(7>rrUCE!;?Hm!<)p!
+MZ@G`s8N)rrrS)YMs:8>!!'.Ts8N(`s*t~>
+g]%>^!6kHB!/pgU!o[((g&D1gbQ%Xer;ZcsqZ$Qq!6jg0rr@WMpAY--JcGQG",d-Zbk:u<;ZHgL
+rVultqu6_U!/paSrrDEc#PH<!;i?P6!;c`q!;ZZp!!)!Ws8N)ps8N'!iVifV!;c]tli7%0qYpZA
+!!)Bars/5@Mc5Ol!!)utrr<%Wp&G$lqu6_U!/lF.kPtP^PlH7~>
+g]%>^!6kHB!/pgU!o[((g&D1gbQ%Xer;ZcsqZ$Qq!6jg0rr@WMpAY--cMms>!-PLF",d-Zbk:u<
+;ZHgLrVultqu6_U!/paSrrDEc#PH<!;i?P6!;c`q!;ZZp!!)!Ws8N)ps8N'!iVifV!;c]tli7%0
+qYpZA!!)Bars/5@Mc5Ol!!)utrr<%Wp&G$lqu6_U!/p+AVZ6_!gAh0QPlH7~>
+g]%>^!6kHB!/pgU!o[((g&D1gbQ%Xer;ZcsqZ$Qq!6jg0rr@WMpAY--JcGQG",d-Zbk:u<;ZHgL
+rVultqu6_U!/paSrrDEc#PH<!;i?P6!;c`q!;ZZp!!)!Ws8N)ps8N'!iVifV!;c]tli7%0qYpZA
+!!)Bars/5@Mc5Ol!!)utrr<%Wp&G$lqu6_U!/p+AVZ6_!gAh0QPlH7~>
+gA_R[!,.;7HHaU?H2qXFgA_>EiQM9%bl.PCZiH$\rrS)YMsUKD!.k1DrrBfbs7uZsZiC*5p&G!k
+!;6<jrrDrr!fI&:qu?Zrmf*FVVZ:D^rr;uuqZ$Qqq>^Hp!:9^brrDlprr<&crVultqYpZV!!(7>
+rsHsM!9*tXm&'hsfDbgM!<)rt!!%rMs8N)rrrS)YMh1oks8N(`s*t~>
+gA_R[!,.;7HHaU?H2qXFgA_>EiQM9%bl.PCZiH$\rrS)YMsUKD!.k1DrrBg]rs#TJs8QUemBHTm
+ZiC*5p&G!k!;6<jrrDrr!fI&:qu?Zrmf*FVVZ:D^rr;uuqZ$Qqq>^Hp!:9^brrDlprr<&crVult
+qYpZV!!(7>rsHsM!9*tXm&'hsfDbgM!<)rt!!%rMs8N)rrrS)YMs:8>XT7&.s8N(`s*t~>
+gA_R[!,.;7HHaU?H2qXFgA_>EiQM9%bl.PCZiH$\rrS)YMsUKD!.k1DrrBfbs7uZsZiC*5p&G!k
+!;6<jrrDrr!fI&:qu?Zrmf*FVVZ:D^rr;uuqZ$Qqq>^Hp!:9^brrDlprr<&crVultqYpZV!!(7>
+rsHsM!9*tXm&'hsfDbgM!<)rt!!%rMs8N)rrrS)YMs:8>XT7&.s8N(`s*t~>
+g&D&1q#CGRiS+;9bbtKb!!(7ArrS)YMu*GTMZ@GWs8N(Ms7ZHm^OcF[s8E#lrr^IF!4;\(rrDrr
+!fI&:qu?Zrmf*?%!/pdTrrDoqrrDlprr<&Xrr;uuq>^Hp!9*nVrrDoq"7-!fbkh>FbQ%Y0s8Qa4
+Mu<VT!<)rt!!%rMs8N)rrrS)YMh1oks8N(`s*t~>
+g&D&1q#CGRiS+;9bbtKb!!(7ArrS)YMu*GTMZ@GWs8N(Ms7ZHm^X<&bA,rb3p@bZhrW)Zl"3^`F
+[/Bt(!;lctMZA\4s8N)errQj6Mu<VT!;c`q!;ZZp!!)!Ws8N)ps8N'!iVifV!;c]tli7%0qYpiF
+!!)Bcs(DCjr;ZcsrVult!/pOMrrDrr!fI&:JcFp5rrA;`J,~>
+g&D&1q#CGRiS+;9bbtKb!!(7ArrS)YMu*GTMZ@GWs8N(Ms7ZHm^OcF[s8E#lrr^IF!4;\(rrDrr
+!fI&:qu?Zrmf*?%!/pdTrrDoqrrDlprr<&Xrr;uuq>^Hp!9*nVrrDoq"7-!fbkh>FbQ%Y0s8Qa4
+Mu<VT!<)rt!!%rMs8N)rrrS)YMh1oks8N(`s*t~>
+f`(rqqZ$VSg&D<9!<<)C!!(7As8N'!Mu*GTMZ<bDs8N(Ms+14:rr\/Z!8$uF"/c,tiV``U!;lct
+MZA\4s8N)frr]V.!:9X`rrE*!!8%2LrrDoq"3^`Fp&>!k!;c]tbQ%Y9rVultqYpZj!!(7>rs6gK
+!;6B!!!)B`s8N*!rrgsRMZA(rs8N)rrrS)YMh1oks8N(`s*t~>
+f`(rqqZ$VSg&D<9!<<)C!!(7As8N'!Mu*GTMZ<bDs8N(Ms2b3Ecaj)92$!$Frr\/Z!8$uF"/c,t
+iV``U!;lctMZA\4s8N)frr]V.!:9X`rrE*!!8%2LrrDoq"3^`Fp&>!k!;c]tbQ%Y9rVultqYpZj
+!!(7>rs6gK!;6B!!!)B`s8N*!rrgsRMZA(rs8N)rrrS)YMh1oks8N(`s*t~>
+f`(rqqZ$VSg&D<9!<<)C!!(7As8N'!Mu*GTMZ<bDs8N(Ms+14:rr\/Z!8$uF"/c,tiV``U!;lct
+MZA\4s8N)frr]V.!:9X`rrE*!!8%2LrrDoq"3^`Fp&>!k!;c]tbQ%Y9rVultqYpZj!!(7>rs6gK
+!;6B!!!)B`s8N*!rrgsRMZA(rs8N)rrrS)YMh1oks8N(`s*t~>
+f)Gj=iU#OTrs+J@s8U:C!6kEArr<%WqYpVT!!)Bcrr@WMJcG*:"7/qdHMILBli7%0qu?Zrqu6^r
+!/paSrrDNfrr<%Wqu?Zrs8N(WrVultqYpV1!.+VDrrDoq!b_R[r;Zcsq>UMS!/p^R#E&Rqs8N'!
+Mu3PS!<<'&MuV`9!;66h!TEDEs8N)rrrS)YMh1oks8N(`s*t~>
+f)Gj=iU#OTrs+J@s8U:C!6kEArr<%WqYpVT!!)Bcrr@WMbl8":U"TI0!87CufrP,Tlr*n1q#:H_
+!!(7?s8N)rrrQ+!Mu3PS!:Tsf!!%rSs8N*!rr@uUs8N)qrrQj6HN!mD!;c]sBE3AVs8N)prrS)Y
+Mu*GYMZ@Gjrr<%Wqu?Zrs8N7\s5<qXp&"aiiU$RDrrDrr!fI&:JcFp5rrA;`J,~>
+f)Gj=iU#OTrs+J@s8U:C!6kEArr<%WqYpVT!!)Bcrr@WMJcG*:"7/qdHMILBli7%0qu?Zrqu6^r
+!/paSrrDNfrr<%Wqu?Zrs8N(WrVultqYpV1!.+VDrrDoq!b_R[r;Zcsq>UMS!/p^R#E&Rqs8N'!
+Mu3PS!<<'&MuV`9!;66h!TEDEs8N)rrrS)YMh1oks8N(`s*t~>
+WW*"C[/U(-bQ%XerVult!/p^R!fI$Ym/R(cJcGHD!5F*bp\t?>!!(7>rr_pm!/p^R!E0!rrr^jQ
+!/paSrrDNfrr<%Fr;QqY!!*'!MuE\U!!%rTrr^%:!:9[arr<%Wr;Ql7!!)B`s8N)orrQj6m/6kh
+li7%Ps8N'!HMmdMMZ<bWs,6pWR/iZPrrIH=rr;uuqu6_U!/lF.kPtP^PlH7~>
+WW*"C[/U(-bQ%XerVult!/p^R!fI$Ym/R(cJcGHD!5I:g$H0LTcN'1/cN#irW;ctD!!(7>rr_pm
+!/p^R!E0!rrr^jQ!/paSrrDNfrr<%Fr;QqY!!*'!MuE\U!!%rTrr^%:!:9[arr<%Wr;Ql7!!)B`
+s8N)orrQj6m/6khli7%Ps8N'!HMmdMMZ<bWs,6pWR/iZPrrIH=rr;uuqu6_U!/lF.kPtP^PlH7~>
+WW*"C[/U(-bQ%XerVult!/p^R!fI$Ym/R(cJcGHD!5F*bp\t?>!!(7>rr_pm!/p^R!E0!rrr^jQ
+!/paSrrDNfrr<%Fr;QqY!!*'!MuE\U!!%rTrr^%:!:9[arr<%Wr;Ql7!!)B`s8N)orrQj6m/6kh
+li7%Ps8N'!HMmdMMZ<bWs,6pWR/iZPrrIH=rr;uuqu6_U!/lF.kPtP^PlH7~>
+eGf^Ff<hI"m+hU@;uQ^ubQ%XerVult!/p^R!fI$Ym/R(cJcGHD!5F*bpAY6H!!)B_rrQ+!;u-Fp
+VZ=+&rrd"6!)r7_rr_Tf!8$`?"1/%.m/I"hb^-VriW"i7s8N'"HHc?frr<&+r;Zcs!IDugs8N'!
+[/Bq+li7%;q>UN_!,2<1!b_Smrr3)-!!)Bbrs$\nZiK(bMuN_X;ZPGJrrKL)rr3)e!!(XKrrQ+!
+;h=u3s8N(`s*t~>
+eGf^Ff<hI"m+hU@;uQ^ubQ%XerVult!/p^R!fI$Ym/R(cJcGHD!5I:g#llj_p&Ingp.qffrr^jQ
+!:9U_!`K(tq>UMo!4;_)"DC^6;saJ_"7-!ffC8eBZiC*mrr32HHF*\2s,6jUrr<(Gbl.SA!!'D(
+s8N'"HHc?frr<&+r;Qlc!!(XHrrVNeB`.l3BE7#jrr]V.!:9^b#0_D#!9*s9rr3$u!8%2L!OSd(
+rr_Tf!8%/K!`K(tJcFp5rrA;`J,~>
+eGf^Ff<hI"m+hU@;uQ^ubQ%XerVult!/p^R!fI$Ym/R(cJcGHD!5F*bpAY6H!!)B_rrQ+!;u-Fp
+VZ=+&rrd"6!)r7_rr_Tf!8$`?"1/%.m/I"hb^-VriW"i7s8N'"HHc?frr<&+r;Zcs!IDugs8N'!
+[/Bq+li7%;q>UN_!,2<1!b_Smrr3)-!!)Bbrs$\nZiK(bMuN_X;ZPGJrrKL)rr3)e!!(XKrrQ+!
+;h=u3s8N(`s*t~>
+g].0Os8N'tqu?`UhZ!VEbl.PDbQ%XerVult!/p^R!fI$Ym/QbZJcGcM!5F*bp&>BcBK<Hds8V%k
+;lBEj#jdHLREW$Ob_uH#!fR*;q>g'c%(&qnbfluCm-IYLMp2/"rr<;jMl4eC3G@CKs8N'(m#.dc
+bW0@qrVllVq>gBl#jc5<[*5mjB^GZs%(&qnbfluCm-IYLMp22#$LF/\[*5n8RK*<GqZ$Z@s8)cr
+Mh1p!s7QGWs*t~>
+g].0Os8N'tqu?`UhZ!VEbl.PDbQ%XerVult!/p^R!fI$Ym/QbZJcGcM!5I:g"bcs:s+Q0#rsJ++
+3OJ/Qs5@WiVtg8tm#(k3bd;'-MuE\XMuVc4!:g'tZr9!/bbpBclr-i@bl.SA!!hkKVp*@FB]8jg
+rr<;jMl4eC3G@CMrrD$S!;c^$ltC(>bd;%sm/6klZr9!/bbpBclr-i@bl7VLm$Rj\bd<:rs8V'T
+!!1=DqZ$VSJcG<@p&L?WJ,~>
+g].0Os8N'tqu?`UhZ!VEbl.PDbQ%XerVult!/p^R!fI$Ym/QbZJcGcM!5F*bp&>BcBK<Hds8V%k
+;lBEj#jdHLREW$Ob_uH#!fR*;q>g'c%(&qnbfluCm-IYLMp2/"rr<;jMl4eC3G@CKs8N'(m#.dc
+bW0@qrVllVq>gBl#jc5<[*5mjB^GZs%(&qnbfluCm-IYLMp22#$LF/\[*5n8RK*<GqZ$Z@s8)cr
+Mh1p!s7QGWs*t~>
+g]%_i!4;G!s-Wie[/]fsB]&gjbbtC="3^`Fbl.SA!!%rRrrS)Y!:9aZ!.k1MrrBfbs7?6pp"-RK
+[(u&"rrh]Ip&G'km,\0Kp#591rr3&mm-OZMrrE*!"747Up%eXf!<<'$m**]Hl2LhOiU$=="81X>
+p&=smp$D&ArrVQGon!/"s7QGWs*t~>
+g]%_i!4;G!s-Wie[/]fsB]&gjbbtC="3^`Fbl.SA!!%rRrrS)Y!:9aZ!.k1MrrBgjrrk9DfstYH
+SGrfdf<hH__!L[m"RP+?s8W)bjSo>TiU$7:rrVl[m/6n`!<<'$m**]Hq>^Hps8N2fbfobErrVQG
+m.^M^p#591rr3&mm-OTK!pnn=JcFU,p&L?WJ,~>
+g]%_i!4;G!s-Wie[/]fsB]&gjbbtC="3^`Fbl.SA!!%rRrrS)Y!:9aZ!.k1MrrBfbs7?6pp"-RK
+[(u&"rrh]Ip&G'km,\0Kp#591rr3&mm-OZMrrE*!"747Up%eXf!<<'$m**]Hl2LhOiU$=="81X>
+p&=smp$D&ArrVQGon!/"s7QGWs*t~>
+g]%;4iVifV!!(7ArrAtTrrMHdqofD8!!&q@bk;!L!/p^R!fI%Wm/R(cJcGHD!5F*bWrN)!oDegj
+JcD&9rrA;`J,~>
+g]%;4iVifV!!(7ArrAtTrrMHdqofD8!!&q@bk;!L!/p^R!fI%Wm/R(cJcGHD!5IFk"QM?>!82r'
+dJs4HoDegjJcD&9rrA;`J,~>
+g]%;4iVifV!!(7ArrAtTrrMHdqofD8!!&q@bk;!L!/p^R!fI%Wm/R(cJcGHD!5F*bWrN)!oDegj
+JcD&9rrA;`J,~>
+g]%83rVlrC!!)rs!R0N]rrDEX!!MZgVZ;YOrrS)YMsUKD!.k1DrrBfbs/Q,!!;$6j!.k09s8N(`
+s*t~>
+g]%83rVlrC!!)rs!R0N]rrDEX!!MZgVZ;YOrrS)YMsUKD!.k1DrrBgirrL'%JcF*srrDZjrr@WM
+QN-sbPlH7~>
+g]%83rVlrC!!)rs!R0N]rrDEX!!MZgVZ;YOrrS)YMsUKD!.k1DrrBfbs/Q,!!;$6j!.k09s8N(`
+s*t~>
+g]%83rVlrC!/pdT!R0o`rr^IF!6kEA!mCXCqYpUq!2o2`rr@WMpAY--JcDbMrrDZjrr@WMQN-sb
+PlH7~>
+g]%83rVlrC!/pdT!R0o`rr^IF!6kEA!mCXCqYpUq!2o2`rr@WMpAY--i;WiFc[l,@s8N)js8N(M
+s-E]b!0mM6~>
+g]%83rVlrC!/pdT!R0o`rr^IF!6kEA!mCXCqYpUq!2o2`rr@WMpAY--JcDbMrrDZjrr@WMQN-sb
+PlH7~>
+g]%7erVlqW!/pdT!N5VDrr^IF!6kB@!E0!ps8N'!iU$UE!.k0$s.TGtout2O!2n'-q>U]mbeO2Y
+Vp+LYs-`oe!0mM6~>
+g]%7erVlqW!/pdT!N5VDrr^IF!6kB@!E0!ps8N'!iU$UE!.k1"rr]A'25,U$df0RFbeO2YVp+N'
+rs/5@^]4A4bj9o\RK*9ePlH7~>
+g]%7erVlqW!/pdT!N5VDrr^IF!6kB@!E0!ps8N'!iU$UE!.k0$s.TGtout2O!2n'-q>U]mbeO2Y
+Vp+LYs-`oe!0mM6~>
+g]%MV[/^0m!!)!VrrL?%f`)&t!!(7@rrTP-fDPXMf)U`ps8N(Ms+13DrrD$T!!(7=rrD$T!!(5o
+s-`oe!0mM6~>
+g]%MV[/^0m!!)!VrrL?%f`)&t!!(7@rrTP-fDPXMf)U`ps8N(Ms4%&NfolDYJcF0u!9*eT!6k9=
+!9*eT!6g#oRK*9ePlH7~>
+g]%MV[/^0m!!)!VrrL?%f`)&t!!(7@rrTP-fDPXMf)U`ps8N(Ms+13DrrD$T!!(7=rrD$T!!(5o
+s-`oe!0mM6~>
+g]%9?rb2<3!/pjV"3bEYMqJ%3ZiC*(qu6[qB`.l2BN+3rrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+g]%9?rb2<3!/pjV"3bEYMqJ%3ZiC*(qu6[qB`.l2BN+3rrr@WMpAY--hZ!WMm=G:gs+13us8N(`
+s*t~>
+g]%9?rb2<3!/pjV"3bEYMqJ%3ZiC*(qu6[qB`.l2BN+3rrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+g&D/4!!%rVs82ism+_R9!!)!Wrs7RDB\3:9BK>&:s8N(Ms7ZHm^OcE9s+13Ps8N(`s*t~>
+g&D/4!!%rVs82ism+_R9!!)!Wrs7RDB\3:9BK>&:s8N(Ms7ZHm^Z#4mP5sWos+13$s3UfG!0mM6~>
+g&D/4!!%rVs82ism+_R9!!)!Wrs7RDB\3:9BK>&:s8N(Ms7ZHm^OcE9s+13Ps8N(`s*t~>
+R/[<@^o,!"kl:Y_JcGHD!5F*bJcC<$XoJD$PlH7~>
+R/[<@^o,!"kl:Y_JcGHD!5ILm"#U&Y\Ujd3s+13ts8N(`s*t~>
+R/[<@^o,!"kl:Y_JcGHD!5F*bJcC<$XoJD$PlH7~>
+JcGTHrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+JcGTHrr@WMpAY--iVs#R`-(Hus+13$s3^lH!0mM6~>
+JcGTHrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+JcGTHrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+JcGTHrr@WMpAY--ir9#3JcC<$JcF!prrA;`J,~>
+JcGTHrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+jSo7Ym,n<K[,JInrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+jSo7Ym,n<K[,JInrr@WMpAY--j8T8.!)K`jJcC<$JcF*srrA;`J,~>
+jSo7Ym,n<K[,JInrr@WMpAY--JcC<$JcDkPrrA;`J,~>
+jSo;SB[#`@!pm:P[K$7,JcGHD!5F*bT)\fVm/I+Fm-=TOiTu-q_uK`:PlH7~>
+jSo;SB[#`@!pm:P[K$7,JcGHD!5IRo"65(821beCs8MBOrrM*FlMgnDm",2Ss8N(`s*t~>
+jSo;SB[#`@!pm:P[K$7,JcGHD!5F*bT)\fVm/I+Fm-=TOiTu-q_uK`:PlH7~>
+j8T5S;gRfsrrUDC[']l5!.k0$s3L`=!!.DQe,T@H!/p=G!9*kVo)A^6rVllVr;c]o!6g#obQ%SB
+PlH7~>
+j8T5S;gRfsrrUDC[']l5!.k1#rrMN?JcG]Kp&G,>[+#'R!!%rGrrD$V!:p-ibl.PAiV`cQrrC8o
+s3(HB!0mM6~>
+j8T5S;gRfsrrUDC[']l5!.k0$s3L`=!!.DQe,T@H!/p=G!9*kVo)A^6rVllVr;c]o!6g#obQ%SB
+PlH7~>
+iVs"J!/o(krrh\qBN*-]s8N(Ms+13rs8U:C[/L%*[/S8P[#4o_[+50ZbeR-WMspZKous<6!;$3l
+;ZKbqrri#=VZ6_orrQ+!;h=tms8N(`s*t~>
+iVs"J!/o(krrh\qBN*-]s8N(Ms4I>Q`0954s82irbQ,$L!!'D*bQP;2!)p8TrrgQ];ZMaErri#=
+VZ6_grrQ+!;uZe"ous<6!;lct;ZKaIs31NC!0mM6~>
+iVs"J!/o(krrh\qBN*-]s8N(Ms+13rs8U:C[/L%*[/S8P[#4o_[+50ZbeR-WMspZKous<6!;$3l
+;ZKbqrri#=VZ6_orrQ+!;h=tms8N(`s*t~>
+i;Wf$rVutsbkM,AiO"LC!,1>ss8N(Ms7ZHm^OcF;s8E#qrrh[K!)r77rrS)YMsUKD!;$6i!;lfr
+!;lfq!;c]qb^ofDs8N(`s*t~>
+i;Wf$rVutsbkM,AiO"LC!,1>ss8N(Ms7ZHm^Z>CsA,lUnJcGQGrW)iq"RJ,K;s`'7!fI&:m/R(c
+oDediqu?Zrqu?WqqYpQ>JcF7"rrA;`J,~>
+i;Wf$rVutsbkM,AiO"LC!,1>ss8N(Ms7ZHm^OcF;s8E#qrrh[K!)r77rrS)YMsUKD!;$6i!;lfr
+!;lfq!;c]qb^ofDs8N(`s*t~>
+hu<cEZtTC<qhkH#r;ZkVbcq-I!.k1DrrBfbs4IAN!;c]ti;`jkec,]/!/p4DrrDZj!o]'rqu?Zr
+qu6`VMrFO4!/lF.eGoOKPlH7~>
+hu<cEZtTC<qhkH#r;ZkVbcq-I!.k1DrrBgprr_u5AAj'!q>^EoqYpZV!!$]_rrS)YMsUKD!;$3l
+iJZ[ls8N)rrrV/;iVNQSMh1oXs8N(`s*t~>
+hu<cEZtTC<qhkH#r;ZkVbcq-I!.k1DrrBfbs4IAN!;c]ti;`jkec,]/!/p4DrrDZj!o]'rqu?Zr
+qu6`VMrFO4!/lF.eGoOKPlH7~>
+h#@KC^l+-J!!?/XVp):Crr@WMpAY--JcFC&rW)corVurWf)Gf0!/p4DrrD?arrDTh!!%TMeGoOK
+PlH7~>
+h#@KC^l+-J!!?/XVp):Crr@WMpAY--jo5>JJcGECrW)corVurWf)Gf0!/p4DrrD?arrDTh!!%TM
+eGoOKPlH7~>
+h#@KC^l+-J!!?/XVp):Crr@WMpAY--JcFC&rW)corVurWf)Gf0!/p4DrrD?arrDTh!!%TMeGoOK
+PlH7~>
+JcGTHrr@WMpAY--JcFC&rW)corVurBf)Gf0!/p4DrrD?arrDWi!T=$0s4%)K!0mM6~>
+JcGTHrr@WMpAY--k5PSX!)L0!JcGNFrW)corVurBf)Gf0!/p4DrrD?arrDWi!T=$0s4%)K!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)corVurBf)Gf0!/p4DrrD?arrDWi!T=$0s4%)K!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)corVurMf)Gf0!/p4DrrD?arrDWi!K-r/s4%)K!0mM6~>
+JcGTHrr@WMpAY--k5PSOK`D,5JcGNFrW)corVurMf)Gf0!/p4DrrD?arrDWi!K-r/s4%)K!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)corVurMf)Gf0!/p4DrrD?arrDWi!K-r/s4%)K!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)fp"5s4[B_hZ4^f-/LHDgH5rrD$WMZRRMbkM,CbbpAsbl<S$Mu3MS
+iVn`:BT(+1s8N*!rrf]eMl5q>rri#=b_qDVs8N)trri#=b_qDXrr_5<!!)uArr;lgrVuihJcG!7
+rrA;`J,~>
+JcGTHrr@WMpAY--jSo8J`.@s_s8E#prr_3[!,23.#/F/qMgD;oqu6ZTreghkMp1qq#gB3)Vp,1!
+!/paS!9*p8!bdM9q>^Hps8N5/Mi4M"r;Qombfl!'qu?ZrrVm#nbfl!'rVluYMZ<bUbl7Y>p&4ph
+on!/-s8N(`s*t~>
+JcGTHrr@WMpAY--JcFC&rW)fp"5s4[B_hZ4^f-/LHDgH5rrD$WMZRRMbkM,CbbpAsbl<S$Mu3MS
+iVn`:BT(+1s8N*!rrf]eMl5q>rri#=b_qDVs8N)trri#=b_qDXrr_5<!!)uArr;lgrVuihJcG!7
+rrA;`J,~>
+JcGTHrr@WMpAY--JcFC&rW)fp"&f1"m/$_eBE6Zas5<rVr;QiW!9*qW!iH$Vq>Ub"!6kK%HAd[]
+Mu<SVi;hj9rrT(uMu*JR!!iO&bl@^@!2oeq!9*kVqu?ZrrVllVr;cis!2oVms8N)XqZ-Wq!/pdU
+JcG!7rrA;`J,~>
+JcGTHrr@WMpAY--kPkVDU$[F2p&G!kqYpXr!!)B^rs*3;fDkm0!)rgq!oX.<rr3%t!/p[Q#u^iJ
+s5A9^MZA\5rrV-ZiVriYVZ;YOs8N'(s&7/As/,jprVllVr;c`prrE#t!9*kVrr2trq#LHp!9*eT
+rr2tVr;_EKl2Ub`PlH7~>
+JcGTHrr@WMpAY--JcFC&rW)fp"&f1"m/$_eBE6Zas5<rVr;QiW!9*qW!iH$Vq>Ub"!6kK%HAd[]
+Mu<SVi;hj9rrT(uMu*JR!!iO&bl@^@!2oeq!9*kVqu?ZrrVllVr;cis!2oVms8N)XqZ-Wq!/pdU
+JcG!7rrA;`J,~>
+JcGTHrr@WMJcEsorW)os"RO?G!2oYm!fI'&rVlqs!4;_)!fI%WrVlpt!4;\("8,SkiVicYbQ%X$
+r;QhV!)rjr!`K*+qu?Zr!E75@rrS)YMu<SVo`,!hs8N)rrrVin!;lfr!;ZWsbQ%Y%r;QhV!47=W
+kl:Y_PlH7~>
+JcGTHrr@WMg]%A>!!%_(s7ZKl!<)p#m*',CVtp>oMZD!"rrT(u[/L"+MZ?]SrrQ+![/Bq+oi"fJ
+rVluD!!%rTrrS)Y;uQ^t;ZO3%s8N'";p>4?!fI&:r;Qik!!)orrrDrr!qcNnqu?Zrq>UQ@!!)!U
+rrS)Y["88@s8N(`s*t~>
+JcGTHrr@WMJcEsorW)os"RO?G!2oYm!fI'&rVlqs!4;_)!fI%WrVlpt!4;\("8,SkiVicYbQ%X$
+r;QhV!)rjr!`K*+qu?Zr!E75@rrS)YMu<SVo`,!hs8N)rrrVin!;lfr!;ZWsbQ%Y%r;QhV!47=W
+kl:Y_PlH7~>
+JcGTHrr@WMJcEsorW)nT"&f1um.pY_bQ)tdrrG,YrVlqe!'1#X!pfncr;QhV!4;Y'!dXj)r;Qhd
+!'1#X!pfncqu?Zr!:9U_!`K*+r;Zcsqu?ZrqZ$Qqqu?Zrq#:DR!/pdT!R-IQs6'F^!0mM6~>
+JcGTHrr@WMh#@NEp:3t_JcGHDrW)nT"&f1um.pY_bQ)tdrrG,YrVlqe!'1#X!pfncr;QhV!4;Y'
+!dXj)r;Qhd!'1#X!pfncqu?Zr!:9U_!`K*+r;Zcsqu?ZrqZ$Qqqu?Zrq#:DR!/pdT!R-IQs6'F^
+!0mM6~>
+JcGTHrr@WMJcEsorW)nT"&f1um.pY_bQ)tdrrG,YrVlqe!'1#X!pfncr;QhV!4;Y'!dXj)r;Qhd
+!'1#X!pfncqu?Zr!:9U_!`K*+r;Zcsqu?ZrqZ$Qqqu?Zrq#:DR!/pdT!R-IQs6'F^!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)lr"1/&AiVNTS!!%rSrrS)Yp&4mkVsO?]rrE#t!nRDPqYpVT!/paS
+!N5;^s8N)rs8N)qrrTP-B`.o1!;lfr!;c`q!;lfr!;QQqbQ%Y@rr@u@s8-p?j8]/VFT]S^s.T@5
+"2t6>`;F`[U&Y/2qfVr=!9<s!rr;k<!os=\qfN"Zs8SejFT]S^s2=hX!28'FrrA;`J,~>
+JcGTHrr@WMpAY--l2Lfq2=5tpoDedir;Ql+!,1?fs8N'!Mu3MUMZEGKrrK%ar;ZcsrVlrN!!)lq
+!fI&:qu6\pm/6n`!;lfr!;c]sZiFe;s8N)rs8N)qs8N)rs8N)orrUCE!;uisMh1ojs8N(`s*t~>
+JcGTHrr@WMpAY--JcFC&rW)lr"1/&AiVNTS!!%rSrrS)Yp&4mkVsO?]rrE#t!nRDPqYpVT!/paS
+!N5;^s8N)rs8N)qrrTP-B`.o1!;lfr!;c`q!;lfr!;QQqbQ%Y@rr@u@s8-p?j8]/VFT]S^s.T@5
+"2t6>`;F`[U&Y/2qfVr=!9<s!rr;k<!os=\qfN"Zs8SejFT]S^s2=hX!28'FrrA;`J,~>
+JcGTHrr@WMpAY--JcFC&rW)iq",d.XiV`]Xli7%0qu6_U!8$rErrE#t!fI%lqYpVT!/pLLrrDrr
+rrDoq"5s4[p&4pj!;lfr!;c`q!;lfr!;HNn!!'D)rr@u@s8)ctg&M*L!!BA's)n5>"0MV'Xo&/$
+FoVKDqZ-Zr!875Lrr;iq!nmVRqZ$`#s8R6>!!BA's/l2!!-QrorrA;`J,~>
+JcGTHrr@WMpAY--l2LjL!+beSs7H?j!;lcuMZ?]7r;Qlc!!(7?rrS)YfCo7E!<)p!MZ@GerrS)Y
+MtI&L!;lfr!;c]ti;`lNrVultqu?ZrqZ$Qqqu?Zrp](6n!4;_)!/lF.k5YG]PlH7~>
+JcGTHrr@WMpAY--JcFC&rW)iq",d.XiV`]Xli7%0qu6_U!8$rErrE#t!fI%lqYpVT!/pLLrrDrr
+rrDoq"5s4[p&4pj!;lfr!;c`q!;lfr!;HNn!!'D)rr@u@s8)ctg&M*L!!BA's)n5>"0MV'Xo&/$
+FoVKDqZ-Zr!875Lrr;iq!nmVRqZ$`#s8R6>!!BA's/l2!!-QrorrA;`J,~>
+JcGTHrr@WMpAY--JcFC&rW)iq"7-!fMu<SWli7$!qhkMS!9*kU#PH<!;i?P6!<)rt!!%rRrrS)Y
+Mu*GYour=mMi.Q8qu?Zrq>^Hp!9*nVrrDrrrrDoqrrDrrrrDfn!iH$Err3#7iTU==!!:jRs8)cu
+XoJEDqu?i$s8T5!!!@BDs/l.us8N)PqZ-WqqZ$]Ns8Vrr"0MV'Fo24AXoJF'qu?_>f`1sOPlH7~>
+JcGTHrr@WMpAY--m/I:CPQ1Z::[N`5o`+mjqu6cb!!%rTrr_Tf!,27f!`K*Xr;R#pb_oDXMZ<bU
+s8N'!Mu*GTMZA\3rs/5@Mc5Ol!!)orrrDlprr<&XrVultqu?ZrqZ$Qqqu?Zrp\t;m!.+YE!PmZF
+s5s@]!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)iq"7-!fMu<SWli7$!qhkMS!9*kU#PH<!;i?P6!<)rt!!%rRrrS)Y
+Mu*GYour=mMi.Q8qu?Zrq>^Hp!9*nVrrDrrrrDoqrrDrrrrDfn!iH$Err3#7iTU==!!:jRs8)cu
+XoJEDqu?i$s8T5!!!@BDs/l.us8N)PqZ-WqqZ$]Ns8Vrr"0MV'Fo24AXoJF'qu?_>f`1sOPlH7~>
+JcGTHrr@WMpAY--JcFC&rW)fprW)lr"5s4[bk:u=m&'hsfDbgM!<)rt!!%rRrrS)YMu<SXm&'hs
+fDbgM!;lfr!;ZZp!!)Bas8N)rs8N)qs8N)rs8N)nrs%'T!9*tXB]oEmXTInis8/o#g&M)jr2g(S
+s8UdMXTQNAs4R:Os8N)dqlTktqlKqes8Vtu"53_S`;H_>g&M**r2ft;f`1sOPlH7~>
+JcGTHrr@WMpAY--m/I6"!0dHVp4<88s8E#ps8E#rrr_3[!6k-9"RN#dB\37`rrE#trr<%WqYpVT
+!/pdT"RN#dB\37`rrDrrrrDlprr<&crVultqu?ZrqZ$Qqqu?Zrp\tHL!!)!Xs(Hu`jo>>\PlH7~>
+JcGTHrr@WMpAY--JcFC&rW)fprW)lr"5s4[bk:u=m&'hsfDbgM!<)rt!!%rRrrS)YMu<SXm&'hs
+fDbgM!;lfr!;ZZp!!)Bas8N)rs8N)qs8N)rs8N)nrs%'T!9*tXB]oEmXTInis8/o#g&M)jr2g(S
+s8UdMXTQNAs4R:Os8N)dqlTktqlKqes8Vtu"53_S`;H_>g&M**r2ft;f`1sOPlH7~>
+JcGTHrr@WMpAY--JcFC&rW)fprVurWrVlud!!(79rrQj6Mu<VT!<)rt!!%rRrrS)YMu<SVBE3tg
+s8N)rs8N)ps8N'!iVifV!;lfr!;c`q!;lfr!<)otVu-JtH2t>Pf<g,/jo>>\PlH7~>
+JcGTHrr@WMpAY--mf*INs6VZDfn'1ns8E#ps8DuuiVicYli7%0p&>),!/pdTrrE#trr<%WqYpVT
+!/pdT!b_Rlr;Zcsqu?Zrq>^Hp!9*nVrrDrrrrDoqrrDrrrrE#t!2o_o"aU0Us4=W/s5j:\!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)fprVurWrVlud!!(79rrQj6Mu<VT!<)rt!!%rRrrS)YMu<SVBE3tg
+s8N)rs8N)ps8N'!iVifV!;lfr!;c`q!;lfr!<)otVu-JtH2t>Pf<g,/jo>>\PlH7~>
+JcGTHrr@WMpAY--JcFC&rW)fprVurBr;Zcs!5S=."1/%.m/6n`!<<'%fDga/HM[XCMZA\6rr]V.
+!:9X`rrE*!!8%5MrrDoq"5s4[p&4pj!;lfr!;c`q!;lfr!<)ot!;ld"bQ(TAB\.h8jo>>\PlH7~>
+JcGTHrr@WMpAY--n,EQb!71]*Tn375s8E#ps8Duubl%M@!!'h.rr]V.!:9X`rrE*!"P<[3!.+MA
+!fI&:rVlu,!!)B`s8N*!rrC[Ms8N)qrr_3[!;6<jrrDrrrrDoqrrDrrrrE#t!!)or"j?sFs(L#8
+s5j:\!0mM6~>
+JcGTHrr@WMpAY--JcFC&rW)fprVurBr;Zcs!5S=."1/%.m/6n`!<<'%fDga/HM[XCMZA\6rr]V.
+!:9X`rrE*!!8%5MrrDoq"5s4[p&4pj!;lfr!;c`q!;lfr!<)ot!;ld"bQ(TAB\.h8jo>>\PlH7~>
+JcGTHrr@WMpAY--JcFC&rW)fprVurBrr3,[s,-kjqYpcYm/R(c!/paSrrE*!"H3<=!!)lq!fI&:
+rVult!/paSrrE*!!/pjVrrDoq!fI&)r;Zcsqu?ZrqZ$Qqqu?ZrrVlitqYpYD!5OMDs5a4[!0mM6~>
+JcGTHrr@WMpAY--o)Ap?PP2op2<08fmf37dqZ$Np!6kHB"QBB=!,26/#3"qKrr<%Wqu?Zrs8N4[
+s5<qXqYpVT!/pgUrr<%Wqu?Zrs8N(Wrr;uuqYpVT!.+SCrrDrrrrDoqrrDrrrrE#t!!)lq"*ss_
+Mh1ohs8N(`s*t~>
+JcGTHrr@WMpAY--JcFC&rW)fprVurBrr3,[s,-kjqYpcYm/R(c!/paSrrE*!"H3<=!!)lq!fI&:
+rVult!/paSrrE*!!/pjVrrDoq!fI&)r;Zcsqu?ZrqZ$Qqqu?ZrrVlitqYpYD!5OMDs5a4[!0mM6~>
+W;d(;MZ<`UMrFO4!fNu#rr3)Zb\55ds8N(Ms+13os8E#prrY7]!2ohr"cNE\MZDB+rs!fBs8N'!
+HMmdMMZ<bWs,6pWR/jVlrr_Tf!/pgUrr<%Fr;QqY!!*'!MuNbV!!%rTrr_3[!:9X`rrDrrrrDoq
+rrDrr##bNgs8VEcqYpZ)!!)A:s5a4[!0mM6~>
+W;d(;MZ<`UMrFO4!fNu#rr3)Zb\55ds8N(Ms6BUkj.Xg!P5rr/XYo-is6fpd!;c]t3<0&Wrr3.[
+s8RuWfDGRPHM.=<!!%?CrsFYa!<<(Ws8SJe[/Bq+li7$DrVult!.+SC"cE?\s8S#Vs8N'!Mu<SW
+i;`lEr;Zcsqu?ZrqZ$Qqqu6k!!:9acli?n^"1/%.m",2ts8N(`s*t~>
+W;d(;MZ<`UMrFO4!fNu#rr3)Zb\55ds8N(Ms+13os8E#prrY7]!2ohr"cNE\MZDB+rs!fBs8N'!
+HMmdMMZ<bWs,6pWR/jVlrr_Tf!/pgUrr<%Fr;QqY!!*'!MuNbV!!%rTrr_3[!:9X`rrDrrrrDoq
+rrDrr##bNgs8VEcqYpZ)!!)A:s5a4[!0mM6~>
+fDbp=f@U$%!TE_+s8Ru]bl@^e!!%rSrr@uR!!%rBs8N(Ms+13prrD$W!!)!Trr]V.!/pjV"]PI$
+lr.TqrrKL)rr3)-!!)Bbrs$\nZiK(bMuN_X;ZPGJrrd"6!)r7`rr]V.!:9^b#0_D#!9*s9rr3'#
+[!KsprrQ+![/Bq+li7%;rVlud!!(XKrr_Tf!8%/K#,_I.s8TI5q>UHqMh1ogs8N(`s*t~>
+fDbp=f@U$%!TE_+s8Ru]bl@^e!!%rSrr@uR!!%rBs8N(Ms6fmrm@g6RcN'1/cN'[=s6YC;mf*:G
+rVurWqu6c*!!%rVrrl@$s6NZtr;Qf)VuH\uZiC*mrr32HHF*\2s,6mV!`K*NrVm"6;ZKb_rr3)-
+!!)Bbrs$\nZiK(bMuN_Y!47'rrVlpt!4;\("7-!ffDY^Oli7%;r;Qlc!!(XKrs#A$[/^05[/'_&
+!/lF.j8],ZPlH7~>
+fDbp=f@U$%!TE_+s8Ru]bl@^e!!%rSrr@uR!!%rBs8N(Ms+13prrD$W!!)!Trr]V.!/pjV"]PI$
+lr.TqrrKL)rr3)-!!)Bbrs$\nZiK(bMuN_X;ZPGJrrd"6!)r7`rr]V.!:9^b#0_D#!9*s9rr3'#
+[!KsprrQ+![/Bq+li7%;rVlud!!(XKrr_Tf!8%/K#,_I.s8TI5q>UHqMh1ogs8N(`s*t~>
+g&D)g;uQdrrrV.m[,(``^f/&Irr^IF!/pdT!/paT!E75,s8N(Ms7ZHm^OcF>s7cTlrs"A]!:9`D
+_#F?=ltC(>bd<:rr;R24;`W(GVi0p.;cAUurr38jR/jV<[#<.drVuqVrr3D6;`W(GVi0p.;cAUu
+rr3:'m-KY.bfja6iVicViVNTUm,@gA!posGqZ$W_rr3/gBE5E`B__T.BXE?jj8],ZPlH7~>
+g&D)g;uQdrrrV.m[,(``^f/&Irr^IF!/pdT!/paT!E75,s8N(Ms7ZHm^]"0A`.e6k!&afV!)NXg
+:T]3JmJlq]r;QtZ!!)BcMno>l#OH,;[*5n8RJd'nZr9!/bbpBclr-i@bl7VJm$Rj\bd<;PMuE\V
+MuN_bZr9!/bbpBclr-i@bl7VK;s`k/Vp*@uB]8pi!9*eT!USeB!!;NeiVNTTm/I"glt?C+b\6eO
+!GJiks5X.Z!0mM6~>
+g&D)g;uQdrrrV.m[,(``^f/&Irr^IF!/pdT!/paT!E75,s8N(Ms7ZHm^OcF>s7cTlrs"A]!:9`D
+_#F?=ltC(>bd<:rr;R24;`W(GVi0p.;cAUurr38jR/jV<[#<.drVuqVrr3D6;`W(GVi0p.;cAUu
+rr3:'m-KY.bfja6iVicViVNTUm,@gA!posGqZ$W_rr3/gBE5E`B__T.BXE?jj8],ZPlH7~>
+g]%KEBE1thM`L_8s/4`R",d-Z[/L%(!;uj#MrD%@[,L3Jrr@WMpAY--JcEso"SL!GVr@LP!pnn=
+q#:HhiU$7:rrVl[m/$_bm,@X;s8MB]rr_rQm.LAX!qkpHq>UQim,@WmrrMKFp\t5,JcFa0rrA;`
+J,~>
+g]%KEBE1thM`L_8s/4`R",d-Z[/L%(!;uj#MrD%@[,L3Jrr@WMpAYW;j-/0rK`Kg+K`L05Tp('-
+gA_<Kbd=;,qYpW`iV!!G"81X>p&=smp$D&Arrh]Ip&G'km/$_ap#591rr3&mm-OQJ"82$>p"]QJ
+m,@^=!,-r`irB#YPlH7~>
+g]%KEBE1thM`L_8s/4`R",d-Z[/L%(!;uj#MrD%@[,L3Jrr@WMpAY--JcEso"SL!GVr@LP!pnn=
+q#:HhiU$7:rrVl[m/$_bm,@X;s8MB]rr_rQm.LAX!qkpHq>UQim,@WmrrMKFp\t5,JcFa0rrA;`
+J,~>
+g]%>^!4;b*!/paS!/o_6",d-Z[/L%(!;uisMrOd:!.k1DrrBfbs+13prr@t.s5O(Y!0mM6~>
+g]%>^!4;b*!/paS!/o_6",d-Z[/L%(!;uisMrOd:!.k1DrsQT[!29G2!3Q:>L$aHkJcFC&!/lF.
+irB#YPlH7~>
+g]%>^!4;b*!/paS!/o_6",d-Z[/L%(!;uisMrOd:!.k1DrrBfbs+13prr@t.s5O(Y!0mM6~>
+g]%:fm/?qaMu3MT[-Z]M!pki5rVlud!!#sqrr@u:s8N(Ms7ZHm^OcE9s3q#Jbl7VC^s%B0irB#Y
+PlH7~>
+g]%:fm/?qaMu3MT[-Z]M!pki5rVlud!!#sqrr@u:s8N(Ms7lU#pA_o$!+c,sFi8k2JcFI(s31KB
+!Plp1s5O(Y!0mM6~>
+g]%:fm/?qaMu3MT[-Z]M!pki5rVlud!!#sqrr@u:s8N(Ms7ZHm^OcE9s3q#Jbl7VC^s%B0irB#Y
+PlH7~>
+g]%83r;QbTqu6]@m+D=?MZ<bDr;QbTirB#YJcGHD!9o(7JcF7"#2oO^bl@]VJcF^/rrA;`J,~>
+g]%83r;QbTqu6]@m+D=?MZ<bDr;QbTirB#YJcGNF"h?L.c\7R6s+14%rs%E^!6kKCBS$3Bs8N(`
+s*t~>
+g]%83r;QbTqu6]@m+D=?MZ<bDr;QbTirB#YJcGHD!9o(7JcF7"#2oO^bl@]VJcF^/rrA;`J,~>
+g]%83r;QbTqu6](iS"55i;`kbqu6kYs4:0L!4:tirr@WMJcC<$aSuJ;!.+#);rN<-iW&oXPlH7~>
+g]%83r;QbTqu6](iS"55i;`kbqu6kYs4:0L!4:tirr@WMq#:Gu2#q0<s+14#rs&,rHL1<'iIV$f
+s8N(`s*t~>
+g]%83r;QbTqu6](iS"55i;`kbqu6kYs4:0L!4:tirr@WMJcC<$aSuJ;!.+#);rN<-iW&oXPlH7~>
+g]%:ffDY^LMu3MS;q_0QiJR]OqZ$SR#,h.ooi"f5lMpkaJcGHD!7cZ#JcF4!"P6SZ;qHU#i;`fW
+PlH7~>
+g]%:ffDY^LMu3MS;q_0QiJR]OqZ$SR#,h.ooi"f5lMpkaJcGHD!Lqbns+14"rrgqPZr>S-s5<qW
+!0mM6~>
+g]%:ffDY^LMu3MS;q_0QiJR]OqZ$SR#,h.ooi"f5lMpkaJcGHD!7cZ#JcF4!"P6SZ;qHU#i;`fW
+PlH7~>
+g]%>^!6kHB!/pgU!o[((g].82!]c1GqYpSSbl%JB3<8%(s8N(Ms7ZHm^OcE9s3grIon!/"s8N(`
+s*t~>
+g]%>^!6kHB!/pgU!o[((g].82!]c1GqYpSSbl%JB3<8%(s8N(Ms7uZsg!B]5JcC<$df9@?JcFU,
+rrA;`J,~>
+g]%>^!6kHB!/pgU!o[((g].82!]c1GqYpSSbl%JB3<8%(s8N(Ms7ZHm^OcE9s3grIon!/"s8N(`
+s*t~>
+gA_R[!,.;7HHaU?H2qXFf`)'?H2rm#rrC:?rrS)Y!:0[b!.k0$s+13$s.TJm!0mM6~>
+gA_R[!,.;7HHaU?H2qXFf`)'?H2rm#rrC:?rrS)Y!:0[b!.k1Grr[rT26DH0JcC<$XoJD$PlH7~>
+gA_R[!,.;7HHaU?H2qXFf`)'?H2rm#rrC:?rrS)Y!:0[b!.k0$s+13$s.TJm!0mM6~>
+g&D&1q#CGRiR\#3lo>&Ep%JCfZiC*Xm/QbZJcC<$JcC<$ZiB_!PlH7~>
+g&D&1q#CGRiR\#3lo>&Ep%JCfZiC*Xm/QbZK)Yr!P;Tn%s+13$s0ht$!0mM6~>
+g&D&1q#CGRiR\#3lo>&Ep%JCfZiC*Xm/QbZJcC<$JcC<$ZiB_!PlH7~>
+f`(rqqZ$VSe,KN.!!&qjrr^IF!2o2`p&K[Ds8N);JcC<$JcE1Yp&L?WJ,~>
+f`(rqqZ$VSe,KN.!!&qjrr^IF!2o2`p&K[Ds8N)/JcC<$JcE1Yp&L?WJ,~>
+f`(rqqZ$VSe,KN.!!&qjrr^IF!2o2`p&K[Ds8N);JcC<$JcE1Yp&L?WJ,~>
+f)Gj=iU#ONrr^IF!)rms!jnllr;QlC!!'Cms8N(Ms7ZHm^OcE9s+13Ps8N(`s*t~>
+f)Gj=iU#ONrr^IF!)rms!jnllr;QlC!!'Cms8N(Ms8)`uTp*h&^OcE9s+13Ps8N(`s*t~>
+f)Gj=iU#ONrr^IF!)rms!jnllr;QlC!!'Cms8N(Ms7ZHm^OcE9s+13Ps8N(`s*t~>
+cMmn;hu<f1BN+9qrrC:B!<<'$^]4AAr;QlC!!&q`s8N(Ms7ZHm^OcESrrM*FJcD#8rrA;`J,~>
+cMmn;hu<f1BN+9qrrC:B!<<'$^]4AAr;QlC!!&q`s8N(Ms8)cp!!04:JcD5>!TEBrs-<Wa!0mM6~>
+cMmn;hu<f1BN+9qrrC:B!<<'$^]4AAr;QlC!!&q`s8N(Ms7ZHm^OcESrrM*FJcD#8rrA;`J,~>
+cMmkEhu<dl!!&GbrrC:B!<<'$^]4A&r;QlC!!'h$s8N(Ms7ZHm^OcF-s7?9kVs43]bl%J@iV`c(
+rrC8os2Y-@_uKe%s*t~>
+cMmkEhu<dl!!&GbrrC:B!<<'$^]4A&r;QlC!!'h$s8N(Ms8)`up;D[F^OcF-s7?9kVs43]bl%J@
+iV`c(rrC8os2P*=!0mM6~>
+cMmkEhu<dl!!&GbrrC:B!<<'$^]4A&r;QlC!!'h$s8N(Ms7ZHm^OcF-s7?9kVs43]bl%J@iV`c(
+rrC8os2Y-@_uKe%s*t~>
+ci4%)!8mhU!!%rTrs?I@!,2E4f2JU?r;QkW!!)!Es8N(Ms7ZHm^OcF-s8U:C[/L%*[/A,MVZ9Z&
+m/I,c!)rjr"SL!:!!(II!`K(tJcEjl!3Q5#PlH7~>
+ci4%)!8mhU!!%rTrs?I@!,2E4f2JU?r;QkW!!)!Es8N(Ms82frmJ[%b^OcF-s8U:C[/L%*[/A,M
+VZ9Z&m/I,c!)rjr"SL!:!!(II!`K(tJcEdjrrA;`J,~>
+ci4%)!8mhU!!%rTrs?I@!,2E4f2JU?r;QkW!!)!Es8N(Ms7ZHm^OcF-s8U:C[/L%*[/A,MVZ9Z&
+m/I,c!)rjr"SL!:!!(II!`K(tJcEjl!3Q5#PlH7~>
+gA_34MtR/.rr\0>VsO?]")%Z7iVriX3VE:L!]^7Yli6tbJcGHD!5F*ba8c,=qYpZA!!%rEs8E#p
+s8N)Is8E"Ls31KFmJm4RrW&2_J,~>
+gA_34MtR/.rr\0>VsO?]")%Z7iVriX3VE:L!]^7Yli6tbJcGZJ#5/$mU#Z0fJcEdjrW)fp"3^`F
+Ms^QD!;c`q!7LoH!.k0js8N(`s*t~>
+gA_34MtR/.rr\0>VsO?]")%Z7iVriX3VE:L!]^7Yli6tbJcGHD!5F*ba8c,=qYpZA!!%rEs8E#p
+s8N)Is8E"Ls31KFmJm4RrW&2_J,~>
+gAgdFhZ!Uibl%JCZiC*5rVloB;uHXsH2pn/s8N(Ms7ZHm^OcF*s8E#orrZp7!9*AG!o]'rqZ$Qq
+df0C-MrB6ecMn1;P5rQ$s.KDmPlH7~>
+gAgdFhZ!Uibl%JCZiC*5rVloB;uHXsH2pn/s8N(Ms8;m$m=bN?j8ZlFs2Y0=!;ZWsBE/%kmf*@I
+MrFO4rrCLI!o]'rJcEdjrrA;`J,~>
+gAgdFhZ!Uibl%JCZiC*5rVloB;uHXsH2pn/s8N(Ms7ZHm^OcF*s8E#orrZp7!9*AG!o]'rqZ$Qq
+df0C-MrB6ecMn1;P5rQ$s.KDmPlH7~>
+g]%?!!/pWr!OMj`rsA%*BXH"-R/f7kqu6r"3OI#SBE3tWlMpkaJcC<$]Dqj1q>UPT!!%r<s8N(M
+s.95kp9";o"],0up&G)Ws*t~>
+g]%?!!/pWr!OMj`rsA%*BXH"-R/f7kqu6r"3OI#SBE3tWlMpkaJcGTH!VXH_s2=s:!;ZWsMZ<a8
+jT#5[JcD#8rrA;`J,~>
+g]%?!!/pWr!OMj`rsA%*BXH"-R/f7kqu6r"3OI#SBE3tWlMpkaJcC<$]Dqj1q>UPT!!%r<s8N(M
+s.95kp9";o"],0up&G)Ws*t~>
+g]%;Pm.UGZ!8RSXm(g!+^t8A]"nf[<Vp+Mks8N(Ms+13^s8E#orr\/Z!/oq<rr@WMTDnr<2>dFW
+g&M'P!0mM6~>
+g]%;Pm.UGZ!8RSXm(g!+^t8A]"nf[<Vp+Mks8N(Ms8;ltXlG!4_Z0T8q>UPT!!%r<s8N(Ms-<Wa
+!0mM6~>
+g]%;Pm.UGZ!8RSXm(g!+^t8A]"nf[<Vp+Mks8N(Ms+13^s8E#orr\/Z!/oq<rr@WMTDnr<2>dFW
+g&M'P!0mM6~>
+g]%8\p&>$9Y5eM%JcGHD!5F*ba8c,=q>UPT!!&GJs8N(Ms.fSsc`R6Ij8ArYL$em>rrA;`J,~>
+g]%8\p&>$9Y5eM%JcG]K#L<AM:[S2^^OcF*s8E#orr\/Z!1DpJrr@WMQ2gjaPlH7~>
+g]%8\p&>$9Y5eM%JcGHD!5F*ba8c,=q>UPT!!&GJs8N(Ms.fSsc`R6Ij8ArYL$em>rrA;`J,~>
+g]%;if:r<F!.k1DrrBfbs2Y0=!;c]uo`+tjp&"aniJW#?HAgb\rri#=b_qDUs8N)qrs$8;Mi2nZ
+p&4n+f?C/:s8U<M_"Ia-fAWX7s8U<MVni!(rri#=b_qDWrsIB:VmQL(bd=:`p%SIj^f-/LHDgFe
+s8)a(p;E.P!!)'Zs%`W;g&1mM!0mM6~>
+g]%;if:r<F!.k1Krr_u5Khq^J!5F*ba8c,=qYp]k!!#sjqu6lZMgC;-MrFX7"SL!_Mi7H3rrDoq
+#/F/qMgD;orVmYbbbr\bs3.jcp&G'DiMX'_s3.jJ_"I[+"SL!_Mi7N5$J477[/^0M[&:_4p\tH5
+;i?Q[VtGW@kl:Y_PlH7~>
+g]%;if:r<F!.k1DrrBfbs2Y0=!;c]uo`+tjp&"aniJW#?HAgb\rri#=b_qDUs8N)qrs$8;Mi2nZ
+p&4n+f?C/:s8U<M_"Ia-fAWX7s8U<MVni!(rri#=b_qDWrsIB:VmQL(bd=:`p%SIj^f-/LHDgFe
+s8)a(p;E.P!!)'Zs%`W;g&1mM!0mM6~>
+g]%?J;t]nb!/n#[rr@WMpAY--JcEdjrW)fp"&f1"m/-eaZiJ_WrrUdP[/U(*iV`cQs8N)rrs*3;
+fDkm0!)rms!9*nW#`J^]bbkG>s5EnV#QI`Hs8RuWVuH\riV`cTrrD$V!!iO&bl@^$!2oYm#A=+h
+s8V$X;h=uGrrDH`!!K"qs1-JPs8N(`s*t~>
+g]%?J;t]nb!/n#[rr@WMpAY--JcEdjrW)fp"&f1"m/-eaZiJ_WrrUdP[/U(*iV`cQs8N)rrs*3;
+fDkm0!)rms!9*nW#`J^]bbkG>s5EnV#QI`Hs8RuWVuH\riV`cTrrD$V!!iO&bl@^$!2oYm#A=+h
+s8V$X;h=u4s8N(`s*t~>
+g]%?J;t]nb!/n#[rr@WMpAY--JcEdjrW)fp"&f1"m/-eaZiJ_WrrUdP[/U(*iV`cQs8N)rrs*3;
+fDkm0!)rms!9*nW#`J^]bbkG>s5EnV#QI`Hs8RuWVuH\riV`cTrrD$V!!iO&bl@^$!2oYm#A=+h
+s8V$X;h=uGrrDH`!!K"qs1-JPs8N(`s*t~>
+gA_6@B]8ad!!'2%rr@WMpAY--JcEdjrW)i>")%[mm/-eabQ,lbrrUCE[/L"+o`,!gs8N)srrS)Y
+bl.PCVZ=+&rs7Q`Mi5CNMZ<bVrrhup!)q,?rrS)YMuEYWo`,!hrrhup!)q,?rrS)YMu3MUMZD!"
+rrT(u["88Wrrg:-s8Pmn!!+sZpAb-mPlH7~>
+gA_6@B]8ad!!'2%rr@WMrr3)H:SHhIrrBfbs2Y0=!;jtBBE3tWqu6`A!6kB@!mCYOrVlrl!!)lq
+rrDus!fI'&rVlqs!4;_)#iPcAMno@N!!*#u"SD`p;p>4?!fI&:rVlrl!!)or"SD`p;p>4?!fI&:
+qu6_U!6kEA!iH%*JcG!7rrA;`J,~>
+gA_6@B]8ad!!'2%rr@WMpAY--JcEdjrW)i>")%[mm/-eabQ,lbrrUCE[/L"+o`,!gs8N)srrS)Y
+bl.PCVZ=+&rs7Q`Mi5CNMZ<bVrrhup!)q,?rrS)YMuEYWo`,!hrrhup!)q,?rrS)YMu3MUMZD!"
+rrT(u["88Wrrg:-s8Pmn!!+sZpAb-mPlH7~>
+g&D,h!!)kR!GDJ9s8N(Ms7ZHm^OcF*s8E#qbQFaCMp2,!!pfo5qYpVC!4;_)rrDoqrrE#t!mCXj
+qu6[W;uHY#!'+`ms6R,ErVult!:9X`"8)Wo[/L%)!;c`q!!)B`rr_oo!4;_)!mCXjqu6[W;hG#W
+p8p1PXoJEp!)K<Ao`+pkPlH7~>
+g&D,h!!)kR!GDJ9s8N(Ms8N$#\GuUerVll4JcEdjrW)i>"/c-Wbl%JBli;A.rrRKH[/L%)!;c`q
+!<)p!bQ)tdrrG,Yr;R!%3GAHmm'PCCs8N'!m/6kco`,!!rVultqZ$Qq!:9X`"8)Wo[/L"+bQ)td
+rrG,YJcG!7rrA;`J,~>
+g&D,h!!)kR!GDJ9s8N(Ms7ZHm^OcF*s8E#qbQFaCMp2,!!pfo5qYpVC!4;_)rrDoqrrE#t!mCXj
+qu6[W;uHY#!'+`ms6R,ErVult!:9X`"8)Wo[/L%)!;c`q!!)B`rr_oo!4;_)!mCXjqu6[W;hG#W
+p8p1PXoJEp!)K<Ao`+pkPlH7~>
+gA_/!o`2/prr@WMpAY--JcEdjrW)fp"7-!f[/L"+H2sl>rrT(u;uQar!;c`q!<)rt!!%rSrrS)Y
+p&4pj!!'D$s8N)qrrTP-B`7u2!;c`q!;c]sZiFe<s8N'!Mu3MUMZEG:s8L[OpAY'omFg1QrVlu[
+g"GclrrDclg&:pQmFg1QrVulM!:Bdc!;?EFrVlu[g"GEas8L[OpAY'lpAWbDrr_<7g$Sb<rn.;F
+o)AdYTf)fL"?#oQmGma:rrA;`J,~>
+gA_/!o`2/prr@WMrVlrd`4>jH!5F*ba8c,=qYpZa!!'D)rrRKHVu$DpVZ9Zos8N)qs8N)ts8N'!
+Mu3MUMZEGKs8N'![.s\$!;c]sZiFe<s8N)qs8N)qrrTP-B`7u2!!%rSrrS)Yp$D_Xf`:aFrr_ZA
+g#N&2"68(fmJd+cpAWbDrr_ZAg#N&2rn.;=rr2ulrn78M"68(fj8K#Wf`:aFrrDclg&:pQj4W,Q
+rVulM!;>%ErrA;`J,~>
+gA_/!o`2/prr@WMpAY--JcEdjrW)fp"7-!f[/L"+H2sl>rrT(u;uQar!;c`q!<)rt!!%rSrrS)Y
+p&4pj!!'D$s8N)qrrTP-B`7u2!;c`q!;c]sZiFe<s8N'!Mu3MUMZEF(rrVS]2?!RY2>7(;j730L
+!0mM6~>
+g]%?A!!)eP!GDJ9s8N(Ms7ZHm^OcF*s8E#orr]/!!6kHBrr<&CqYpW@!!)utrrDoqrrE&u"7-!f
+bkqDAMZDB-s8N'!m.gV\!;c]tbQ%Y9rr;uuqZ$QqqYplG!!)]ls6K^cbkqDAMZDAqs8Duug&D!R
+XT/?DrVltB!!'/#rrCaO!<)p"XT/?DrVuis!3Q8#!87>OrVltB!!%0?s8Duug&D!Og&;!Mrr[BD
+!3Q5"rVurOo)A]Rqu?anmI(#S!0mM6~>
+g]%?A!!)eP!GDJ9s8N(Ms8W-!mJ?h_^OcF*s8E#orr]/!!6kHBrr<&CqYpW@!!)utrrDoqrrE&u
+"7-!fbkqDAMZDB-s8N'!m.gV\!;c]tbQ%Y9rr;uuqZ$QqqYplG!!)]ls6K^cbkqDAMZDAqs8Duu
+g&D!RXT/?DrVltB!!'/#rrCaO!<)p"XT/?DrVuis!3Q8#!87>OrVltB!!%0?s8Duug&D!Og&;!M
+rr[BD!3Q5"rVurOfDkjNPlH7~>
+g]%?A!!)eP!GDJ9s8N(Ms7ZHm^OcF*s8E#orr]/!!6kHBrr<&CqYpW@!!)utrrDoqrrE&u"7-!f
+bkqDAMZDB-s8N'!m.gV\!;c]tbQ%Y9rr;uuqZ$QqqYplG!!)]ls6K^cbkqDAMZD@_rrA8\!!,m_
+mf3:ePlH7~>
+g]%;P[.aM"!3ZA%!.k0$s1A=1!;ZX$i;`jVs8VEc!6k<>"3^`Fm/I%b!;c`q!<3!#li7$!qhkMS
+!9*nVrrDfnrrDlprr<&Xrr;uuqZ$Qqq>^Hp#3#U^li7$!qhkMS!9*;ErVurOrr3)&!!%0?rr[BD
+!3Q8#!87>OrVlu%!!%0?s8DuuXoA>#g&;!Mrr[BD!-S8?rVurOrr2uOrW)os"*FSDXo8;!!!(^G
+rrg9(s8VKc!!.5\m/R(cPlH7~>
+g]%;P[.aM"!3ZA%!.k1Mrr\GbA@[9k_>jK7q>Uc[!!#sts6K^cbkh>AbQ%Y0rr;uuqZ$Qqrr3)e
+!!$^0MZQfWiVifV!;HNn!;ZZp!!)!Ws8N)qs8N)ps8N''iW&rE!!$^0MZQfWiU$UD!!(^Orr]A'
+!-S8?"*FSDXoA>#g&;!Mrr]A'!-S8?rVur#rr2uOrW)os"*FSDFoD@>!!(^OrrCaO!<)p"FT;ED
+rVuis!86!(rrA;`J,~>
+g]%;P[.aM"!3ZA%!.k0$s1A=1!;ZX$i;`jVs8VEc!6k<>"3^`Fm/I%b!;c`q!<3!#li7$!qhkMS
+!9*nVrrDfnrrDlprr<&Xrr;uuqZ$Qqq>^Hp#3#U^li7$!qhkMS!9&e7"N6N(s6]dc!Hl?Is8N(`
+s*t~>
+g]%8\p&>!lY5eM%JcC<$]Dqj1q#C<n"ml9J!!(7>rr^IF!9*qWrrDoqrrE&u"5s4[bk1r8!;HNn
+!;ZZp!!)Bbs8N)qs8N)ps8N''m/R+E!!(7's8Duug&D!RXT/?DrVltB!!'/#rrCaO!<)p"XT/?D
+rVuis!3Q8#!87>OrVltB!!%0?s8Duug&D!Og&;!Mrr[BD!3Q5"rVurOq>Ufq\PE2*g&M(pL"Ybk
+rrA;`J,~>
+g]%8\p&>!lY5eM%JcGcM"2n^MPC`bMs8E#ns8E!%m/Q#E!6k<>"3^`FiVrlW!;c`q!<3!#i;`l%
+o`+pkp](6nq>^Hp!:9^brrDoqrrDlprr<8is8V$X!6jL'rVurOrr3)&!!%0?rr[BD!3Q8#!87>O
+rVlu%!!%0?s8DuuXoA>#g&;!Mrr[BD!-S8?rVurOrr2uOrW)os"*FSDXo8;!!!(^(s8N(`s*t~>
+g]%8\p&>!lY5eM%JcC<$]Dqj1q#C<n"ml9J!!(7>rr^IF!9*qWrrDoqrrE&u"5s4[bk1r8!;HNn
+!;ZZp!!)Bbs8N)qs8N)ps8N''m/R+E!!(5qrsJJ1:B1CJs8R4qg$8V;!0mM6~>
+g]%8OU&Y,mJcGHD!5F*ba8c,=q#C<n"l]LJ!!(7>rr^IF!:9^brrDoqrrE&u"7-!fbk1r8!;HNn
+!;ZZp!!)!Ws8N)qs8N)ps8N''iW&rE!!(5rrrJ<@r;Zh?jo>>\PlH7~>
+g]%8OU&Y,mJcG]Ks6]aa!5F*ba8c,=q#C<n"l]LJ!!(7>rr^IF!:9^brrDoqrrE&u"7-!fbk1r8
+!;HNn!;ZZp!!)!Ws8N)qs8N)ps8N''iW&rE!!(5os5F"X!0mM6~>
+g]%8OU&Y,mJcGHD!5F*ba8c,=q#C<n"l]LJ!!(7>rr^IF!:9^brrDoqrrE&u"7-!fbk1r8!;HNn
+!;ZZp!!)!Ws8N)qs8N)ps8N''iW&rE!!(5rrrJ<@r;Zh?jo>>\PlH7~>
+g]%<@Mt[/Nbc_!G!.k1DrrBfbs2Y0=!;QTn!!W&qo`,!9qYpZA!!)]ks8N)qs8N)ts8N'!_"@[,
+!;HNn!;c]tbQ%Y9rr;uuqZ$QqqYpZA!!)]ks8N'!^kD^f:]17o26H!?rrA;`J,~>
+g]%<@Mt[/Nbc_!G!.k.Ps1,]-qYpQ1JcEdjrW)`nrW!,ps7H?lbkh>AbQ%Y9rr;uuqZ$QqrVult
+!5S7,rrDfnrrDoq"3^`Fp&>!k!;c`q!;c]tbQ%Y9rr;uu!5O0ciW&oXPlH7~>
+g]%<@Mt[/Nbc_!G!.k1DrrBfbs2Y0=!;QTn!!W&qo`,!9qYpZA!!)]ks8N)qs8N)ts8N'!_"@[,
+!;HNn!;c]tbQ%Y9rr;uuqZ$QqqYpZA!!)]ks8N'!^kD^f:]17o26H!?rrA;`J,~>
+gA_2\Mtd5O!3ZA%!.k1DrrBfbs2Y0=!;ZWsZiC))rr3%X!/p^R!fI%lrVultqZ$QqrVlqW!,26/
+!TEDDs8N)ns8N)qrrQj6HN!mD!;c`q!;c]sBE3AWrrS)YB_q`0iTud.$MM#+PQ1Zn!!$QJj8],Z
+PlH7~>
+gA_2\Mtd5O!3ZA%!.k.Qs%`UpXo&+u^OcF*s8E#orr]V.!)rms!fI&:qYpVT!,2?2rrDoqrrE#t
+!fI%lqYpTTm/?ta!;HNn!;c]sBE3AWs8N)qs8N)qrrQj6HN!jFMZ@GerrM*FJcG$8rrA;`J,~>
+gA_2\Mtd5O!3ZA%!.k1DrrBfbs2Y0=!;ZWsZiC))rr3%X!/p^R!fI%lrVultqZ$QqrVlqW!,26/
+!TEDDs8N)ns8N)qrrQj6HN!mD!;c`q!;c]sBE3AWrrS)YB_q`0iTud.$MM#+PQ1Zn!!$QJj8],Z
+PlH7~>
+g&D,\;mcE$!T=$]s8N(Ms7ZHm^OcF*s8E#prrh[e!!(XLrrQj6m/6kcli7%PrVultqZ$Qqr;QhV
+!8%,J!IFG;s8N)ns8N'!Mu<SW^]4B$rVultqZ$Qq!/pdT"2Fm:m/6kbMZDB+rrIH=Q2^m<PPtOc
+2>7(DPM+pprrA;`J,~>
+g&D,\;mcE$!T=$]s8N(NrrmO@mC?cRqu6Z2JcEdjrW)fp"RK%e!8%2L!b_T#r;Qlc!!)Bas8N)q
+s8N)srrS)YfDGRKHM.7:rrDfnrr<%Wr;Ql7!!)Bas8N)qs8N'!Mu<SW^]4B$r;QhV!8%,J!IFEi
+s6BXa!0mM6~>
+g&D,\;mcE$!T=$]s8N(Ms7ZHm^OcF*s8E#prrh[e!!(XLrrQj6m/6kcli7%PrVultqZ$Qqr;QhV
+!8%,J!IFG;s8N)ns8N'!Mu<SW^]4B$rVultqZ$Qq!/pdT"2Fm:m/6kbMZDB+rrIH=Q2^m<PPtOc
+2>7(DPM+pprrA;`J,~>
+g]%8OoDl&orr@WMpAY--JcEgk!9*nW!9*kU!6kEB!4;\(!pfo#r;Qh3!9*nV"7-!ffDPXNli7%;
+rVlrc;eZ+/!OSd'rr_Tf!8%#Grr<(Gbl.SA!!'D)rr_Tf!8%,Jrr<(Gbl.SA!!'D'rrVOcB`.l2
+[&92h!6"a7!4gqcrrA;`J,~>
+g]%8OoDl&orr@fR#.ZVOs)e>/q#:?/JcEgk!9*nW!9*kU!6kEB!4;\(!pfo#r;Qh3!9*nV"7-!f
+fDPXNli7%;rVlrc;eZ+/!OSd'rr_Tf!8%#Grr<(Gbl.SA!!'D)rr_Tf!8%,Jrr<(Gbl.SA!!'D'
+rrVOcB`.l2[&8KTl2Ub`PlH7~>
+g]%8OoDl&orr@WMpAY--JcEgk!9*nW!9*kU!6kEB!4;\(!pfo#r;Qh3!9*nV"7-!ffDPXNli7%;
+rVlrc;eZ+/!OSd'rr_Tf!8%#Grr<(Gbl.SA!!'D)rr_Tf!8%,Jrr<(Gbl.SA!!'D'rrVOcB`.l2
+[&92h!6"a7!4gqcrrA;`J,~>
+g]%8\oDl&orr@WMpAY--JcEmmoDeqQVr@LP#jc5<[*5mjB^G`u!9*eT!posGqZ$W_rr35iBP=cs
+[#:@OrrD$S!;c`q!!hkKVp*@FB]8sj!9*eT!:9[arr<;jMl4eC3G@CIrs.n(BXH!jMj^"5"npW5
+s8VKb!!-WKh#IBSPlH7~>
+g]%8\oDl&orr@rV$Fs]Ls1&-?s/c:3q#:?/JcEmmoDeqQVr@LP#jc5<[*5mjB^G`u!9*eT!posG
+qZ$W_rr35iBP=cs[#:@OrrD$S!;c`q!!hkKVp*@FB]8sj!9*eT!:9[arr<;jMl4eC3G@CIrs.n(
+BXH!jMj].rkl:Y_PlH7~>
+g]%8\oDl&orr@WMpAY--JcEmmoDeqQVr@LP#jc5<[*5mjB^G`u!9*eT!posGqZ$W_rr35iBP=cs
+[#:@OrrD$S!;c`q!!hkKVp*@FB]8sj!9*eT!:9[arr<;jMl4eC3G@CIrs.n(BXH!jMj^"5"npW5
+s8VKb!!-WKh#IBSPlH7~>
+g]%?,!8%#G!T=$]s8N(Ms7ZHm^OcEhrrVQGm,\0Jm,@X)s8N*!rr_W3bk:K*rrE*!"747Up%87c
+m,@W+rrUN?AGuQ5`;fjk23[(Ss8N(`s*t~>
+g]%?,!8%#G!T=$]s8N(VrsElKAF8CWL&^PNmJ-\]^OcEhrrVQGm,\0Jm,@X)s8N*!rr_W3bk:K*
+rrE*!"747Up%87cm,@Vgs5s@]!0mM6~>
+g]%?,!8%#G!T=$]s8N(Ms7ZHm^OcEhrrVQGm,\0Jm,@X)s8N*!rr_W3bk:K*rrE*!"747Up%87c
+m,@W+rrUN?AGuQ5`;fjk23[(Ss8N(`s*t~>
+g]%<5!;?Em!3ZA%!.k0$s+14;s8N)as8N(Urrr,BmJm2Dqu?kBs8VK[f`1sOPlH7~>
+g]%<5!;?Em!3ZA%!/gd\Xciaqs/jt*s+149s8N)as8N(Ms3UfG!0mM6~>
+g]%<5!;?Em!3ZA%!.k0$s+14;s8N)as8N(Urrr,BmJm2Dqu?kBs8VK[f`1sOPlH7~>
+g]%<Im.UGZm&pBg!.k0$s+14;s8N)as8N(Wrs.qn2#t2es+UCO!B$(js8N(`s*t~>
+g]%<Im.UGZm&pBg!/UXU`:ec^JcFs6rrD?arr@WMd/X+GPlH7~>
+g]%<Im.UGZm&pBg!.k0$s+14;s8N)as8N(Wrs.qn2#t2es+UCO!B$(js8N(`s*t~>
+JcGTHrr@WMpAY--JcC<$q>^HplMpkaNW0%HPPkIdL&_1`22/U$df9=IPlH7~>
+JcGTHrr@uW"RW>;g%Ot9!5F*bJcGQGrrD?arr@WMd/X+GPlH7~>
+JcGTHrr@WMpAY--JcC<$q>^HplMpkaNW0%HPPkIdL&_1`22/U$df9=IPlH7~>
+cMmn'Y5eM%JcGHD!5F*bJcGZJ#PH<V!!&q@m-t#[out2O!2n'-OT,;Vqu?_-bQ%SBPlH7~>
+cMmn'Y5eM%MuNe1rVurlnc&U(JcC<$r;R#pbeO2YVp+Msrs/5@^]4A4bj9o\e,TFJPlH7~>
+cMmn'Y5eM%JcGHD!5F*bJcGZJ#PH<V!!&q@m-t#[out2O!2n'-OT,;Vqu?_-bQ%SBPlH7~>
+cMmkEY5eM%JcGHD!5F*bJcGZJ!9*eT!6js4!9*eT!6g]-"PL?cs2=m:!Hm)<s8N(`s*t~>
+cMmkEY5eM%MuNnQ`3$02rrBfbs+14JrrD$T!!(74rrD$T!!(5os3q#J!0mM6~>
+cMmkEY5eM%JcGHD!5F*bJcGZJ!9*eT!6js4!9*eT!6g]-"PL?cs2=m:!Hm)<s8N(`s*t~>
+ci4%)!3ZA%!.k1DrrBfbs+13$s7-*rfr\cb!:Bgd:QsJRrrVlo!0mM6~>
+ci4%)!3ZA%!.k1DrrBfbs+13$s/uA'p&G)Ws*t~>
+ci4%)!3ZA%!.k1DrrBfbs+13$s7-*rfr\cb!:Bgd:QsJQs8N(`s*t~>
+iVrs>!8%5M!/pILh#@SoMZ<`UMrFL3#2tJdMgC<?l2Ub`JcGHD!5F*bJcC<$oD\jY2>dFSPJmJ&
+P5kTIs*t~>
+iVrs>!8%5M!/pILh#@SoMZ<`UMrFL3#2tJdMgC<?l2Ub`MuNmtTrl9&rrBfbs+13$s/uA'P5kTI
+s*t~>
+iVrs>!8%5M!/pILh#@SoMZ<`UMrFL3#2tJdMgC<?l2Ub`JcGHD!5F*bJcC<$oD\jY2>dFSPJdG#
+!0mM6~>
+ir9+r!!%rVrr@uL!8[\TM[%E*s3(HCMu3MUbW3oHrrUD)bj,6.!.k1DrrBfbs+13$s7u["p;E.P
+g&M(0r;ZjU\]"LLm/R-Ns*t~>
+ir9+r!!%rVrr@uL!8[\TM[%E*s3(HCMu3MUbW3oHrrUD)bj,6.!/pjZK`D*qnG`L'JcC<$JcDnQ
+!posfPlH7~>
+ir9+r!!%rVrr@uL!8[\TM[%E*s3(HCMu3MUbW3oHrrUD)bj,6.!.k1DrrBfbs+13$s7u["p;E.P
+g&M(0r;ZjU\\nII!0mM6~>
+iVrs>!8%5M!mCZ2q#:BR!8d_W^f/&Irr^IF!/pgU!oX-pr;Qi6!6jd/rr@WMpAY--JcC<$JcGWI
+!TTCB!!o_,s-!E_Kt6p!rrVnrXo8;"!0mM6~>
+iVrs>!8%5M!mCZ2q#:BR!8d_W^f/&Irr^IF!/pgU!oX-pr;Qi6!6jd/rr@uW!;?EFnG`L'JcC<$
+JcE+W!qraurVultPlH7~>
+iVrs>!8%5M!mCZ2q#:BR!8d_W^f/&Irr^IF!/pgU!oX-pr;Qi6!6jd/rr@WMpAY--JcC<$JcGWI
+!TTCB!!o_,s-!E_Kt6oos8N(`s*t~>
+g]%;u!;?Em!8d_XMZ<aarVuisrVlnV!;c`q!:0[b!.k0$s+13$s6osf2>dFWFoVKpfuF$pcSY\&
+mJd.c!0mM6~>
+g]%;u!;?Em!8d_XMZ<aarVuisrVlnV!;c`q!:0[b!.k0$s+13$s/H#$cSY\&mJd.c!0mM6~>
+g]%;u!;?Em!8d_XMZ<aarVuisrVlnV!;c`q!:0[b!.k0$s+13$s6osf2>dFWFoVKpftRLd!0mM6~>
+g]%<Im.UGZm,%aEMZ<aarVuisrVultqZ$Qq!6jg0rr@WMJcC<$JcGBB"mr#%s8S;^!!6])cbf\^
+g&:sOXoAA#!0mM6~>
+g]%<Im.UGZm,%aEMZ<aarVuisrVultqZ$Qq!6jg0rr@uW"&F&nm=G:gs+13FrrCaO!!'/#s8N(`
+s*t~>
+g]%<Im.UGZm,%aEMZ<aarVuisrVultqZ$Qq!6jg0rr@WMJcC<$JcGBB"mr#%s8S;^!!6])cas/V
+!0mM6~>
+WrE.eMjaPD"7-!f;uZduZiH$\rrS)YMsUKD!.k1DrrBfbs,?s^p".!W[(u&-rrMf:KDu;3K`D*K
+s8V*ZPN0U]!U\53rr[BDFkQcorrA;`J,~>
+WrE.eMjaPD"7-!f;uZduZiH$\rrS)YMsUKD!/pmV!!(^ArrBfbs,?s^p".!W[(u&-rrMf:JcE@^
+!U\53rr[BDFkQcorrA;`J,~>
+WrE.eMjaPD"7-!f;uZduZiH$\rrS)YMsUKD!.k1DrrBfbs,?s^p".!W[(u&-rrMf:KDu;3K`D*K
+s8V*ZPN0.PrrA;`J,~>
+e,KETrVur*f)Gi1!!)BbrrS)YMu*GTMZ@GWs8N(Ms7ZHm^OcEErs[*O!)p8&ZiH$as/1d.rrA8\
+!!(]grrh_Q!&aKLrrM05r;ZcsPlH7~>
+e,KETrVur*f)Gi1!!)BbrrS)YMu*GTMZ@GWs8N(UrrM0RnG`L'JcC`0%*S\O;m`I0!/pmWVi--+
+^&J6&P5mK6rr3#Zg&1mM!0mM6~>
+e,KETrVur*f)Gi1!!)BbrrS)YMu*GTMZ@GWs8N(Ms7ZHm^OcEErs[*O!)p8&ZiH$as/1d.rrA8\
+!!(]Xs8N(`s*t~>
+g]%;u!;QQqoquKUrr_3[!4;_)rr<%WqYpVT!!)Bcrr@WMpAY--JcCf2"Q=Y,MrFU6"K,qW!/lR2
+!4i"-!JTRMrrCaO!!'.qs8N(`s*t~>
+g]%;u!;QQqoquKUrr_3[!4;_)rr<%WqYpVT!!)Bcrr@WMpAY--JcCf2"Q=Y,MrFU6"K,qW!/lF.
+^&J)crVur#p](6nPlH7~>
+g]%;u!;QQqoquKUrr_3[!4;_)rr<%WqYpVT!!)Bcrr@WMpAY--JcCf2"Q=Y,MrFU6"K,qW!/lR2
+!4i"-!JTR>s8N(`s*t~>
+g]%;u!;?Enbj='`"6#.<_#464!!%rRrrS)Y!:9ac!.k1DrrBfbs,d6_bQ%X$q>UQU;ZM`0rrr+,
+!!&_[_uB`(rVltB!!'.qs8N(`s*t~>
+g]%;u!;?Enbj='`"6#.<_#464!!%rRrrS)Y!:9ac!0$p[\GuVPn,EC&JcCi3"3^`FMu!ATiDT`7
+JcERd!:Bab"*FSDXnVkq!0mM6~>
+g]%;u!;?Enbj='`"6#.<_#464!!%rRrrS)Y!:9ac!.k1DrrBfbs,d6_bQ%X$q>UQU;ZM`0rrr+,
+!!&_[YlF_'PlH7~>
+g]%;u!;?En[,Kg?regh<MmWE^rr<%WqYpVT!!)Bcrr@WMpAY--JcCl4"3^`FMtd5QbQ*QWrs#U9
+s8V+ij2:m!fl]1Grr3&QPO8)DrrA;`J,~>
+g]%;u!;?En[,Kg?regh<MmWE^rr<%WqYpVT!!)BcrrA#X"2o=XFmo>1^OcEIrr^IF!/pUO!mCY&
+JcEXf"5.fSpAY'nfotgss8N(`s*t~>
+g]%;u!;?En[,Kg?regh<MmWE^rr<%WqYpVT!!)Bcrr@WMpAY--JcCl4"3^`FMtd5QbQ*QWrs#U9
+s8V+ij0&F^!0mM6~>
+g]%;u!;QQqiNrU;rr_V6!/pgUrr<%WqYpVT!!)Bcrr@WMpAY--JcCl4")%Z7iV*9P;i?P5"SQs<
+!850f!9=%Y!3PbjrrA;`J,~>
+g]%;u!;QQqiNrU;rr_V6!/pgUrr<%WqYpVT!!)Bcrr@WMpAY--JcCl4")%Z7iV*9P;i?5,`;]ht
+rVur#nGiLgPlH7~>
+g]%;u!;QQqiNrU;rr_V6!/pgUrr<%WqYpVT!!)Bcrr@WMpAY--JcCl4")%Z7iV*9P;i?P5"SQs<
+!84CPrrA;`J,~>
+i;Wi%Mt$cIHIr0'lo>&Ep&G$l!/p^R!fI$Ym/QbZJcGcM!5F*bP5bXC!!%rMrrK$UMuNh<:]:=o
+28B.nFT;D!q>^-gPlH7~>
+i;Wi%Mt$cIHIr0'lo>&Ep&G$l!/p^R!fI$Ym/QbZQ2^mFg$Se>^OcEJrr_3[!/pOM!N1j,s24j=
+FT;D!q>^-gPlH7~>
+i;Wi%Mt$cIHIr0'lo>&Ep&G$l!/p^R!fI$Ym/QbZJcGcM!5F*bP5bXC!!%rMrrK$UMuNh<:]:=o
+27*>V!0mM6~>
+h>[N7MtR,P;mboBrs4M_!2oks!!%rRrrS)Y!:9aZ!.k0$s,[0^BE/&!p&>'EMi@Z9\buL/2;,tK
+!ni;$rr3)H26HTJs7QGWs*t~>
+h>[N7MtR,P;mboBrs4M_!2oks!!%rRrrS)Y!:9aZ!1!QdFT;EDJcC<$s8N17!!)BYrrL`0JcEjl
+!ni;$rr3)H26HTJs7QGWs*t~>
+h>[N7MtR,P;mboBrs4M_!2oks!!%rRrrS)Y!:9aZ!.k0$s,[0^BE/&!p&>'EMi@Z9\buL/2;,>9
+p&L?WJ,~>
+g]%;4!6Y<IbQ%WAs8Qa4Mu*GTMZ?]Bs8N(Ms+13)s8E#irr@uQrs%G?HAd*-iV<EWiJW#?HAgbZ
+rrVkkHN&g'^]=93#/F/qMgD;o`r?%&rVut0p;[+8m<&C/Xo88"p?qt\!0mM6~>
+g]%;4!6Y<IbQ%WAs8Qa4Mu*GTMZ?]Bs8N(Xrr]BeFi8k2JcGcMrW)Qi!/p[Q#2tJdMgC<?q#:QW
+MgC;-MrFR5!qiI;regfm!;ld#^f-/LHDgFirrh_3!!'/"rrDc\s8N(`s*t~>
+g]%;4!6Y<IbQ%WAs8Qa4Mu*GTMZ?]Bs8N(Ms+13)s8E#irr@uQrs%G?HAd*-iV<EWiJW#?HAgbZ
+rrVkkHN&g'^]=93#/F/qMgD;o`r?%&rVut0p8S)l!0mM6~>
+g]%<@!7UrMf4\+Lr;Qc@rW)uu!iH$VqYpVT!/p4Drr@WMpAY--JcCr6"2Fm:MsLBEZiJ_WrrUdP
+[/0e(ZiJ_WrrUdP[/Bq);mcQ(!pfmer;R"8!8%8Ni;cg!rs.52mJm2s!27=1"&Ams2<k/@!0mM6~>
+g]%<@!7UrMf4\+Lr;Qc@rW)uu!iH$VqYpVT!/p4Drr@WMpAY--JcCr6"2Fm:MsLBEZiJ_WrrUdP
+[/0e(ZiJ_WrrUdP[/Bq);mcQ(!pfmer;R"8!8%8Ni;cf0rrZ$s!&a$@rrA;`J,~>
+g]%<@!7UrMf4\+Lr;Qc@rW)uu!iH$VqYpVT!/p4Drr@WMpAY--JcCr6"2Fm:MsLBEZiJ_WrrUdP
+[/0e(ZiJ_WrrUdP[/Bq);mcQ(!pfmer;R"8!8%8Ni;cg!rs.52mJm2s!26=jrrA;`J,~>
+gA_/[e,KM`!!&GbrrC:B!<<'#bQ(T<rrQ+!VsOH`!.k1DrrBfbs-*Hb^]4@mm/I.2!6kB@!mCYO
+r;QiB!6kB@!mCYOrr3"WHMmdD^]=?5!fI'&rVlqs!4:#N#ha>#!0dH_mE`lR!nie2rr3,>!&^nP
+lMpkaPlH7~>
+gA_/[e,KM`!!&GbrrC:B!<<'#bQ(T<rrQ+!VsOH`!0.!]mB+^fp@&"]^OcEKrr^%:!/p4D!mCYg
+r;QiB!4;\(!mCYgr;QiB!4;b*!K2:%rrKn8rVlqW!6kEA!iH%*MuNk3PP5"U"N19tXnM&[rrA;`
+J,~>
+gA_/[e,KM`!!&GbrrC:B!<<'#bQ(T<rrQ+!VsOH`!.k1DrrBfbs-*Hb^]4@mm/I.2!6kB@!mCYO
+r;QiB!6kB@!mCYOrr3"WHMmdD^]=?5!fI'&rVlqs!4:#N#ha>#!0dH_mE_[0rrA;`J,~>
+X8i/!!/pdT"2Fm:B`A#4;ZQ[orr<&Xm/R(cJcGHD!5F*bPQ(a#!!%rErrVNeHM[XCH2t>OrrVNe
+HM[XGH2t>Prr?a1rrMHdrr3&D!.+PB!BF*)rrLGAqu?`aa8Z;9A,lV?rVlo/p?;PV!0mM6~>
+X8i/!!/pdT"2Fm:B`A#4;ZQ[orr<&Xm/R(cNW0"3rVurln,EC&JcCr6"2Fm:Ms^NGli;A.rrRKH
+[/U(,li;A.rs!cL[/^.+B`.l2li@%b!mCXjqu6[W;iUe[p1+.'\c)O/\b>7errA;`J,~>
+X8i/!!/pdT"2Fm:B`A#4;ZQ[orr<&Xm/R(cJcGHD!5F*bPQ(a#!!%rErrVNeHM[XCH2t>OrrVNe
+HM[XGH2t>Prr?a1rrMHdrr3&D!.+PB!BF*)rrLGAqu?`aU]:>oPlH7~>
+X8`9[3N)6ArrZp7!9*qW!jhsZr;QiM!/p1Crr@WMpAY--JcCr6"2Fm:Ms^NGH2sl>rrT(u;uZdu
+H2sl>rs,G%;ucjt!9*kU!!*#urr<%Wqu6_U!;4_=#I=DRY#%"%qo8X<A,lU*irB#YPlH7~>
+X8`9[3N)6ArrZp7!9*qW!jhsZr;QiM!/p1CrrA&Y"8:'CXmZ2h^OcEKrr^%:!/p7E!dXjEqYpVp
+!)rms!dXjEqYpeu!)rpt!!)!Urr<&us8N'!Mu3MUMZEG:s&lJBs6ZrAs4OOAs2;&,s2;&>s/j6>
+mB,(AmB,(AfraZA`3'(>Xi18>Xi18,XkEa-XmQ/,XmQ/,XoJF'`;f5,g&LHAg&Ka-mJk,,s8T4'
+s8T4>s6ZrAr;Qk0!!#gSs8N(`s*t~>
+X8`9[3N)6ArrZp7!9*qW!jhsZr;QiM!/p1Crr@WMpAY--JcCr6"2Fm:Ms^NGH2sl>rrT(u;uZdu
+H2sl>rs,G%;ucjt!9*kU!!*#urr<%Wqu6_U!;4_=#I=DRY#%"%qkO2k!0mM6~>
+WrE*5bl%JCZiC*5r;QdrB`.l2BN+3rrr@WMpAY--JcCr6"3^`FMu!AQ_"iofs8N'!bkh>@bQ%YB
+s8N'!bkh>HbQ%YCs,-jWMp0ECrr_Tf!6k??!fI'1eGfjKU&Y/d!3Z@?p<*C:m=k95rr^1>23[&"
+rrA;`J,~>
+WrE*5bl%JCZiC*5r;QdrB`.l2BN+3rrr@WMpAY--JcCr6"3^`FMu!AQ_"iofs8N'!bkh>@bQ%YB
+s8N'!bkh>HbQ%YCs,-jWMp0ECrr_Tf!6k??!fI'1m/L8iFoU+pXoGL'g&H0pg&H0ps8N(As4ICS
+s4ICSs/c:Ss)e>Arr@3Arr@3Af`8/SXT7&SFTC+pFTDIA!-S=p!3Q:S!3Q:'!87Bp!<<'!!<<'!
+FoU+pPD/`0rr^1>23[&"rrA;`J,~>
+WrE*5bl%JCZiC*5r;QdrB`.l2BN+3rrr@WMpAY--JcCr6"3^`FMu!AQ_"iofs8N'!bkh>@bQ%YB
+s8N'!bkh>HbQ%YCs,-jWMp0ECrr_Tf!6k??!fI'1eGfjKU&Y/d!3Z@?p7_Nd!0mM6~>
+WrEClBP=csbaAGkbkqDGiAkT's4:pEiTgIC!.k1DrrBfbs-!E]!;ZX)iQTNQ!!#sAbl@_0!!(7>
+rs6gK!:9aP!!(7>rs$[I!:9acMu3PTVuH\uli7$!qhkMS!9)H-#."<bs8T4Sao;M=s/l@?rr3&n
+\b>"^rrA;`J,~>
+WrEClBP=csbaAGkbkqDGiAkT's4:pEiTgIC!0.!\`07=Amf*:%JcCo5rW)co%cPXUZiC))bfp+e
+li7%0qYpiF!!)Bcli7%0qYpcD!!)Bcs,6dT!2ohr"7-!fB`!\h;ZPeCs&T2Cs4ICSs/c:Ss)e=p
+s)e>Arr@3Af`8/Sf`8/SXT7&SFTDIA!-S>A!-S=p!3Q:'!87Bp!87Bp!<<'!FoU+pXoI&SXoGL'
+g&H0ps8N'!s8N(As3glH!6"m:!qs1uiW&oXPlH7~>
+WrEClBP=csbaAGkbkqDGiAkT's4:pEiTgIC!.k1DrrBfbs-!E]!;ZX)iQTNQ!!#sAbl@_0!!(7>
+rs6gK!:9aP!!(7>rs$[I!:9acMu3PTVuH\uli7$!qhkMS!9)H-#."<bs8T4ST)\fjPlH7~>
+W;d%f^pL#TfD#:Jf>+<"fBE87!.k1DrrBfbs-!BaBE/&!pAb-m!/pgU"5s4[bkh>FbQ%Y%s5<qX
+bkh>AbQ%Y%rr3&YMi7Q7#&*]0i;`l%cMn+%J(g+eErEuW"5f=C:YYpL!0mM6~>
+W;d%f^pL#TfD#:Jf>+<"fBE87!0.!\FT;Dqmf*:%JcCo5")%Z7m.UJZ!!%rUrr_3[!6k<>#g<8K
+iW%j:!6k<>"3^`FiVriYiJWWn!![-0s5<qXbiA_-FeSiqFi=<uFlWLqFlWLqFoVJaU&X.q`;ek?
+`;dbuj8Yfqs8R58s8R58s5S7?s29'?s.OSqs.OT8s)k%8j)r<?j)r<?`-(,?TlpD8F`m`aFeSiq
+,QIg?g].9RPlH7~>
+W;d%f^pL#TfD#:Jf>+<"fBE87!.k1DrrBfbs-!BaBE/&!pAb-m!/pgU"5s4[bkh>FbQ%Y%s5<qX
+bkh>AbQ%Y%rr3&YMi7Q7#&*]0i;`l%cMn+%J(g+eErDL-rrA;`J,~>
+JcGTHrr@WMpAY--JcCo5"3^`FVtU/j!!%rUrr_Tf!6k<>#g<8Km/QDP!6k<>"3^`Fm/$_fbQ%Y%
+s6K^cbg6:hXo&/"L%`^i!RHJurr^1>25/e)rrA;`J,~>
+JcGTHrrA&Y"8:F$j6lpI^OcEJrr^IF!2oPjrr<%WrVlud!!(7>rs6gK!:9aP!!(7>rr^IF!:9R^
+#g<8KiW&6E!6gT*!RHJurr^1>25/e)rrA;`J,~>
+JcGTHrr@WMpAY--JcCo5"3^`FVtU/j!!%rUrr_Tf!6k<>#g<8Km/QDP!6k<>"3^`Fm/$_fbQ%Y%
+s6K^cbg6:hXo&/"L%_#9rrA;`J,~>
+JcGTHrr@WMJcCH("&f1"m.^P[!!%rUrr_oo!6k<>#g<8Kp&F[b!6k<>"j?rHp&>$hrs,n2VuQbs
+!5Qq\!6"j:!DhClrrh^H!!'t:rrVo4p=fQH!0mM6~>
+JcGTHrr@WMJcCH("&f1"m.^P[!!%rUrr_oo!6k<>#g<8Kp&F[b!6k<>"j?rHp&>$hrs,n2VuQbs
+!5Ofu"RS&H!6"m:!qsS+gAh0QPlH7~>
+JcGTHrr@WMJcCH("&f1"m.^P[!!%rUrr_oo!6k<>#g<8Kp&F[b!6k<>"j?rHp&>$hrs,n2VuQbs
+!5Qq\!6"j:!DhC:s8N(`s*t~>
+JcGTHrr@WMJcCH("3^`FMtd8O!!%rTrrS)YMu*GTMZ@GirrS)YMu*GXMZ@GjrrC:?rrrJ1s8RuW
+B_q`0iU#A"#OR6=s8R3AXiUME:B1B*eGoOKPlH7~>
+JcGTHrrA&Y"&F&^m=G:gs8Ds"bQ%X$p](6n!/pdT!fI&:qYpVT!,2B3!fI&:qYpbX!,2E4!6k??
+"ou%1s,-kjqYpTTm$n"W:B1B*eGoOKPlH7~>
+JcGTHrr@WMJcCH("3^`FMtd8O!!%rTrrS)YMu*GTMZ@GirrS)YMu*GXMZ@GjrrC:?rrrJ1s8RuW
+B_q`0iU#A"#OR6=s8R3AXdB(f!0mM6~>
+JcGTHrr@WMpAY--JcCi3"3^`FMu!ATMZ<a8qu6_2!:9X`"7-!fm/?qcBE7Dsrs.lj!:9ac!,2<1
+!pfp2rr3%X!8%,J!IFFors!TGL&_25mEY_5c\47Trr]e3:T`.HrrA;`J,~>
+JcGTHrrA&YrVurOmf*:%JcCi3"3^`FMu!ATMZ<a8qu6_2!:9X`"7-!fm/?qcBE7Dsrs.lj!:9ac
+!,2<1!pfp2rr3%X!8%,J!IFF5rrUN#2?!OW\H#F-eGoOKPlH7~>
+JcGTHrr@WMpAY--JcCi3"3^`FMu!ATMZ<a8qu6_2!:9X`"7-!fm/?qcBE7Dsrs.lj!:9ac!,2<1
+!pfp2rr3%X!8%,J!IFFors!TGL&_25m?[eP!0mM6~>
+JcGTHrr@WMpAY--JcCf2"4mMQMu3MWbQ,ieMu3MUli:_srrQj6iV`]Wli:_srrQj6iVrlW!!(7A
+rrTP-m/I"dlr.TqrrKL)h#@AbrVurObl7[hrVur:rr3#dcdMjn!0mM6~>
+JcGTHrr@uW!TWnArrBfbs,[0^f)Pf/qu6fC!6bG$qu6`a!,2<1!b_Smr;Qib!,2<1!b_Smrr;uu
+!6kEA!jhsorr3&d;eZ+/!OSc!rrCCE!!'t:rrMN5df9=IPlH7~>
+JcGTHrr@WMpAY--JcCf2"4mMQMu3MWbQ,ieMu3MUli:_srrQj6iV`]Wli:_srrQj6iVrlW!!(7A
+rrTP-m/I"dlr.TqrrKL)h#@AbrVurOPQ1X_PlH7~>
+JcGTHrr@WMpAY--JcCc1"RN#d!/pj#"cI'Qs3-Dtrs7t)BXH!jBP?c/rs7t)BXH!jBP?c2rs/U_
+Mj_f5VeGGprs.n(BXH!jMj`B#"mn/I!&aJsrrDHbrrZ$s!/8\trrA;`J,~>
+JcGTHrr@WMpAY--JcCc1"RN#d!/pj#"cI'Qs3-Dtrs7t)BXH!jBP?c/rs7t)BXH!jBP?c2rs/U_
+Mj_f5VeGGprs.n(BXH!jMj^FA!:Bab"&AmsL!BYt!0mM6~>
+JcGTHrr@WMpAY--JcCc1"RN#d!/pj#"cI'Qs3-Dtrs7t)BXH!jBP?c/rs7t)BXH!jBP?c2rs/U_
+Mj_f5VeGGprs.n(BXH!jMj`B#"mn/I!&aJ6s8N(`s*t~>
+g]%?,[,L]Xs478;ZN'q)JcGHD!5F*bN;j+Tf>+;k_!LXl!pnn4o`#!ZiU$F@!9*qW!o`M=p\t<]
+iUtq)!/:CP!70*n"89ZD:]::q\M^)@c2[eDPlH7~>
+g]%?,[,L]Xs478;ZN'q)NrK3`!!%0/rrBfbs,?s^p".!W[(u&!rrVQGm.C;Zm,@=-rrD$WrrV0G
+p%SIfm,@W7rr_u5A5E1("1^:_j3@W(!0mM6~>
+g]%?,[,L]Xs478;ZN'q)JcGHD!5F*bN;j+Tf>+;k_!LXl!pnn4o`#!ZiU$F@!9*qW!o`M=p\t<]
+iUtq)!/:CP!7-i.rrA;`J,~>
+g]%=R!5S@/!6kBA!5Pr@rr@WMpAY--JcC<$UAk5HrVuq@dJj3brVur:`rH&=PlH7~>
+g]%=R!5S@/!6kBA!5Pr@rrA)Z"2o=XFm]2/^OcE9s+14;rrC":!!'sWs8N(`s*t~>
+g]%=R!5S@/!6kBA!5Pr@rr@WMpAY--JcC<$UAk5HrVuq@OoPF]PlH7~>
+g]%83p&G$l"F?tZ!8"UXrr@WMpAY--JcC<$U&P5*2)XdOrrD*XrrZ$s!/8GmrrA;`J,~>
+g]%83p&G$l"F?tZ!8"UXrr@WMpAY--JcC<$JcG9?!9=%X"&AmsKuX/m!0mM6~>
+g]%83p&G$l"F?tZ!8"UXrr@WMpAY--JcC<$U&P5*2)Xc`s8N(`s*t~>
+g]%J9s8V'%bk:o6!fI&orr3"W;mcT)!.k1DrrBfbs+13CrrMN5fDbs?X\Vakrr]B!\b=&CrrA;`
+J,~>
+g]%J9s8V'%bk:o6!fI&orr3"W;mcT)!07'\j4X.mrrBfbs+13$s7H<nmB'/[rVlu%:V$2=s8N(`
+s*t~>
+g]%J9s8V'%bk:o6!fI&orr3"W;mcT)!.k1DrrBfbs+13CrrMN5OT5=\PlH7~>
+g]%?,BT)fh!6kHB!pfmer;Qe2f<tYY!.k0$s+13;rrUl;p=0*B`;T`:cbKM[!0mM6~>
+g]%?,BT)fh!6kHB!pfmer;Qe2f<tYY!07']A,lV3JcC<$JcFX-!6"j:!7/F[rrA;`J,~>
+g]%?,BT)fh!6kHB!pfmer;Qe2f<tYY!.k0$s+13;rrUl;p5T+P!0mM6~>
+gA_/!qZ$fYs8U:CMu<SU[*5rXrr@WMJcC<$RK!E`:B38ugA_3ImJ[%e2#mW?^]4<6PlH7~>
+gA_/!qZ$fYs8U:CMu<SU[*5rXrrA)Z"0Ic0c[l+Is+142rrMi\rVlsW!!&4ts8N(`s*t~>
+gA_/!qZ$fYs8U:CMu<SU[*5rXrr@WMJcC<$RK!E`:B38uNrT+ZPlH7~>
+g]%`7!4;G!s4<0-s8U:CMu3MSVmZR)!.k1DrrBfbs+13HrrAbl!!'.Vrr_YP2,F2N!j-U`^An35
+PlH7~>
+g]%`7!4;G!s4<0-s8U:CMu3MSVmZR)!.k1DrrBfbs+13$s82fum?9D'rVlr$Fi;#orrA;`J,~>
+g]%`7!4;G!s4<0-s8U:CMu3MSVmZR)!.k1DrrBfbs+13HrrAbl!!'-]s8N(`s*t~>
+g]%;4iVWWYMp24F!/paS!4906rr@WMpAY--JcC<$VZ-YLrVuq/g]%8lrVurE\GuR/PlH7~>
+g]%;4iVWWYMp24F!/paS!4906rrA,["7<5:g$J_=^OcE9s+14IrrC":!!(?Ts8N(`s*t~>
+g]%;4iVWWYMp24F!/paS!4906rr@WMpAY--JcC<$VZ-YLrVuq/NW9"YPlH7~>
+g]%83qYp_sbl>leMu3MSVmZR)!.k1DrrBfbs+13JrrMghrVurYi;WiOmJd+gp,)gMTt(.&!0mM6~>
+g]%83qYp_sbl>leMu3MSVmZR)!0@-[g&;!<rrBfbs+13$rrW5omJd+gp,)gMTt(.&!0mM6~>
+g]%83qYp_sbl>leMu3MSVmZR)!.k1DrrBfbs+13JrrMghrVurYNW9"YPlH7~>
+g]%;4fDGROHHcE5!/pdT!N4/Ls8N(Ms7ZHm^OcE9s/5l"feia0Xl99^m@cC5rVlr$PM*GFrrA;`
+J,~>
+g]%;4fDGROHHcE5!/pdT!N4/Ls8N([rr_u@Xf^si!5F*bJcC?%"7;d>:]::pXcqGIs8N(`s*t~>
+g]%;4fDGROHHcE5!/pdT!N4/Ls8N(Ms7ZHm^OcE9s/5l"feia0Xc3;[!0mM6~>
+g]%`7!4;+ms4<0-s8TG+Mu<SUB\0Zlrr@WMpAY--JcC<$W;d"fs6Xr>i;WeqrVurOZ2ah(PlH7~>
+g]%`7!4;+ms4<0-s8TG+Mu<SUB\0Zlrr@WMpAY--JcC<$K)YhhrVurOZ2ah(PlH7~>
+g]%`7!4;+ms4<0-s8TG+Mu<SUB\0Zlrr@WMpAY--JcC<$W;d"fs6Xr>MuWeWPlH7~>
+gA_/[qZ$h6beR-W;p>7@!K0m`s8N(Ms7ZHm^OcE9s/Z/%fqD2!rr2ucjSo5Rrr3,p2#mW?Z2ah(
+PlH7~>
+gA_/[qZ$h6beR-W;p>7@!K0m`s8N([rr]fqXi0T+!5F*bJcCK)!;?El"SO\Q!0a\frrA;`J,~>
+gA_/[qZ$h6beR-W;p>7@!K0m`s8N(Ms7ZHm^OcE9s/Z/%fqD2!rr2ucMuWeWPlH7~>
+g&DZ.;ZHf2m,=k#Vr?S7BT#eLm'Qfm!.k1DrrBfbs+13QrrVSO2>mLTcf>$,`+4#hrrSmJfs(MV
+!0mM6~>
+g&DZ.;ZHf2m,=k#Vr?S7BT#eLm'Qfm!0@-^FT;Dqm/I(#JcC<$M#ROpA9IkN!hk>$YlF_'PlH7~>
+g&DZ.;ZHf2m,=k#Vr?S7BT#eLm'Qfm!.k1DrrBfbs+13QrrVSO2>mLTc\VW$!0mM6~>
+c2RdNrVurBZiC%*JcC<$JcDVI"STe6s6][`!28KR!4i(/!84CPrrA;`J,~>
+c2RdNrVurBZiC%*NrT.4!98Y1JcC<$oD\g$rVurOWrN)!PlH7~>
+c2RdNrVurBZiC%*JcC<$JcDVI"STe6s6][`!255KrrA;`J,~>
+bl7b;iU!lMrr@WMJcC<$WW*Iq\RY[?ci=#@!!"m?`:i9l"SO\Q!/7HQrrA;`J,~>
+bl7b;iU!lMrr@WMJcC<$JcG]K"SO\Q!/7HQrrA;`J,~>
+bl7b;iU!lMrr@WMJcC<$WW*Iq\RY[?ci=#@!!"m?`:f#errA;`J,~>
+W;d(;MZ<`UMrFO4!fNu#rr3)Zb\55ds8N(Ms7ZHm^OcE9s0hq-AGcE2PQ1ZnU!Mm$!qraMrVltn
+:V$2!s8N(`s*t~>
+W;d(;MZ<`UMrFO4!fNu#rr3)Zb\55ds8N([rrY-$Fm\Pq!5F*bJcCf2!qraMrVltn:V$2!s8N(`
+s*t~>
+W;d(;MZ<`UMrFO4!fNu#rr3)Zb\55ds8N(Ms7ZHm^OcE9s0hq-AGcE2PQ1ZnU!JDlrrA;`J,~>
+cMmm&hZ!oKHF3&=s0Mb+Mu3MSMu!DRMsC?B!.k1DrrBfbs+13^rrr,,j8]-iqu?_Nir9/72#mX0
+rr2ulVuQbsPlH7~>
+cMmm&hZ!oKHF3&=s0Mb+Mu3MSMu!DRMsC?B!0I3\pAP$lg$J_=^OcE9s,d6`feia0g&D!Op8@rj
+!0mM6~>
+cMmm&hZ!oKHF3&=s0Mb+Mu3MSMu!DRMsC?B!.k1DrrBfbs+13^rrr,,j8]-iqu?_NJcGcMrrA;`
+J,~>
+cMmkEhZ!V7bl%JCi;`jkr;QbTqu?arbj#0-!.k1DrrBfbs+13`rs\:Y2#rj?s/c8$A@_*drrDcl
+!!%/:s8N(`s*t~>
+cMmkEhZ!V7bl%JCi;`jkr;QbTqu?arbj#0-!0.!ZmIooH!5F*bJcCi3!;?Bl!-P(:rrA;`J,~>
+cMmkEhZ!V7bl%JCi;`jkr;QbTqu?arbj#0-!.k1DrrBfbs+13`rs\:Y2#rj?s/c8$A@_)Ys8N&u
+!0mM6~>
+g&D&rpko/d!8d_U;u6LrMZ<b/rVm%ZiO#MiiTL7@!.k1DrrBfbs+13brrM/Dr;[!Ys8VJsmGn3I
+mCE2q"-W_-fq\TI!0mM6~>
+g&D&rpko/d!8d_U;u6LrMZ<b/rVm%ZiO#MiiTL7@!.k1DrrBfbs+138rrMMtrVlt`!-Qtis8N(`
+s*t~>
+g&D&rpko/d!8d_U;u6LrMZ<b/rVm%ZiO#MiiTL7@!.k1DrrBfbs+13brrM/Dr;[!Ys8VJsm=G<7
+s8N(`s*t~>
+gA_/!o`3nL"2Fm:bl%JC^]4AMrVlkUirB#YJcGHD!5F*bJcELb!0d<\!G(TVrri%t!!)'YrrMN?
+U&Y,mPlH7~>
+gA_/!o`3nL"2Fm:bl%JC^]4AMrVlkUirB#YOT,Eb!!%`=rrBfbs+13:rri%t!!)'YrrMN?U&Y,m
+PlH7~>
+gA_/!o`3nL"2Fm:bl%JC^]4AMrVlkUirB#YJcGHD!5F*bJcELb!0d<\!G(SKs7cQn!0mM6~>
+g]%?A!!)eP!GDJjrr^IF!/pdT"3^`F[/L")MrOd:!.k1DrrBfbs+13frrg8os8VKc!!.f,hu<]D
+rVuq^SH&ThPlH7~>
+g]%?A!!)eP!GDJjrr^IF!/pdT"3^`F[/L")MrOd:!0I3_`-"juli-t"JcC<$Qi@'QrVuq^SH&Th
+PlH7~>
+g]%?A!!)eP!GDJjrr^IF!/pdT"3^`F[/L")MrOd:!.k1DrrBfbs+13frrg8os8VKc!!.f,JcGEC
+rrA;`J,~>
+g]%;P[.aM"!8meYm!;USr;QlC!!&qqrr@u:s8N(Ms7ZHm^OcE9s2Y-Ip;DYB!!'t;s-&Z6h#@J?
+!!%/3s8N(`s*t~>
+g]%;P[.aM"!8meYm!;USr;QlC!!&qqrr@u:s8N(Ms7ZHm^OcE9s-EZeP5kT*SH&ThPlH7~>
+g]%;P[.aM"!8meYm!;USr;QlC!!&qqrr@u:s8N(Ms7ZHm^OcE9s2Y-Ip;DYB!!'t;s-&Z6JcG?A
+rrA;`J,~>
+g]%8\p&>!lf)GiM!!'h5rs"D]f2DYL[-7Pi!.k0$s+13^s8)crFl*-#p8p4>rr3&eL"VsqrrA;`
+J,~>
+g]%8\p&>!lf)GiM!!'h5rs"D]f2DYL[-7Pi!0I3^j4X-Ws+13(rr_ts2=:DC!pt]pS,`KgPlH7~>
+g]%8\p&>!lf)GiM!!'h5rs"D]f2DYL[-7Pi!.k0$s+13^s8)crFb0S\s8N(`s*t~>
+g]%8Oao;Hh!!)]js8Ru]VtL)_;cCp*s8N(Ms+13$s2"^>j.U#%s8R6?!!,m+hZ![8!!&4Js8N(`
+s*t~>
+g]%8Oao;Hh!!)]js8Ru]VtL)_;cCp*s8N(\rrZ$s!3LhPJcCK)"#U&YPEl1J!0mM6~>
+g]%8Oao;Hh!!)]js8Ru]VtL)_;cCp*s8N(Ms+13$s2"^>j.U#%s8R6?!!,m+JcG0<rrA;`J,~>
+g]%<@Mt[/Nbh)jsbQ%Xer;QeUbl%JB3<8%(s8N(Ms7ZHm^OcE9s3CWE`;T`AL&_1`!)K<Ah#@A<
+rVurcQN-sbPlH7~>
+g]%<@Mt[/Nbh)jsbQ%Xer;QeUbl%JB3<8%(s8N(\rr]BsFjKCR!5F*bJcD;@!0dB^!:?*PrrA;`
+J,~>
+g]%<@Mt[/Nbh)jsbQ%Xer;QeUbl%JB3<8%(s8N(Ms7ZHm^OcE9s3CWE`;T`AL&_1`!)K<AJcG*:
+rrA;`J,~>
+gA_2\Mtd5O!8.;Rli7$`qu6Z?qu6_U!!)?brr@WMpAY--JcC<$ci4!`quHcs!VYR2rrVnrmJd+f
+m/Tr#Q2gjaPlH7~>
+gA_2\Mtd5O!8.;Rli7$`qu6Z?qu6_U!!)?brr@WMpAY--JcC<$U]1DhXmQ,f"76(a`0LB&!0mM6~>
+gA_2\Mtd5O!8.;Rli7$`qu6Z?qu6_U!!)?brr@WMpAY--JcC<$ci4!`quHcs!VYQ)s69R`!0mM6~>
+g&D,\;mcE$!T=%2rrS)YMt?rNZiC*Xm/QbZJcGcM!5F*bJcF*s!9="X!enSdh>[SN2#rj=rrD)L
+s7QGWs*t~>
+g&D,\;mcE$!T=%2rrS)YMt?rNZiC*Xm/QbZRf<KWXi/oXrrBfbs+13Grr\rP!0dB]!99ULp&L?W
+J,~>
+g&D,\;mcE$!T=%2rrS)YMt?rNZiC*Xm/QbZJcGcM!5F*bJcF*s!9="X!enSdJcG3=p&L?WJ,~>
+g]%8OoDmSE!fI&co)Ag9!!&q`s7QGDs8W*!^OcE9s3UcKj#$f:\_@&`PPtO^m?mqI!0mM6~>
+g]%8OoDmSE!fI&co)Ag9!!&q`s7QG]rrCaO!:'Ra^OcE9s.oYpPPtO^m?mqI!0mM6~>
+g]%8OoDmSE!fI&co)Ag9!!&q`s7QGDs8W*!^OcE9s3UcKj#$f:\UjeIs7QGWs*t~>
+g]%8\oDmVF!mFU0q>UN'VsO?]"3^`F[-[hm!.k1DrrBfbs+13rrrV4kPMZ<?cgC`3"QKI^FmY7i
+rrA;`J,~>
+g]%8\oDmVF!mFU0q>UN'VsO?]"3^`F[-[hm!0R9`p<TkClMgk!JcC<$WW*"FmJd+girB(%m>q;I
+!0mM6~>
+g]%8\oDmVF!mFU0q>UN'VsO?]"3^`F[-[hm!.k1DrrBfbs+13rrrV4kPC`bns8N(`s*t~>
+g]%?,!8%#G!T=%5rrUdPiV`][fDkld!!'D(rr^IF!2o2`rr@WMpAY--JcC<$e,KU=:ZMKTp>>lP
+\PE3hrVlnlfo?%3!0mM6~>
+g]%?,!8%#G!T=%5rrUdPiV`][fDkld!!'D(rr^IF!2o2`rr@WMpAY--JcC<$X8`:4:B6UWrrJhH
+NW9"YPlH7~>
+g]%?,!8%#G!T=%5rrUdPiV`][fDkld!!'D(rr^IF!2o2`rr@WMpAY--JcC<$e,KU=:ZMKTp4<8&
+s8N(`s*t~>
+g]%<5!;?Em!8RSUbQ,lbrs.Mis8Tk7!1Ecb"3^`F_!M+$!.k1DrrBfbs+14"rri%+!&`fmrreMc
+!&aJ+s8N(`s*t~>
+g]%<5!;?Em!8RSUbQ,lbrs.Mis8Tk7!1Ecb"3^`F_!M+$!0R9`Xcom*lMgk!JcC<$X8`<d!!"nM
+M#[JTPlH7~>
+g]%<5!;?Em!8RSUbQ,lbrs.Mis8Tk7!1Ecb"3^`F_!M+$!.k1DrrBfbs+14"rri%+!&`efs53kV
+!0mM6~>
+g]%<Im.UGZm+q[CbZ!Ktrs,p_s8U\LVtKuf",d-ZiU$UE!.k0$s+13lrrMh(rVuq@j8T2S\`<\h
+"PEbT2<0MmrrA;`J,~>
+g]%<Im.UGZm+q[CbZ!Ktrs,p_s8U\LVtKuf",d-ZiU$UE!0R9`FT;E*JcC<$RK!?^\`<\h"PEbT
+2<0MmrrA;`J,~>
+g]%<Im.UGZm+q[CbZ!Ktrs,p_s8U\LVtKuf",d-ZiU$UE!.k0$s+13lrrMh(rVuq@JcFX-rrA;`
+J,~>
+cMmn'hZ!ZD;eZ#c!<CaNrrG.Qqu6^X!2o/_rr@WMJcC<$b5VM9AGuQ0AG5*a"-W]bPPtL^Tu;]c
+rrA;`J,~>
+cMmn'hZ!ZD;eZ#c!<CaNrrG.Qqu6^X!2o/_rrA/\s4ID>JcC<$Rf<JR!!&5]rrJh3LB%8RPlH7~>
+cMmn'hZ!ZD;eZ#c!<CaNrrG.Qqu6^X!2o/_rr@WMJcC<$b5VM9AGuQ0AG1TShuE]VPlH7~>
+cMmkEhZ!RhpAb3[rr3#C;uHXsH2pn/s8N(Ms7ZHm^OcE9s472MU&G#mAG5'`"GHgU2>2V$rrA;`
+J,~>
+cMmkEhZ!RhpAb3[rr3#C;uHXsH2pn/s8N(Ms7ZHm^OcE9s0DY-K`D*1p4<8D!0mM6~>
+cMmkEhZ!RhpAb3[rr3#C;uHXsH2pn/s8N(Ms7ZHm^OcE9s472MU&G#mAG1TShZ*TUPlH7~>
+ci4%)!8meVbk;&7rs5M_[*6a-!/p4/s8N(Ms7ZHm^OcE9s472Qj(&-ImHFQOp;H@trrh!T!-R[[
+s8N(`s*t~>
+ci4%)!8meVbk;&7rs5M_[*6a-!/p4/s8N(]rrY-$Fm\Jo!5F*bJcE7[!qsS"rr3,S!!%0/JcG`M
+PlH7~>
+ci4%)!8meVbk;&7rs5M_[*6a-!/p4/s8N(Ms7ZHm^OcE9s472Qj(&-Im=G;ns8N(`s*t~>
+iVrs>!8%5M!/pILc2Rt?^pL#`m-+KL!.k1DrrBfbs+14(rs.qFL&_2HFlV]c"0FE\U&FulXlG!4
+s8W*!PlH7~>
+iVrs>!8%5M!/pILc2Rt?^pL#`m-+KL!0[?^mJ[(cg$8S;^OcE9s1/.3XYg*PrVlo#j+771s8N(`
+s*t~>
+iVrs>!8%5M!/pILc2Rt?^pL#`m-+KL!.k1DrrBfbs+14(rs.qFL&_2HFlS&Qh#IBSPlH7~>
+ir9+r!!%rVrr@uL!3ZA%!.k1DrrBfbs+14*rrMhWrVurOjSo@*!!"nMJcGTHrrA;`J,~>
+ir9+r!!%rVrr@uL!3ZA%!0@-\mIoiF!5F*bJcE:\"Ea\E2>2V$qZ$QqPlH7~>
+ir9+r!!%rVrr@uL!3ZA%!.k1DrrBfbs+14*rrMhWrVurOJcFC&rrA;`J,~>
+iVrs>!8%5M!mCZ2q#:BR!3ZA%!.k1DrrBfbs+14,rrVnr2>mLTL$AU<g%PFF"PEbT:[N`5qZ$Qq
+PlH7~>
+iVrs>!8%5M!mCZ2q#:BR!3ZA%!0[?^p?)AT^OcE9s1\L6g%PFF"PEbT:[N`5qZ$QqPlH7~>
+iVrs>!8%5M!mCZ2q#:BR!3ZA%!.k1DrrBfbs+14,rrVnr2>mLTKn99Vs8N(`s*t~>
+g]%;u!;?Em!3ZA%!.k1DrrBfbs+14,rrMgNr;Zk^mHacS`,u'^rVln^fn'1us8N(`s*t~>
+g]%;u!;?Em!3ZA%!0[?aXT/?Tl2LauJcC<$_#FMTFTAQBrrJ>:JcGNFrrA;`J,~>
+g]%;u!;?Em!3ZA%!.k1DrrBfbs+14,rrMgNr;Zk^m=G;is8N(`s*t~>
+g]%<Im.UGZm&pBg!.k1DrrBfbs+140rs@_ZU&Y.p!!%/pl2Lm/!!"nMJcG?ArrA;`J,~>
+g]%<Im.UGZm&pBg!0[?a`-"jul2LauJcC<$_#FO[!!"nMJcG?ArrA;`J,~>
+g]%<Im.UGZm&pBg!.k1DrrBfbs+140rs@_ZU&Y.p!!%/pJcF=$rrA;`J,~>
+JcGTHrr@WMJcC<$g&D-6ThkXf"SVlhL"Yhm!U]U[rrh!T!&`efs7?9j!0mM6~>
+JcGTHrr@WMJcC<$\c2]tpAY'pf`2"0j+77%s8N(`s*t~>
+JcGTHrr@WMJcC<$g&D-6ThkXf"SVlhL"V%WeGoOKPlH7~>
+cMmm&Y5eM%JcC<$JcFI(!4ht,!6"1&"4)Z$Xo88$A?GQVs763i!0mM6~>
+cMmm&Y5eM%P5bUDg%L!sJcDkP"4)Z$Xo88$A?GQVs763i!0mM6~>
+cMmm&Y5eM%JcC<$JcFI(!4ht,!5sHgd/X+GPlH7~>
+cMmkEY5eM%JcGHD!5F*bJcG$8"N4+0s6]^a!JT4lrr[rT!&]?-li6tbPlH7~>
+cMmkEY5eM%P5bVA!!'.crrBfbs+13jrr[rT!&]?-li6tbPlH7~>
+cMmkEY5eM%JcGHD!5F*bJcG$8"N4+0s6]^a!JT3Xs3UfG!0mM6~>
+g&D&rpko/d!3ZA%!.k1DrrBfbs+14:rsQb@!!'t;s("!@`:iTu!RL04rrCCE!!)&1s6Tdc!0mM6~>
+g&D&rpko/d!3ZA%!0[?aXeBmjl2LauJcC<$bl7^imJd+cci*nEj+76ss8N(`s*t~>
+g&D&rpko/d!3ZA%!.k1DrrBfbs+14:rsQb@!!'t;s("!@`:ec^cN!nEPlH7~>
+gA_/!o`2/prr@WMpAY--JcC<$mf*=@Fo;:BL&_2?li.'t:B7NqrrQ`)m=G<'s8N(`s*t~>
+gA_/!o`2/prr@WMpAY--JcC<$cMn!W:B7NqrrQ`)m=G<'s8N(`s*t~>
+gA_/!o`2/prr@WMpAY--JcC<$mf*=@Fo;:BL&_2?JcEmmrrA;`J,~>
+g]%?A!!)eP!GDJ9s8N(Ms7ZHm^OcE9s6fme:]17o:XA8)"*FSD:P&Q,s8N(`s*t~>
+g]%?A!!)eP!GDJ9s8N(_rr_Yj`7aAS!5F*bJcF$q"*FSD:P&Q,s8N(`s*t~>
+g]%?A!!)eP!GDJ9s8N(Ms7ZHm^OcE9s6fme:]17o:X=Ula8c/>PlH7~>
+g]%;P[.aM"!3ZA%!.k1DrrBfbs+14@rs8#<s8U";!&^nErrMN\rr3,>!!"n:JcFj3rrA;`J,~>
+g]%;P[.aM"!3ZA%!0dE_g&;!8rrBfbs+14!rrMN\rr3,>!!"n:JcFj3rrA;`J,~>
+g]%;P[.aM"!3ZA%!.k1DrrBfbs+14@rs8#<s8U";!&^m0s2G$<!0mM6~>
+g]%8\p&>!lY5eM%JcGHD!5F*bJcGBB$0.3L!:BgdFfkB(rr^r.!4i(.!JSICs5X.Z!0mM6~>
+g]%8\p&>!lY5eM%PQ(aPfr_C?rrBfbs+14#rr^r.!4i(.!JSICs5X.Z!0mM6~>
+g]%8\p&>!lY5eM%JcGHD!5F*bJcGBB$0.3L!:BgdFfk@gs2=s;!0mM6~>
+g]%8OU&Y,mJcGHD!5F*bJcGKE!qsQCr;Zh]kPkW[!!#fGs5!_T!0mM6~>
+g]%8OU&Y,mJcGHD!5F*bJcF:#"&Ams:P&Q%s8N(`s*t~>
+g]%8OU&Y,mJcGHD!5F*bJcGKE!qsQCr;Zh]JcELbrrA;`J,~>
+g]%<@Mt[/Nbc_!G!.k1DrrBfbs+14ErrMgNqu?_Nm/R+Zrr2u:rVurYJcFU,rrA;`J,~>
+g]%<@Mt[/Nbc_!G!0dEbTnTVekl1XtJcC<$gAh3Hrr2u:rVurYJcFU,rrA;`J,~>
+g]%<@Mt[/Nbc_!G!.k1DrrBfbs+14ErrMgNqu?_NJcELbrrA;`J,~>
+gA_2\Mtd5O!3ZA%!.k0$s+14>rs&28A?Gn3PPtO_PM,@'"5/k<\c)O0A<ZD3s5!_T!0mM6~>
+gA_2\Mtd5O!3ZA%!0dEbFT;E8JcC<$_Z'_kP5r/lrrQ_pm=G;ns8N(`s*t~>
+gA_2\Mtd5O!3ZA%!.k0$s+14>rs&28A?Gn3PPtO_PM(Ne^An35PlH7~>
+g&D,\;mcE$!T=$]s8N(Ms+13$s7-*rfeia0:]LIT:V$2brrZd3!)J1Gf)PaMPlH7~>
+g&D,\;mcE$!T=$]s8N(^s8UaPm=G:gs2+d<A,lU*JcF=$rrA;`J,~>
+g&D,\;mcE$!T=$]s8N(Ms+13$s7-*rfeia0:]LIT:V$1Ms1JC3!0mM6~>
+g]%8OoDl&orr@WMpAY--JcC<$rr2u#qu?`Cli."QpAY'l`;T`:fn'1Ts8N(`s*t~>
+g]%8OoDl&orr@WMpAY--JcC<$iVrrGpAY'l`;T`:fn'1Ts8N(`s*t~>
+g]%8OoDl&orr@WMpAY--JcC<$rr2u#qu?`CJcE4ZrrA;`J,~>
+g]%8\oDl&orr@WMpAY--JcC<$s8N);r;Zmp\b>Fj"2o<^`;T];:Qt0ss475M!0mM6~>
+g]%8\oDl&orrA8_"#Y4Dj66LC^OcE9s5X+]`,u'urVlppPO3r$f)PaMPlH7~>
+g]%8\oDl&orr@WMpAY--JcC<$s8N);r;Zmp\b:US\,ZI.PlH7~>
+g]%?,!8%#G!T=$]s8N(Ms7ZHm^OcE9s8N$#A,lV3lMgrs!!#fGs3L`F!0mM6~>
+g]%?,!8%#G!T=$]s8N(`rrh_3!!)'CrrBfbs+141rrZd3!)J1Gci="FPlH7~>
+g]%?,!8%#G!T=$]s8N(Ms7ZHm^OcE9s8N$#A,lV3JcE+WrrA;`J,~>
+g]%<5!;?Em!3ZA%!.k1DrrBfbs+:7TXeGdpm8)F'rrLgHrr2u:rVurcJcF*srrA;`J,~>
+g]%<5!;?Em!3ZA%!0[?_p;H.o!5F*bJcFs6!SR2GrrC":!!)D;s3UfG!0mM6~>
+g]%<5!;?Em!3ZA%!.k1DrrBfbs+:7TXeGdpm8)Dds0Mb*!0mM6~>
+g]%<Im.UGZm&pBg!.k1DrrBfbs+LCTp2p?8cg:Z6\PE4Drr3)oA?G6Ms3L`F!0mM6~>
+g]%<Im.UGZm&pBg!0mKa\`;fO!5F*bJcG$8"1_2-`;]c=p11;mJcF'rrrA;`J,~>
+g]%<Im.UGZm&pBg!.k1DrrBfbs+LCTp2p?8c[l,"s8N(`s*t~>
+JcGTHrr@WMpAY--JcCH(!SK@0!!"nCrrZ$s!+^Z\aT)8?PlH7~>
+JcGTHrrA>a"QKI^:ZLX<!5F*bJcG$8"&AmsA:ad%s8N(`s*t~>
+JcGTHrr@WMpAY--JcCH(!SK@0!!"m-s0)J&!0mM6~>
+cMmm&h#@SoMZ<`UMrFL3#2tJdMgC<?l2Ub`JcGHD!5F*bLAq7Ur;ZjUg%#(Bj8Ju\\GuUem=G;Z
+s8N(`s*t~>
+cMmm&h#@SoMZ<`UMrFL3#2tJdMgC<?l2Ub`Q2_!\\TIoGkPkOsJcC<$n,ECJrVm#2!!"nDJcEjl
+rrA;`J,~>
+cMmm&h#@SoMZ<`UMrFL3#2tJdMgC<?l2Ub`JcGHD!5F*bLAq7Ur;ZjUfn'1,s8N(`s*t~>
+cMmkEhZ!oKHF3&=s0Mb+Mu3MUbW3oHrrUD)bj,6.!.k0$s+14Lrri&6s8UFE!!.69o)Ag1FTBAZ
+rrVn:`.@s/s8N(`s*t~>
+cMmkEhZ!oKHF3&=s0Mb+Mu3MUbW3oHrrUD)bj,6.!.k0$s+143rr^2^!6"m:!qpcTJcEdjrrA;`
+J,~>
+cMmkEhZ!oKHF3&=s0Mb+Mu3MUbW3oHrrUD)bj,6.!.k0$s+14Lrri&6s8UFE!!.69JcDnQrrA;`
+J,~>
+g&D&rpko/d!8d_VMp2,!"5s4[B`7r4i;g[krrTt9bj5</!.k0$s+11Ws4NS9!:Bgd:B7NdrrZ$s
+!+^Z\_>jN8PlH7~>
+g&D&rpko/d!8d_VMp2,!"5s4[B`7r4i;g[krrTt9bj5</!1*Wem<,PkJcC<$eGfVH!!$P\s2"a8
+!0mM6~>
+g&D&rpko/d!8d_VMp2,!"5s4[B`7r4i;g[krrTt9bj5</!.k0$s+11Ws4NS9!:Bgd:B7MJs/c8#
+!0mM6~>
+gA_/!o`3kK!)rao",d-ZfDbdNMZEVRrrDBbrr@WMpAY--JcCf2!qs0#r;Ztas8UF4o`"pOrVm#&
+!!"nDJcEUerrA;`J,~>
+gA_/!o`3kK!)rao",d-ZfDbdNMZEVRrrDBbrrAAb!71WE!:AqK!5F*bJcGHD!9=%X"K_Y(2=5tp
+_Z0W9PlH7~>
+gA_/!o`3kK!)rao",d-ZfDbdNMZEVRrrDBbrr@WMpAY--JcCf2!qs0#r;Ztas8UF4JcDeNrrA;`
+J,~>
+g]%?A!!)eP!GDJjrr^%:!6kB@"2Fm:_#FB6!;c`q!!(70s8N(Ms7ZHm^OcEJrrh$8s8OtS!!%04
+rr]f-!6"m:"869-p4<7[s8N(`s*t~>
+g]%?A!!)eP!GDJjrr^%:!6kB@"2Fm:_#FB6!;c`q!!(70s8N(arrVSuU#l:S^OcE9s7lTr\PE4D
+rr3)oA?GQVs2"a8!0mM6~>
+g]%?A!!)eP!GDJjrr^%:!6kB@"2Fm:_#FB6!;c`q!!(70s8N(Ms7ZHm^OcEJrrh$8s8OtS!!%.m
+s/5ns!0mM6~>
+g]%;P[.aM"!8meYbQ%X$r;R&H!!'D+s0McaqYpVT!/p4Drr@WMpAY--JcD&9%IL][2#s?Ms.KDm
+23[(jrrZ$s!-Nkm])Vd1PlH7~>
+g]%;P[.aM"!8meYbQ%X$r;R&H!!'D+s0McaqYpVT!/p4DrrAAb!:AeG!5F*bJcGNF"&AmsFb0S(
+s8N(`s*t~>
+g]%;P[.aM"!8meYbQ%X$r;R&H!!'D+s0McaqYpVT!/p4Drr@WMpAY--JcD&9%IL][2#s?Ms.KDm
+23['Os/,hr!0mM6~>
+g]%8\p&>!lhu<fFH;i&crs6gK!2oksMZA\3rrS)YB^Gd!!.k1DrrBfbs-N`cL&:oT:]LI^AAn36
+rrC"9rrfG(!&aJ$s1A=2!0mM6~>
+g]%8\p&>!lhu<fFH;i&crs6gK!2oksMZA\3rrS)YB^Gd!!13]fcN%LXjSo4pJcC<$rVll9rVm#&
+!!"nMJcE@^rrA;`J,~>
+g]%8\p&>!lhu<fFH;i&crs6gK!2oksMZA\3rrS)YB^Gd!!.k1DrrBfbs-N`cL&:oT:]LI^AAn1m
+s.o\p!0mM6~>
+g]%8Oao;XE!!'h7rr<%WqYpVT!!)Bcrr@WMpAY--JcD8?"mrG&s8T5!!!+tNo)AjdX\SrCrr3)f
+Fi=!)s1871!0mM6~>
+g]%8Oao;XE!!'h7rr<%WqYpVT!!)BcrrADc"4(KX2<=c;^OcE9rrrGrX\SrCrr3)fFi=!)s1871
+!0mM6~>
+g]%8Oao;XE!!'h7rr<%WqYpVT!!)Bcrr@WMpAY--JcD8?"mrG&s8T5!!!+tNJcDABrrA;`J,~>
+g]%<@Mt[/Nbgue"H2ms<s8N'!Mu*GTMZ<bDs8N(Ms7ZHm^OcEWrse\?A,lU*s8UaP!+`4bnG`Xb
+2#mW!JcE(VrrA;`J,~>
+g]%<@Mt[/Nbgue"H2ms<s8N'!Mu*GTMZ<bDs8N(arrMN5jSo4pJcC<$"on9R!!%.ms0Mb*!0mM6~>
+g]%<@Mt[/Nbgue"H2ms<s8N'!Mu*GTMZ<bDs8N(Ms7ZHm^OcEWrse\?A,lU*s8UaP!+`4bJcD;@
+rrA;`J,~>
+gA_2\Mtd5O!8%5QbQ%Xerr;uu!/p^R!fI$Ym/R(cJcGHD!5F*bT`5#1qZ$cFs8U%2nc&UVrVm#&
+!!#ggJcE+WrrA;`J,~>
+gA_2\Mtd5O!8%5QbQ%Xerr;uu!/p^R!fI$Ym/R(cR/[6T\aADV!5F*bK`;&>rVm#&!!#ggJcE+W
+rrA;`J,~>
+gA_2\Mtd5O!8%5QbQ%Xerr;uu!/p^R!fI$Ym/R(cJcGHD!5F*bT`5#1qZ$cFs8U%2JcD2=rrA;`
+J,~>
+g&D,\;mcE$!T=%2rr_Tf!2oeqrr<%WqYpVT!!)Bcrr@WMJcD):"53_Sj88lXL"Yqp"5.esg&D!Q
+p3"<)s0D\)!0mM6~>
+g&D,\;mcE$!T=%2rr_Tf!2oeqrr<%WqYpVT!!)BcrrAGd"0DP'A:ac3s6'Cafl[;Jrr3&nFi8k2
+ZN'q)PlH7~>
+g&D,\;mcE$!T=%2rr_Tf!2oeqrr<%WqYpVT!!)Bcrr@WMJcD):"53_Sj88lXL"V%WQN-sbPlH7~>
+g]%8OoDmPD!fI&:r;Zcs!/p^R!fI$Ym/QbZJcC<$UAkS=:B9e^s%`W*\aAea"#U&YFb0S#s7QGW
+s*t~>
+g]%8OoDmPD!fI&:r;Zcs!/p^R!fI$Ym/QbZU&P5TX^m-:s+145rrY+Y!-Nkm[K#q#PlH7~>
+g]%8OoDmPD!fI&:r;Zcs!/p^R!fI$Ym/QbZJcC<$UAkS=:B9e^s%`W*\a=tJScAB`PlH7~>
+g]%8\oDmSE!fI&cqu?Zr!/p^R!fI$Ym/QbZJcGcM!5F*bVuHe9:]:=sPQ1[/j6HXEXo8;#m=G;G
+s7QGWs*t~>
+g]%8\oDmSE!fI&cqu?Zr!/p^R!fI$Ym/QbZJcGcM!5F*bLAq7UrVurcJcE1Yp&L?WJ,~>
+g]%8\oDmSE!fI&cqu?Zr!/p^R!fI$Ym/QbZJcGcM!5F*bVuHe9:]:=sPQ1[/j+76!s7QGWs*t~>
+g]%?,!8%#G!T=%4rrUDCm/$_`BE3terrS)Y;saPa!.k1DrrBfbs/>qtAGcE-:[S/ap:3uPrr3)f
+250Dgs/c8#!0mM6~>
+g]%?,!8%#G!T=%4rrUDCm/$_`BE3terrS)Y;saPa!1Eih`.bbhir9"nJcC`0"899$g&D!Rm5:U)
+JcDhOrrA;`J,~>
+g]%?,!8%#G!T=%4rrUDCm/$_`BE3terrS)Y;saPa!.k1DrrBfbs/>qtAGcE-:P&P*s8N(`s*t~>
+g]%<5!;?Em!8IMTf)Xe-rrq$Ss/,jTqYpVT!/p4Drr@WMpAY--JcDeN"7?-gXo8;$:W2W""&Ams
+Fb0Rhs8N(`s*t~>
+g]%<5!;?Em!8IMTf)Xe-rrq$Ss/,jTqYpVT!/p4DrrAJe"-W]bAE*Uh^OcEErrZ$s!-NkmV>pPq
+PlH7~>
+g]%<5!;?Em!8IMTf)Xe-rrq$Ss/,jTqYpVT!/p4Drr@WMpAY--JcDeN"7?-gXo8;$:W.haN;rnX
+PlH7~>
+g]%<Im.UGZm+hUBbQ,lbrs%Ghs8U:C;u6Lq;ZN`^s8N(Ms7ZHm^OcEers6P=:]LIg2,D0UrrAbl
+!!)D;s/,hr!0mM6~>
+g]%<Im.UGZm+hUBbQ,lbrs%Ghs8U:C;u6Lq;ZN`^s8N(drrV5_`8^ds^OcEErrAbl!!)D;s/,hr
+!0mM6~>
+g]%<Im.UGZm+hUBbQ,lbrs%Ghs8U:C;u6Lq;ZN`^s8N(Ms7ZHm^OcEers6P=:]LIg2,D/As,-jV
+!0mM6~>
+WW*%D;rRWR!OUJXrrH$uqZ$Qq!9*;Err@WMpAY--JcDqR!SM#_!!BA's5WSJ"89ZDg&D!Rm/Tr#
+JcDSHrrA;`J,~>
+WW*%D;rRWR!OUJXrrH$uqZ$Qq!9*;ErrAMf!U]U<rrBfbs-3Ncp;CLprr3)f!)LOas/#bq!0mM6~>
+WW*%D;rRWR!OUJXrrH$uqZ$Qq!9*;Err@WMpAY--JcDqR!SM#_!!BA's5S\1M#[JTPlH7~>
+cMmm&hZ!ZD;eZ#c!<CaNrrTP-fDPXMf)U`ps8N(Ms7ZHm^OcEirrMh9qu?_-m/I/`!!%`OrrD)1
+s.fVo!0mM6~>
+cMmm&hZ!ZD;eZ#c!<CaNrrTP-fDPXMf)U`ps8N(frr\GbKuDsM!5F*bPlCh]!!%`OrrD)1s.fVo
+!0mM6~>
+cMmm&hZ!ZD;eZ#c!<CaNrrTP-fDPXMf)U`ps8N(Ms7ZHm^OcEirrMh9qu?_-JcCH(rrA;`J,~>
+ci4%)!8d_UB_MK,m/?qb;eZ+/!GGEss8N(Ms7ZHm^OcEhrr@3@!!+sZli-sYrVurcJcDABrrA;`
+J,~>
+ci4%)!8d_UB_MK,m/?qb;eZ+/!GGEss8N(frr]f-!0cCA!5F*bPlC`WrVurcJcDABrrA;`J,~>
+ci4%)!8d_UB_MK,m/?qb;eZ+/!GGEss8N(Ms7ZHm^OcEhrr@3@!!+sZJcCE'rrA;`J,~>
+g]%8tp58uc!;5:M!6k-:r;R&]3G@%Ef4[2'lMpkaJcC<$WW*:NPEZ%Hf`3n3p@8.bmB&8!rr3,g
+!)L0!JcDABrrA;`J,~>
+g]%8tp58uc!;5:M!6k-:r;R&]3G@%Ef4[2'lMpkaR/[3Im=G:gs8)`tmB&8!rr3,g!)L0!JcDAB
+rrA;`J,~>
+g]%8tp58uc!;5:M!6k-:r;R&]3G@%Ef4[2'lMpkaJcC<$WW*:NPEZ%Hf`3n3p4<6rs8N(`s*t~>
+g]%8OoDemMc2Rpu^o,!"kl:Y_JcC<$XoALs`03(X!!M!Ts2=X"rrY+Y!0dB]!98Y1SH&ThPlH7~>
+g]%8OoDemMc2Rpu^o,!"kl:Y_S,WQC`:ec^JcGNF"#U&YPPtL]j+76#s8N(`s*t~>
+g]%8OoDemMc2Rpu^o,!"kl:Y_JcC<$XoALs`03(X!!M!Ts2=V^s+14M!0mM6~>
+g]%>j!.+L""B,;6MtO:Rrr@WMpAY--JcE:\!875L!/9b=!0dB^!:>@;R/d0dPlH7~>
+g]%>j!.+L""B,;6MtO:RrrAPg"(VB3Xl03Z^OcESrrA8^!!)D;s-Wid!0mM6~>
+g]%>j!.+L""B,;6MtO:Rrr@WMpAY--JcE:\!875L!/6"(JcG]KrrA;`J,~>
+g]%?,!:9O]!o[)%Y5eM%JcGHD!5F*b^]+Q4`.\3Os8OtU!!5r[mIL8Zp8p44rr3)f!-QV=s-Ncc
+!0mM6~>
+g]%?,!:9O]!o[)%Y5eM%S,WT:ThiVbrrBfbs.]Mqp8p44rr3)f!-QV=s-Ncc!0mM6~>
+g]%?,!:9O]!o[)%Y5eM%JcGHD!5F*b^]+Q4`.\3Os8OtU!!5r[m=G:gs8Dut!0mM6~>
+g]%<5!;?Em;m-0#!.k1DrrBfbs2"^9`.e-i#,2(sP>@n4nG`Xb2#mW?rVllbJcD#8rrA;`J,~>
+g]%<5!;?Em;m-0#!.k1DrrBfbs.fSsp,)gMPPtL]m=G;&s8N(`s*t~>
+g]%<5!;?Em;m-0#!.k1DrrBfbs2"^9`.e-i#,2(sP>@n4JcC<$qZ$QqPlH7~>
+cMmpPm'$Hh!.k1DrrBfbs2G!@mIpS[2>dFS:[.lZPPtO^p4<7+s8N(`s*t~>
+cMmpPm'$Hh!1a&kPD-sKhu<\kJcDJE!0dB^!;;!DOoPF]PlH7~>
+cMmpPm'$Hh!.k1DrrBfbs2G!@mIpS[2>dFS:P&Oss7H?k!0mM6~>
+cMmphm'$Hh!.k1DrrBfbs2b3FmC?a-U&Y.VrW!"1\`</Y!qs1lrr3)f!-QV=s,d9\!0mM6~>
+cMmphm'$Hh!1a&k2#mWYhu<\kJcD\K!qs1lrr3)f!-QV=s,d9\!0mM6~>
+cMmphm'$Hh!.k1DrrBfbs2b3FmC?a-U&Y.VrW!"1\`88@JcGBBrrA;`J,~>
+cMmpCiNN:]!.k1DrrBfbs2t?B\PN/(##G:!cXaTRmJd:!2#rj=rrDG;s,R-Z!0mM6~>
+cMmpCiNN:]!1WuifqIH`rrBfbs/H##\MXANrVllbJcCc1rrA;`J,~>
+cMmpCiNN:]!.k1DrrBfbs2t?B\PN/(##G:!cXaTRJcC<$nc/UhPlH7~>
+ci4$Q!3ZA%!.k1DrrBfbs3L]KmDR?Ns.T;i!9<;C!-S8@!:>@;MZ<\VPlH7~>
+ci4$Q!3ZA%!.k1DrrBfbs/H"uFoD@@m=G:ps8N(`s*t~>
+ci4$Q!3ZA%!.k1DrrBfbs3L]KmDR?Ns.T;i!98Y1JcG*:rrA;`J,~>
+g]%8Oo`+uMY5eM%JcC<$`r?><`+/iJ:]LI@rW!"B\aAb`!TWSHrrh?^!)M:!s,-jV!0mM6~>
+g]%8Oo`+uMY5eM%Sc8e7:NaU,s,-gWj6cjG"QKI^:YC=!MZ<\VPlH7~>
+g]%8Oo`+uMY5eM%JcC<$`r?><`+/iJ:]LI@rW!"B\a=tJJcG'9rrA;`J,~>
+g]%8\pAb7n[-Xsqrr@WMJcEdj!REY$!!VE_s-(Cpli.(5FT@X(rrK7?JcCQ+rrA;`J,~>
+g]%8\pAb7n[-XsqrrAVi"/,\pXb$M2rr^Si!0dB]!Nj:ks+p^T!0mM6~>
+g]%8\pAb7n[-Xsqrr@WMJcEdj!REY$!!VE_s-(CpJcC<$kl:Y_PlH7~>
+g]%?,!8""Grr@WMpAY--JcF=$"53_SchmbDAD-,F!0dB^!;;!DKE(rOPlH7~>
+g]%?,!8""GrrAPg!VYp;rrBfbs02M'PPtO^p4<6rs8N(`s*t~>
+g]%?,!8""Grr@WMpAY--JcF=$"53_SchmbDAD)P6JcFd1rrA;`J,~>
+g]%<5!2BMn!.k1DrrBfbs4RD[p8q*jmJm2^!)L/ml2Le1mJd+cj8K#Yc[l+Ks8N(`s*t~>
+g]%<5!2BMn!1s2kp>ap-!5F*b[Jp9RmJd+cj8K#Yc[l+Ks8N(`s*t~>
+g]%<5!2BMn!.k1DrrBfbs4RD[p8q*jmJm2^!)L/mJcC<$iW&oXPlH7~>
+g]%<Im%XO[!.k1DrrBfbs4dPSp65FT"I&lcg"GTh"0G?!PPtL_PHFP0s+::N!0mM6~>
+g]%<Im%XO[!1s2mf`2"0h>[JiJcE4Z"0G?!PPtL_PHFP0s+::N!0mM6~>
+g]%<Im%XO[!.k1DrrBfbs4dPSp65FT"I&lcg"CrVJcFU,rrA;`J,~>
+g]%BBBE7"es8N(Ms7ZHm^OcF?rrMgNqu?^mjSo@H!!"nMJcC<$r;ZcsPlH7~>
+g]%BBBE7"es8N(jrr_;8FTC7t!5F*b\,QSp!!"nMJcC<$r;ZcsPlH7~>
+g]%BBBE7"es8N(Ms7ZHm^OcF?rrMgNqu?^mJcC<$gAh0QPlH7~>
+g]%B"!!'C%s8N(Ms7ZHm^OcFArr_Zgs-*E^!Hl?FrrVSimJd+gf`2"Jj+75]s8;os!0mM6~>
+g]%B"!!'C%s8N(Ms7ZHm^OcEurrVSimJd+gf`2"Jj+75]s8;os!0mM6~>
+g]%B"!!'C%s8N(Ms7ZHm^OcFArr_Zgs-*E^!Hl>3s+14's8N(`s*t~>
+g]%AR[#=UQs8N(Ms7ZHm^OcFCrs7:g:]LIg20IsCrr[rT!29Ak!L(HQs+14Hs8N(`s*t~>
+g]%AR[#=UQs8N(jrrU-lj4sY7^OcF!rr[rT!29Ak!L(HQs+14Hs8N(`s*t~>
+g]%AR[#=UQs8N(Ms7ZHm^OcFCrs7:g:]LIg20Ir1s+14%s8N(`s*t~>
+g].;tpAY*mY5eM%JcGHD!5F*bir9&HFoD@C`;fl)k5PRJ!!"nMJcC<$p&G$lPlH7~>
+g].;tpAY*mY5eM%T)Sn'!!'.WrrBfbs1\L9P5kS?p4<6ps7QEl!0mM6~>
+g].;tpAY*mY5eM%JcGHD!5F*bir9&HFoD@C`;fl)JcC<$ec5XLPlH7~>
+gA_1e[.jS#!3ZA%!.k0$s4@8NXo&/!:[.l\foth&rrh!T!-R[[s+14Cs8N(`s*t~>
+gA_1e[.jS#!3ZA%!1s2m`3"a3JcDAB!nie)rr3,S!!%0/JcC<$p&G$lPlH7~>
+gA_1e[.jS#!3ZA%!.k0$s4@8NXo&/!:P&Oss3grI!0mM6~>
+g&D/4;mbN\rrM'YY5eM%JcC<$h#@QF`7b1jPPtO`26HT;rrZd3!29Ak!Nka?s+14As8N(`s*t~>
+g&D/4;mbN\rrM'YY5eM%JcC<$\c2bB!!&_krrK7hJcC<$oDegjPlH7~>
+g&D/4;mbN\rrM'YY5eM%JcC<$h#@QF`7b1jPPtO`26HS's+13us8N(`s*t~>
+g]%B"Mi1O.!3ZA%!.k1DrrBfbs6K[nfqDpV!+c-0_uKe$mHFQPK`D*1JcC<$mJm1dPlH7~>
+g]%B"Mi1O.!3ZA%!2'8nj.WU.h#@AhJcE^h",-^T21bdYs6]jd!0mM6~>
+g]%B"Mi1O.!3ZA%!.k1DrrBfbs6K[nfqDpV!+c-0_uKe$m=G:gs3UfG!0mM6~>
+g]%8\oDl&orr@WMpAY--JcG*:!0d9["SVlhPN2$0!lTf[rr3,I!&]u6JcC<$mf3:ePlH7~>
+g]%8\oDl&orrA\k!6"j:h#@AhJcEpn!lTf[rr3,I!&]u6JcC<$mf3:ePlH7~>
+g]%8\oDl&orr@WMpAY--JcG*:!0d9["SVlhPN.5oJcF$qrrA;`J,~>
+g]%?!!8%#G!T=$]s8N(Ms7ZHm^OcFOrrCCC!!-Wtl2LiC!!'/"rrK\(JcC<$m/R(cPlH7~>
+g]%?!!8%#G!T=$]s8N(krr_uJ`3%hp!5F*bbl7c&!!'/"rrK\(JcC<$m/R(cPlH7~>
+g]%?!!8%#G!T=$]s8N(Ms7ZHm^OcFOrrCCC!!-WtJcC<$b5_JAPlH7~>
+g]%<5!;?Em!3ZA%!.k1DrrBfbs7$$pp654Mp&Ht(`9laf"*FSD21bdYs5s@]!0mM6~>
+g]%<5!;?Em!3ZA%!.k1DrrBfbs31KFFT;D!JcC<$k5YG]PlH7~>
+g]%<5!;?Em!3ZA%!.k1DrrBfbs7$$pp654Mp&Ht(`9i-UJcEgkrrA;`J,~>
+g]%<Im.UGZm+MC>bQ.G<!fNu#rr3)Zb\55ds8N(Ms7ZHm^OcFTrs%k$!0dH_j6HXHp8q-arr3)H
+!)K_Js+144s8N(`s*t~>
+g]%<Im.UGZm+MC>bQ.G<!fNu#rr3)Zb\55ds8N(krr\s;U"S6$!5F*be,KODX\\Zirr^RI:T]3J
+JcFm4rrA;`J,~>
+g]%<Im.UGZm+MC>bQ.G<!fNu#rr3)Zb\55ds8N(Ms7ZHm^OcFTrs%k$!0dH_j+75]s2=s;!0mM6~>
+WrE:rbfmG-!!)fo!/p[R!/p.Brr@WMpAY--JcG<@!TQ':!!&_WrrDcl!!'/"rrCArs+142s8N(`
+s*t~>
+WrE:rbfmG-!!)fo!/p[R!/p.BrrA\k"#U&YXk`pV^OcF7rrDcl!!'/"rrCArs+142s8N(`s*t~>
+WrE:rbfmG-!!)fo!/p[R!/p.Brr@WMpAY--JcG<@!TQ':!!&^Ds+13es8N(`s*t~>
+WrE:rMi4s?!!)fo!/paT!E75,s8N(Ms7ZHm^OcFVrrLG'rVut0p?;MYFT;D;JcC<$huE]VPlH7~>
+WrE:rMi4s?!!)fo!/paT!E75,s8N(jrrVoIp>#ZJ^OcF6rr[BD!)J1GJcFX-rrA;`J,~>
+WrE:rMi4s?!!)fo!/paT!E75,s8N(Ms7ZHm^OcFVrrLG'rVut0p4<6ps2+g9!0mM6~>
+VZ-_A!!)fo"cM?HVmPFGs8N(Ms7ZHm^OcFWrrDHb!!.69mf*CVTf)QCrr^1>Fi8k2JcFX-rrA;`
+J,~>
+VZ-_A!!)fo"cM?HVmPFGs8N(Ms7ZHm^OcF=rr_Y^2>7%L"2k1^`.@r>s53kV!0mM6~>
+VZ-_A!!)fo"cM?HVmPFGs8N(Ms7ZHm^OcFWrrDHb!!.69JcC<$_>jN8PlH7~>
+VZ-_A!!)fo!/ok:rr@WMJcFp5"2k0>PO8AMmJ[(c\c)O.j+75]s5!_T!0mM6~>
+VZ-_A!!)fo!/ok:rrA_l"4$sCFb0S"rrDHc!!'S.rrD)1s+14+s8N(`s*t~>
+VZ-_A!!)fo!/ok:rr@WMJcFp5"2k0>PC`abs1eU6!0mM6~>
+VZ-_A!!)fo!/ok:rr@WMJcG'9#1'":s8T43li.&t!!#fGs+14&s8N(`s*t~>
+VZ-_A!!)fo!/ok:rrA_l"2o<^21be6rrZd3!)J1GJcFC&rrA;`J,~>
+VZ-_A!!)fo!/ok:rr@WMJcG'9#1'":s8T43JcC<$^An35PlH7~>
+VZ-_A!!)fo!/ok:rr@WMpAY--JcGTH"ll:6!!%00rr_Y^:\Oef"2k1nc[l+Is4IAO!0mM6~>
+VZ-_A!!)fo!/ok:rr@WMpAY--JcF^/"7;dXpAY'o_uPM;JcC<$f`1sOPlH7~>
+VZ-_A!!)fo!/ok:rr@WMpAY--JcGTH"ll:6!!%.ms+13]s8N(`s*t~>
+VZ-_A!!)fo#)iN5;ZHg)kl:Y_JcGHD!5F*bqu6Y[qZ$VinG`LUrVur/rVllbJcC<$f)PaMPlH7~>
+VZ-_A!!)fo#)iN5;ZHg)kl:Y_T`>&Pg&D&eJcFa0!:Bac!4i(.!:>@;JcF=$rrA;`J,~>
+VZ-_A!!)fo#)iN5;ZHg)kl:Y_JcGHD!5F*bqu6Y[qZ$ViJcC<$]Dqm2PlH7~>
+VZ-_A!!)fos,.)Zp&F\`;p=P,rr@WMpAY--Jc>rSp;E[)s2=j9!]?2/n,EK#!!#fGs+13ts8N(`
+s*t~>
+VZ-_A!!)fos,.)Zp&F\`;p=P,rrA_l"&AmsXkWjU^OcFDrrZd3!)J1GJcF-trrA;`J,~>
+VZ-_A!!)fos,.)Zp&F\`;p=P,rr@WMpAY--Jc>rSp;E[)s2=j9!]?2/JcC<$]Dqm2PlH7~>
+VZ-_A!!)fo!K52"rrP1\iTpOD!.k1DrrBfdrrVo4L&M&VmJm2D!0bb#rr^r<2>7%L"2k1nfn'0S
+s3^lH!0mM6~>
+VZ-_A!!)fo!K52"rrP1\iTpOD!20>oXbCoDg]%8gJcFs6"5/kqpAY'o_uPMEJcC<$dJs4HPlH7~>
+VZ-_A!!)fo!K52"rrP1\iTpOD!.k1DrrBfdrrVo4L&M&VmJm2D!0b`[s+13[s8N(`s*t~>
+VZ-_A!!)fo!6k??!fI$Yli6tbJcGHD!5F3e!9<qV"M+R4j7`'D!9=%Y!6"j9!:>@;JcF'rrrA;`
+J,~>
+VZ-_A!!)fo!6k??!fI$Yli6tbJcGHD!5F*bl2LbDrVur:rVllbJcC<$ci="FPlH7~>
+VZ-_A!!)fo!6k??!fI$Yli6tbJcGHD!5F3e!9<qV"M+R4j7\'(JcE1YrrA;`J,~>
+VZ-_A!!)Qh"1/%.fBiP2!.k1MrrBfjrs&28L$ep?2>mLUAAn'=!:Bab"&AmsA:ac3s3q#A!0mM6~>
+VZ-_A!!)Qh"1/%.fBiP2!36&$mB,(%gA_/fJcG-;!:Bab"&AmsA:ac3s3q#A!0mM6~>
+VZ-_A!!)Qh"1/%.fBiP2!.k1MrrBfjrs&28L$ep?2>mLUAAj'!JcE@^p&L?WJ,~>
+cMmm&gA_5u!!)Qh"3^`FVsOHW!.k1MrrBfmrrV5_FoD@G\c;\n!)K<Uo)AdEF\hu9"1^:Qm=G:g
+s3q#A!0mM6~>
+cMmm&gA_5u!!)Qh"3^`FVsOHW!36&!\c)T_rrBfbs6oshfl^*hrr]ehPO3r$JcF4!p&L?WJ,~>
+cMmm&gA_5u!!)Qh"3^`FVsOHW!.k1MrrBfmrrV5_FoD@G\c;\n!)K<UJcC<$\c;@'PlH7~>
+ci4%)!8@GSbQ%Y=rrTR*m/6kcbQ%XMm/R(cJcCE's7ZKm!&aZS"D%Q4j5]Y/!71WE!6"m:s7V$D
+JcEgkrrA;`J,~>
+ci4%)!8@GSbQ%Y=rrTR*m/6kcbQ%XMm/R(cU&P5^`3$.ms2b3?ci*nE`;]f:p4<6ps2b6?!0mM6~>
+ci4%)!8@GSbQ%Y=rrTR*m/6kcbQ%XMm/R(cJcCE's7ZKm!&aZS"D%Q4j5Y^jJcDkPrrA;`J,~>
+j8T,PmY_-[!;5+H!mCWEqYpZ5!!'D(rr^IF!2o2`rr@WML]7VQX^hF6s8S;]!!,lhli.&_!!#fG
+s+13fs8N(`s*t~>
+j8T,PmY_-[!;5+H!mCWEqYpZ5!!'D(rr^IF!2o2`rr@WMJcFd1"&Ams:P&Oss24m:!0mM6~>
+j8T,PmY_-[!;5+H!mCWEqYpZ5!!'D(rr^IF!2o2`rr@WML]7VQX^hF6s8S;]!!,lhJcC<$WW2tu
+PlH7~>
+j8T,<li7%Eg]%?!!!)lq"2Fm:RJd'ebQ%XYm/R(cJcGHD!5Fcu!RFR@!!d'7s24n[\`</Y!Q9-Z
+rr^1sXnI>GJcEXfrrA;`J,~>
+j8T,<li7%Eg]%?!!!)lq"2Fm:RJd'ebQ%XYm/R(cU&Y.d!NkbCrrBfbs7QBm`-)%Y"2m(!p4<6p
+s24m:!0mM6~>
+j8T,<li7%Eg]%?!!!)lq"2Fm:RJd'ebQ%XYm/R(cJcGHD!5Fcu!RFR@!!d'7s24n[\`88@JcDYJ
+rrA;`J,~>
+j8T2R!)r`P!<?g0MZWrmMtPj)!mCWEqYpZL;lB<drr\/Z!9*;Err@WMpAY--Q2^iXqZ-Zr!;>g[
+"QM?>!6"j9!;;!DJcERdrrA;`J,~>
+j8T2R!)r`P!<?g0MZWrmMtPj)!mCWEqYpZL;lB<drr\/Z!9*;ErrAbmrVur/gA_/fJcGKE"QM?>
+!6"j9!;;!DJcERdrrA;`J,~>
+j8T2R!)r`P!<?g0MZWrmMtPj)!mCWEqYpZL;lB<drr\/Z!9*;Err@WMpAY--Q2^iXqZ-Zr!;;!D
+JcDMFrrA;`J,~>
+ir9#Z[/9k(Mp2"s!pik0gA_5u!!)ip!BKiMrrP1\VsFB_!.k1DrrBg!rrC":!!6]LmHOWQ:B1Aj
+JcC<$]`8!3PlH7~>
+ir9#Z[/9k(Mp2"s!pik0gA_5u!!)ip!BKiMrrP1\VsFB_!29Dpp=[COgA_/fJcGHD"&Ams:P&Os
+s1JC3!0mM6~>
+ir9#Z[/9k(Mp2"s!pik0gA_5u!!)ip!BKiMrrP1\VsFB_!.k1DrrBg!rrC":!!6]Lm=G:gs.KDl
+!0mM6~>
+ir9#Zbl%JAb^0!_!/oS2"1/%.fD>LJbZ"H>!dXiFlMpkaJcGHD!5Fs%#MEYTs8R4!\a9=sfouC7
+"1\D-`.@r>s1JC3!0mM6~>
+ir9#Zbl%JAb^0!_!/oS2"1/%.fD>LJbZ"H>!dXiFlMpkaJcGHD!5F*br;QfNPPtL`\H#FDJcC<$
+]`8!3PlH7~>
+ir9#Zbl%JAb^0!_!/oS2"1/%.fD>LJbZ"H>!dXiFlMpkaJcGHD!5Fs%#MEYTs8R4!\Ujd3s.02i
+!0mM6~>
+g]%;Bm.UG[[-ZZLpAk-k#cB\ibfj`#MsTa/rr@WMpAY--S,WcfP5kT:s8Vf[mJd=V:B1C5rr3#m
+c[l+Is1871!0mM6~>
+g]%;Bm.UG[[-ZZLpAk-k#cB\ibfj`#MsTa/rrAen"2muXU"TGG^OcFarrh^b!!'t:rrMi>JcC<$
+])Vd1PlH7~>
+g]%;Bm.UG[[-ZZLpAk-k#cB\ibfj`#MsTa/rr@WMpAY--S,WcfP5kT:s8Vf[JcC<$SH&ThPlH7~>
+g]%83p&>':m*>V7ot[r4bj=Qnrr@WMpAY--SGrW.2>mLTcftH3:B1B*JcC<$[K$7,PlH7~>
+g]%83p&>':m*>V7ot[r4bj=QnrrAen"2k0>:YGaJ^OcF`rrZ$s!+^Z\JcE.XrrA;`J,~>
+g]%83p&>':m*>V7ot[r4bj=Qnrr@WMpAY--SGrW.2>mLTc[l+Is-`oe!0mM6~>
+g]%;BbkD&;[,J4grr@WMpAY--Sc8`N2>mLUXnM2_!71WD"0DP\Xb$M's0_n,!0mM6~>
+g]%;BbkD&;[,J4grrA_l!VYR,rrBfcrrCCDrr]A'26DH0JcE.XrrA;`J,~>
+g]%;BbkD&;[,J4grr@WMpAY--Sc8`N2>mLUXnI>GJcD/<rrA;`J,~>
+g]%?!!:9L\!T=$]s8N(Ms,m<]\c)R0Fm\Vs"4'aCg&D!Qp;HZUs+13Ws8N(`s*t~>
+g]%?!!:9L\!T=$]s8N(nrrDG;s4I>RcVFPorr3&n`:ec^JcE+WrrA;`J,~>
+g]%?!!:9L\!T=$]s8N(Ms,m<]\c)R0FmXb[JcD):rrA;`J,~>
+gA_4f3OJY_!jhs*Y5eM%JcCi3!nfGpmJd=_2#mVPJcC<$Y5eM%PlH7~>
+gA_4f3OJY_!jhs*Y5eM%UAk<Q!)LOas4mVWp,)gM:P&Oss/uD%!0mM6~>
+gA_4f3OJY_!jhs*Y5eM%JcCi3!nfGpJcC<$Q2gjaPlH7~>
+g&D.Q!!$^3MZd\n!,1`%s8N(Ms7ZHm^RtN0g%PIGp@dkQ"K_Y(:[N`5JcDqRrrA;`J,~>
+g&D.Q!!$^3MZd\n!,1`%s8N(nrr[st!86'*!5F3e"K_Y(:[N`5JcDqRrrA;`J,~>
+g&D.Q!!$^3MZd\n!,1`%s8N(Ms7ZHm^RtN0g%PIGp@a(;JcD#8rrA;`J,~>
+g&D*>Mu!DRVl]pu!.k1DrrBg,rr_9]AE3.Y!mcSRrr3)o:Ta>As+13Qs8N(`s*t~>
+g&D*>Mu!DRVl]pu!.k1DrrBfkrrUN#g&D!Rp.qgaJcC<$Y5eM%PlH7~>
+g&D*>Mu!DRVl]pu!.k1DrrBg,rr_9]AE/7@JcCo5rrA;`J,~>
+fDbm1MuE\WMsRMErr@WMpAY--U&P;i:B1APmIC2YK`D*qJcC<$VuQbsPlH7~>
+fDbm1MuE\WMsRMErrAho!q"\$fDbicMuNm5!!%.ms+13Js8N(`s*t~>
+fDbm1MuE\WMsRMErr@WMpAY--U&P;i:B1APm=G:gs-*K_!0mM6~>
+JcGTHrr@WMpAY--U&P+8rVuqlnG`L!rVurOJcC<$W;lktPlH7~>
+JcGTHrrAho"0DP'2;%p/^Pi*l\c)R/fn'0Ss/>tt!0mM6~>
+JcGTHrr@WMpAY--U&P+8rVuqlJcC<$P5kO^PlH7~>
+JcGTHrr@WMpAY--UAk4qrVuq/pAY6^Tf'dfrri#q250Dgs+13Ks8N(`s*t~>
+JcGTHrrAho"50f1U"KAF^QSU!m@cDUrr3,p!&^J;JcC<$W;lktPlH7~>
+JcGTHrr@WMpAY--UAk4qrVuq/JcC<$OoPF]PlH7~>
+fDbp=f@U$%!TE^Qs8N(Ms7ZHm^SCf/mJ[(d2=:,;"#U&YFoD=?j+75]s/#bq!0mM6~>
+fDbp=f@U$%!TE^Qs8N(Ms7ZHm^QSU!2#mW!rVllXJcC<$V>pPqPlH7~>
+fDbp=f@U$%!TE^Qs8N(Ms7ZHm^SCf/mJ[(d2=5tpJcCl4rrA;`J,~>
+g&D)g;uQdrrrV.m[&sB.!.k1DrrBg.rr_:W!87&F!3Q5#!:>@;JcDGDrrA;`J,~>
+g&D)g;uQdrrrV.m[&sB.!2KSoXT@,Bf`(rdP5bNarVurcJcC<$U&Y,mPlH7~>
+g&D)g;uQdrrrV.m[&sB.!.k1DrrBg.rr_:W!82r'JcCi3rrA;`J,~>
+g]%KEBE1thM`L_8s/3%"rr@WMR/[<_s8Vf=qYpWjXkE^R"84U+c[l+Is.KDl!0mM6~>
+g]%KEBE1thM`L_8s/3%"rrAhorVur:JcG0<!qrbLrr3)o220A-s+13Cs8N(`s*t~>
+g]%KEBE1thM`L_8s/3%"rr@WMR/[<_s8Vf=JcC<$O8o4[PlH7~>
+g]%>^!4;b*!/paS!/n#[rr@WMRf<K`P>C66rr^1s!-NkmJcD/<rrA;`J,~>
+g]%>^!4;b*!/paS!/n#[rrAho"51Vpm=G<+rr^1s!-NkmJcD/<rrA;`J,~>
+g]%>^!4;b*!/paS!/n#[rr@WMRf<K`P>C4is+13/s8N(`s*t~>
+g]%:fm/?qaMu3MT[-Y!rrr@WMpAY--W;cqdTf)fL!6"^5!0dB^!82r'JcD2=rrA;`J,~>
+g]%:fm/?qaMu3MT[-Y!rrr@WMpAY--RK!8NrVurOJcC<$RfEBfPlH7~>
+g]%:fm/?qaMu3MT[-Y!rrr@WMpAY--W;cqdTf)fL!5sHgJcC`0rrA;`J,~>
+g]%83r;QbTqu6]@m'$Hh!.k1DrrBg5rrC"7!!)'YrrMi\rr3,p2#q1IJcC<$RfEBfPlH7~>
+g]%83r;QbTqu6]@m'$Hh!2TVs`-%cUfDbicT)SibmJd+gp,)h\j+75]s-iuf!0mM6~>
+g]%83r;QbTqu6]@m'$Hh!.k1DrrBg5rrC"7!!)&1s+130s8N(`s*t~>
+g]%83r;QbTqu6](iNN:]!.k1DrrBg9rri&6s8V-X!!c<Gs8Vep20Jlt!P-."s+13;s8N(`s*t~>
+g]%83r;QbTqu6](iNN:]!2TVsXT/?DfDbicT`5,fXYk8"rrK[KJcC<$R/d0dPlH7~>
+g]%83r;QbTqu6](iNN:]!.k1DrrBg9rri&6s8V-X!!,mAJcC<$N;rnXPlH7~>
+g]%:ffDY^LMu3MS;m-0#!.k1DrrBg;rsI)G2#u>0s)e<qg&:pNXo8;#j+75]s-*K_!0mM6~>
+g]%:ffDY^LMu3MS;m-0#!2KPqp=\KXrrBg,rrB2#!!)&1s+136s8N(`s*t~>
+g]%:ffDY^LMu3MS;m-0#!.k1DrrBg;rsI)G2#u>0s)e<qfn'0Ss,-jV!0mM6~>
+g]%>^!6kHB!/pgU!o[((Y5eM%JcGHD!5Gf=!JNE0!!J#Us4Qf:rrDHc!!&^Ds+136s8N(`s*t~>
+g]%>^!6kHB!/pgU!o[((Y5eM%JcGHD!5G3,!:Bac!24uDJcCr6rrA;`J,~>
+g]%>^!6kHB!/pgU!o[((Y5eM%JcGHD!5Gf=!JNE0!!J#Us4Qdjs+13+s8N(`s*t~>
+gA_R[!,.;7HHaU?H2qXFY5eM%JcGHD!5GuB"kfTqs8QX-!!#gnrrUMhL&M#QPBG3&s+135s8N(`
+s*t~>
+gA_R[!,.;7HHaU?H2qXFY5eM%V#LMs:Nb@BrrBg2rrUMhL&M#QPBG3&s+135s8N(`s*t~>
+gA_R[!,.;7HHaU?H2qXFY5eM%JcGHD!5GuB"kfTqs8QX-!!#fGs+13's8N(`s*t~>
+g&D&1q#CGRiN<.[!.k1DrrBgErse"P2#mW?s8TV0!&]tnrVll"rVurcJcC<$N;rnXPlH7~>
+g&D&1q#CGRiN<.[!2TVsFT;EpfDbicVuHb!rVurcJcC<$N;rnXPlH7~>
+g&D&1q#CGRiN<.[!.k1DrrBgErse"P2#mW?s8TV0!&]tnJcC<$KE(rOPlH7~>
+f`(rqqZ$VSX8i2"JcDnQ!0d<\"Z?>[j.Y0&rrDHc!!&46s+13/s8N(`s*t~>
+f`(rqqZ$VSX8i2"UAt8eJcGZJ!:Bac!0`!6JcC]/rrA;`J,~>
+f`(rqqZ$VSX8i2"JcDnQ!0d<\"Z?>[j.Y.Ws+13$rrW3#!0mM6~>
+f)Gj=iU#O&s8N(Ms0DY-mEbh4Xo/5$221GqrrV5EL&M#RP;TK9JcC<$N;rnXPlH7~>
+f)Gj=iU#O&s8N(qrrMNIJcGcM!ooJurVlt`26HS's+13/s8N(`s*t~>
+f)Gj=iU#O&s8N(Ms0DY-mEbh4Xo/5$221FKs+13$s8;os!0mM6~>
+JcGTHrr@WMpAY--_#FbfFT=<!s6TddPL'+*!4i(/!:Bdc!:>@;JcCT,rrA;`J,~>
+JcGTHrrAnq"0DP'Fk6Qm^TRS:\c)R/mJd+cm=G:gs,$dU!0mM6~>
+JcGTHrr@WMpAY--_#FbfFT=<!s6TddPL"g[JcC<$q>^HpPlH7~>
+V>gS?!;HKtiJW#?HAgbHs8N(Ms7ZHm^Vg'Qp:3ut!!L7?s3LE6rrDHc!!&^Ds+13(s8N(`s*t~>
+V>gS?!;HKtiJW#?HAgbHs8N(qrr^r.F`l:8!5G]:!:Bac!24uDJcCH(rrA;`J,~>
+V>gS?!;HKtiJW#?HAgbHs8N(Ms7ZHm^Vg'Qp:3ut!!L7?s3LCis+13$s7cQn!0mM6~>
+e,KETrVur*h>[]PbfmG-!!)fo!mE[Krr3&D3R$dgrr@WMpAY--_uB_sqZ$Viqu6cl\R^Emrr[rT
+PO3r$JcCH(rrA;`J,~>
+e,KETrVur*h>[]PbfmG-!!)fo!mE[Krr3&D3R$dgrr@WMpAY--[Jp@&\R^Emrr[rTPO3r$JcCH(
+rrA;`J,~>
+e,KETrVur*h>[]PbfmG-!!)fo!mE[Krr3&D3R$dgrr@WMpAY--_uB_sqZ$ViJcC<$JcG?ArrA;`
+J,~>
+g]%;u!;QQqoquK[rs&.SMmTA^!;ZWri;g[krrTt9bj5</!.k1DrrBgSrsJ.eg&M(p!!"mYmJ?h_
+Xo8;#mJd+dmIl,2JcCB&rrA;`J,~>
+g]%;u!;QQqoquK[rs&.SMmTA^!;ZWri;g[krrTt9bj5</!2]\sXkDabrrBgArrB2#!!)EcrrMN\
+JcC<$KE(rOPlH7~>
+g]%;u!;QQqoquK[rs&.SMmTA^!;ZWri;g[krrTt9bj5</!.k1DrrBgSrsJ.eg&M(p!!"mYm=G:g
+s+14@s8N(`s*t~>
+g]%;u!;?Enbj=*a!mCWEq>UJR!;c`q!:0[b!.k1DrrBgUrsA(V!!%`Qs4L2dr;QfkmJd+cmJ[(c
+\Ujd3s+14Ls8N(`s*t~>
+g]%;u!;?Enbj=*a!mCWEq>UJR!;c`q!:0[b!2]_p!!(^'rrBgFrrMi\rr2ucrVur/JcC<$JcG`L
+rrA;`J,~>
+g]%;u!;?Enbj=*a!mCWEq>UJR!;c`q!:0[b!.k1DrrBgUrsA(V!!%`Qs4L2dJcC<$JcG3=rrA;`
+J,~>
+g]%;u!;?En[,Kd>!mCWEq>^HpqZ$Qq!6jg0rr@WMpAY--bPqUrL&:oNmJ?hbm?9DkrVltBAAn1m
+s+13$s8N&u!0mM6~>
+g]%;u!;?En[,Kd>!mCWEq>^HpqZ$Qq!6jg0rrAnq"1bOfj4=51^V'RKm?9DkrVltBAAn1ms+13$
+s8N&u!0mM6~>
+g]%;u!;?En[,Kd>!mCWEq>^HpqZ$Qq!6jg0rr@WMpAY--bPqUrL&:oNm=G:gs+149s8N(`s*t~>
+g]%;u!;QQqiNrU=rrUCE!;c]sZiH$\rrS)YMsUKD!.k1DrrBgWrrB2!!!.6&qYpPZrVurcJcC<$
+JcGKErrA;`J,~>
+g]%;u!;QQqiNrU=rrUCE!;c]sZiH$\rrS)YMsUKD!.k1DrrBgHrrA8^!!)D;s+13$s7cQn!0mM6~>
+g]%;u!;QQqiNrU=rrUCE!;c]sZiH$\rrS)YMsUKD!.k1DrrBgWrrB2!!!.6&JcC<$JcG'9rrA;`
+J,~>
+i;Wi%Mt$cIHJ8B#bQ%Y>rrS)YMu*GTMZ@GWs8N(Ms24jCfnK/"p,)gMPO8>Ks7ZHl!:Bac!5sHg
+JcC<$p](6nPlH7~>
+i;Wi%Mt$cIHJ8B#bQ%Y>rrS)YMu*GTMZ@GWs8N(rrr^35XlGZGs7ZHl!:Bac!5sHgJcC<$p](6n
+PlH7~>
+i;Wi%Mt$cIHJ8B#bQ%Y>rrS)YMu*GTMZ@GWs8N(Ms24jCfnK/"p,)gMPO3r$JcC<$l2Ub`PlH7~>
+h>[N7MtR,P;mboFrrUCE!;c`q!!%rRrrS)Y!:9ac!.k0hrs@A$!!'/$s1+?\rVlu[P;SR&rrR>,
+fn'0Ss+14Ds8N(`s*t~>
+h>[N7MtR,P;mboFrrUCE!;c`q!!%rRrrS)Y!:9ac!2fbuT`>(8QN%'IP;SR&rrR>,fn'0Ss+14D
+s8N(`s*t~>
+h>[N7MtR,P;mboFrrUCE!;c`q!!%rRrrS)Y!:9ac!.k0hrs@A$!!'/$s1+?\JcC<$JcFp5rrA;`
+J,~>
+g]%;4!7(TGbQ%Y>s8N'!Mu*GTMZ<bDs8N(Ms7ZHm^XN2`fld5n!&aQO!0dB^!;;!DJcC<$nGiLg
+PlH7~>
+g]%;4!7(TGbQ%Y>s8N'!Mu*GTMZ<bDs8N(rrr_ZA`5L4+!5HGO!0dB^!;;!DJcC<$nGiLgPlH7~>
+g]%;4!7(TGbQ%Y>s8N'!Mu*GTMZ<bDs8N(Ms7ZHm^XN2`fld5n!&]?-JcC<$irB#YPlH7~>
+g]%<@!7(TGbQ%Y>s8N'!Mu*GTMZ<bDs8N(Ms7ZHm^XN2_Fo;:A26HTOrrMN\rr2uYrVur:JcC<$
+JcG6>rrA;`J,~>
+g]%<@!7(TGbQ%Y>s8N'!Mu*GTMZ<bDs8N(srrVnXp='$A^W?EUmIpPZ!9=%Y!5sHgJcC<$nGiLg
+PlH7~>
+g]%<@!7(TGbQ%Y>s8N'!Mu*GTMZ<bDs8N(Ms7ZHm^XN2_Fo;:A26HS's+13$s5X.Z!0mM6~>
+gA_/[cMmsi!!)lqrr<%WqYpVT!!)Bcrr@WMpAY--fDc/qPQ1[9!!"mYpAY'ofolE"rVlqAPN.5o
+JcC<$n,NCfPlH7~>
+gA_/[cMmsi!!)lqrr<%WqYpVT!!)BcrrAts"-W^qp=0*B^WQQYfolE"rVlqAPN.5oJcC<$n,NCf
+PlH7~>
+gA_/[cMmsi!!)lqrr<%WqYpVT!!)Bcrr@WMpAY--fDc/qPQ1[9!!"mYp4<6ps+14/s8N(`s*t~>
+df0=+regd#gA_5u!!)lqrr<%WqYpVT!!)Bcp&K[Ds8N)6g&DAs:B1CJs8ReTpAFpnP5kS?p4<6p
+s+14@s7QGWs*t~>
+df0=+regd#gA_5u!!)lqrr<%WqYpVT!!)Bcp&M;r!g<V<eGfN`b5VU.!!"nMJcC<$JcG<@p&L?W
+J,~>
+df0=+regd#gA_5u!!)lqrr<%WqYpVT!!)Bcp&K[Ds8N)6g&DAs:B1CJs8ReTp4<6ps+146s7QGW
+s*t~>
+cMmp'p"TKJbQ%Y>s8N'!Mu*GTMZ<bDs7QGDs8W*!^YJhjp8p4N!!&5\rrMN\rr2uOrVur:JcC<$
+JcG<@p&L?WJ,~>
+cMmp'p"TKJbQ%Y>s8N'!Mu*GTMZ<bDs7QGurrnU[s8T4peGfN`ci4%5pAY'lg&:sO`.@r>s+14@
+s7QGWs*t~>
+cMmp'p"TKJbQ%Y>s8N'!Mu*GTMZ<bDs7QGDs8W*!^YJhjp8p4N!!&46s+13$s5X.Q!0mM6~>
+ci4'uB]7_G!mCWEqYpV1!/p^R!fI%Wm/R(cJcGHD!5I=h!VSDL!!,m+rr3)RK`I>8rrR>:m=G:g
+s+146s8N(`s*t~>
+ci4'uB]7_G!mCWEqYpV1!/p^R!fI%Wm/R(cWrE1g2#rifrrBg]rr^r.!0dB]!d14(JcC<$JcFs6
+rrA;`J,~>
+ci4'uB]7_G!mCWEqYpV1!/p^R!fI%Wm/R(cJcGHD!5I=h!VSDL!!,m+JcC<$JcFI(rrA;`J,~>
+g&D)g;tp=n;t\oF!mCWEqYpVp!/p^R!fI&:m/R(cJcGHD!5IIl$21L>s8T2$!)LQ2rreMc!&aJ$
+s+13$s5O(Y!0mM6~>
+g&D)g;tp=n;t\oF!mCWEqYpVp!/p^R!fI&:m/R(cX8`@js5PsomF)"7^X<&aP5kS?p4<6ps+140
+s8N(`s*t~>
+g&D)g;tp=n;t\oF!mCWEqYpVp!/p^R!fI&:m/R(cJcGHD!5IIl$21L>s8T2$!)LOas+13$s4IAO
+!0mM6~>
+gA_/2pAb5lp"KEIbQ%Y>rrUCE;u6Lq;ZN`^s8N(Ms7ZHm^Z,8&p8p1P2>7(DFi==[mIpPZ!87>O
+!7-5rJcC<$irB#YPlH7~>
+gA_/2pAb5lp"KEIbQ%Y>rrUCE;u6Lq;ZN`^s8N)#rroM^j8\0"dJj3]f)Gd<pAY'lg&:sOc[l+I
+s+140s8N(`s*t~>
+gA_/2pAb5lp"KEIbQ%Y>rrUCE;u6Lq;ZN`^s8N(Ms7ZHm^Z,8"p8p1P2>7(DFi8k2JcC<$f)PaM
+PlH7~>
+g]%K%!,1?ks,6jU!fMB`gA_5u!!)ip!E0!ps8N'!iU$UE!.k1%rrL&6r;Zi"rVluQFTA-6rrR>:
+m=G:gs+14/s8N(`s*t~>
+g]%K%!,1?ks,6jU!fMB`gA_5u!!)ip!E0!ps8N'!iU$UE!3H2&P5mK#V>gYNFTA-6rrR>:m=G:g
+s+14/s8N(`s*t~>
+g]%K%!,1?ks,6jU!fMB`gA_5u!!)ip!E0!ps8N'!iU$UE!.k1%rrL&6r;Zi"JcC<$JcF0urrA;`
+J,~>
+g]%;4[/L")Mu<SUb_t3T!mCWEq>UN'!8%/K!nRF1li6tbJcFC&!878M!G'm^rre#U!&aJ$s+13$
+s4dSR!0mM6~>
+g]%;4[/L")Mu<SUb_t3T!mCWEq>UN'!8%/K!nRF1li6tbY5\[Ys8TV0c_^XEK`D*1p4<6ps+14)
+s8N(`s*t~>
+g]%;4[/L")Mu<SUb_t3T!mCWEq>UN'!8%/K!nRF1li6tbJcFC&!878M!G'l7s+13$s3grI!0mM6~>
+g]%8"r;Qaqqu6YogA_8^!!(XHrrH&3r;Qe2;sOD_!.k1DrrBgsrsR0Hs8R3A!)LQ5mIpPZ!87>O
+!82r'JcC<$g].9RPlH7~>
+g]%8"r;Qaqqu6YogA_8^!!(XHrrH&3r;Qe2;sOD_!3cD+cN&[ms6\,3!5I@i!U]U[rrCaO!!(]'
+s+13$s4dSR!0mM6~>
+g]%8"r;Qaqqu6YogA_8^!!(XHrrH&3r;Qe2;sOD_!.k1DrrBgsrs6sEs8R3A!)LOas+13$s3UfG
+!0mM6~>
+g]%83r;QeUiV`]Vbi.FYpAk-k#iRdWfDjH93T99'rr@WMpAY--kl2'n!0dH_fh]QdcZK5irVlq0
+XmL]>JcC<$gAh0QPlH7~>
+g]%83r;QeUiV`]Vbi.FYpAk-k#iRdWfDjH93T99'rrB8&"867*ABb&R^Yf%ncZK5irVlq0XmL]>
+JcC<$gAh0QPlH7~>
+g]%83r;QeUiV`]Vbi.FYpAk-k#iRdWfDjH93T99'rr@WMpAY--kl1mi!0dH_fh]P;s+13$s3CZE
+!0mM6~>
+g]%83r;QfA;uHXrbj<US"P:Ge^t7fMrr@WMpAY--lMgnYL&M&P`;KW;K`D*1JcC<$JcF4!rrA;`
+J,~>
+g]%83r;QfA;uHXrbj<US"P:Ge^t7fMrrB5%!qp0Cbl7[Xhu<e4!!"m-s+13$s3q#J!0mM6~>
+g]%83r;QfA;uHXrbj<US"P:Ge^t7fMrr@WMpAY--lMgnYL&M&P`.@r>s+13ms8N(`s*t~>
+g]%bAloA#'s6K`Dp&G'N;s^^frr@WMpAY--li."GAGlK0\_6BLrrCCE!!)&1s+13$s4%)K!0mM6~>
+g]%bAloA#'s6K`Dp&G'N;s^^frrB;'!lWFYb5VIVjSo86mJd+cci*nEj+75]s+14"s8N(`s*t~>
+g]%bAloA#'s6K`Dp&G'N;s^^frr@WMpAY--li."GAGlK.\Ujd3s+13ms8N(`s*t~>
+g]%94rW!83s8Sts!/kLj;m-0#!.k1DrrBh#rrMLErW!'YVdoe0rVlqAXmL]>JcC<$e,TFJPlH7~>
+g]%94rW!83s8Sts!/kLj;m-0#!3uP(pAP$l`68/\^ZPOu`+/kMrVlqAXmL]>JcC<$e,TFJPlH7~>
+g]%94rW!83s8Sts!/kLj;m-0#!.k1DrrBh#rrMLErVusVk^ibbs+13ls8N(`s*t~>
+gA_6@Ml6RS!UNb`!!'g;s8N(Ms7ZHm^[(n*\GuV?m<&C/21bdYs+13os8N(`s*t~>
+gA_6@Ml6RS!UNb`!!'g;s8N)(rri&AP>C5^rrBgrrr[BD!&]?-JcC<$bl@\CPlH7~>
+gA_6@Ml6RS!UNb`!!'g;s8N(Ms7ZHm^[(n&\GuV?m=G:gs+13ks8N(`s*t~>
+df0EI!!'C.s8N(Ms7ZHm^[M13p654Mp5Y@1s3CZF2<08fJcC<$c2[eDPlH7~>
+df0EI!!'C.s8N(Ms7ZHm^[(q"pAY'pcN!r&j+75]s+13ps8N(`s*t~>
+df0EI!!'C.s8N(Ms7ZHm^[M1-p654Ms-o5GJcC<$JcEdjrrA;`J,~>
+JcGTHrr@WMjSoG;2#r0/27`\c!en2YJcC<$JcEsorrA;`J,~>
+JcGTHrrB>("([VAp9jo&p8p3_rVlqQ\b:USJcC<$bl@\CPlH7~>
+JcGTHrr@WMjSo>82#r\gs+13$s2+g9!0mM6~>
+cMmn'Y5eM%JcFp5!pu[WqZ$UlJcC<$JcE^hrrA;`J,~>
+cMmn'Y5eM%ZMsplrVurE[Jp>O!!#fGs+13$s2G$<!0mM6~>
+cMmn'Y5eM%JcFp5!pu[WrVurPJcC<$JcEUerrA;`J,~>
+cMmkEY5eM%JcGHD!5J7-"69F]chmbC>5eL%`.@r>s+13is8N(`s*t~>
+cMmkEY5eM%Yl=dNU%ZY/!5Iq$!6"j:!5sHgJcC<$`rH&=PlH7~>
+cMmkEY5eM%JcGHD!5J7-"69F]chmbCZ[r.-s+13es8N(`s*t~>
+ci4%)!3ZA%!.k1DrrBh0rs.SX:B9e^m2u<-"JPikAAj'!JcC<$`W,r<PlH7~>
+ci4%)!3ZA%!4)V)mDf/+^[qI,m?>KerrPu,`.@r>s+13hs8N(`s*t~>
+ci4%)!3ZA%!.k1DrrBh0rsRk\:B9e^s2gK*!24uDJcC<$_>jN8PlH7~>
+j8T,<li=3grr@WMpAY--qu6\N2>mL]Xci_b.E(r[s7V$DJcC<$_uK`:PlH7~>
+j8T,<li=3grrBD*"SMgQPO6Kl!5J1+"-W]b:]::np4<6ps+13fs8N(`s*t~>
+j8T,<li=3grr@WMpAY--qu6\N2>mLTXoA>%o>L?Rs+13$s1n[7!0mM6~>
+j8T,Gli=3grr@WMpAYB4j10lss8Pmm!!,m6rVur:JcC<$JcELbrrA;`J,~>
+j8T,Gli=3grrBD*"RUn#!:@o.!5J1+!6"j:!5sHgJcC<$^]4<6PlH7~>
+j8T,Gli=3grr@WMpAYB4j10lss8Pmm!!#fGs+13$s1871!0mM6~>
+ir9#ZRIL4Wi;g%\rr@WMq#:EAP:6D1"/5bpPPtOeKuE]b:B6UGJcC<$JcELbrrA;`J,~>
+ir9#ZRIL4Wi;g%\rrB;'!85Hn!;u]n!qs1NrVlsq!0cf$s+13$s1eU6!0mM6~>
+ir9#ZRIL4Wi;g%\rr@WMq#:EAP:6D1$).D!P;f1iKuE\9s+13$s1871!0mM6~>
+ir9#ZbjYQ3!3ZA%!.k1Js8Vfmrr>jm!![!6s-<Wb9`=tlcg?;`JcC<$^&S*4PlH7~>
+ir9#ZbjYQ3!3ZA%!42\+XkCJh"1\C3:]::ocg?;`JcC<$^&S*4PlH7~>
+ir9#ZbjYQ3!3ZA%!.k1Js8Vfmrr>jm!![!6s5j:\rdk*#s+13Zs8N(`s*t~>
+ir9&Gp$_n\m&pBg!.k1Mrs/89K`IhHs.TAk"EgjHs2=m:!5sHgJcC<$\GuR/PlH7~>
+ir9&Gp$_n\m&pBg!4;b/irB':j2(`q`;T`:`.@r>s+13[s8N(`s*t~>
+ir9&Gp$_n\m&pBg!.k1Mrs/89K`IhHs.TAk!HkMqs+13$s0;V(!0mM6~>
+JcGTHrr@WM!Q9]j!!lC#s5QnKY_BXdrrY+YAD)P6JcC<$\GuR/PlH7~>
+JcGTHrrBG+"89Ze29,Xtc\8q.rrY+YAD)P6JcC<$\GuR/PlH7~>
+JcGTHrr@WM!Q9]j!!Z7!s5QnKjamG_s+13Qs8N(`s*t~>
+cMmm&Y5eM%LAqG;\[hb?Xnr(uj8T&\K`D*KrVloEj+75]s+13Ys8N(`s*t~>
+cMmm&Y5eM%JcGHD",-^T:]::ocf9TVJcC<$[f?@-PlH7~>
+cMmm&Y5eM%LAqG;\[hb?Xnr(uj+75]s+13Ls8N(`s*t~>
+ci4%)!3ZA%!/gd_p;E.P!!"nVs4RAO!`,NMrVlk]rVurOJcC<$JcE"TrrA;`J,~>
+ci4%)!3ZA%!4Dh/m8'G%`r?%&rVurOJcC<$JcE"TrrA;`J,~>
+ci4%)!3ZA%!/gd_p;E.P!!"nVs4RAO!`,NMrVllNJcC<$JcDkPrrA;`J,~>
+g]%8tp58uc!;3Pqrr@rV!+bs,$02'cFfj^(fnIBDrrfhh250Dgs+13$s0;V(!0mM6~>
+g]%8tp58uc!;3PqrrBJ,!71WE!:A&2!ni:Grr3,22)V)pJcC<$JcE"TrrA;`J,~>
+g]%8tp58uc!;3Pqrr@rV!+bs,"loX_Ffj^#rrBugs+13$s/l>$!0mM6~>
+g]%8OoDemMYQ+V&MZ3[pqu?b.j8AoZK`D*Krr3#6j+75]s+13Qs8N(`s*t~>
+g]%8OoDemMYQ+V&[/U4$`3%;a",-^T:]C@p^Z0nFJcC<$Y5eM%PlH7~>
+g]%8OoDemMYQ+V&MZ3[pqu?b.j7WEP^OcE9s+13Ps8N(`s*t~>
+g]%>j!.+L""B,;6MtO:RrrA&Y!;?El"N4*0ch@58!6"j:"53_S^OcE9s+13Ps8N(`s*t~>
+g]%>j!.+L""B,;6MtO:RrrBJ,!9;6%!6"j:"53_S^OcE9s+13Ps8N(`s*t~>
+g]%>j!.+L""B,;6MtO:RrrA&Y!;?El"N4*0ch?u1!5F*bJcC<$XoJD$PlH7~>
+g]%?,!:9O]!o[)%Y5eM%NrK1SA<Zih!mcS=rr35s2)V)ps8Tibs+13$s/l>$!0mM6~>
+g]%?,!:9O]!o[)%Y5eM%[f6K`!)K<Ue,KKqKuEuj#PL#4U$_m[^OcE9s+13Ps8N(`s*t~>
+g]%?,!:9O]!o[)%Y5eM%NrK1SA<ZB[!5F*bJcC<$XoJD$PlH7~>
+g]%<5!;?Em;m-0#!0@-_p1+.'PPb@^K`D*`rVloYpAP!k^OcE9s+13Ps8N(`s*t~>
+g]%<5!;?Em;m-0#!4Mn0fl[9Pe,KN(!!$R.rrM0RrVll4JcC<$JcDkPrrA;`J,~>
+g]%<5!;?Em;m-0#!0@-_p1+.'PO8AM^OcE9s+13Ps8N(`s*t~>
+cMmpPm'$Hh!0I3]p14.&!G(p%rrBV/!!)'SrrBfbs+13$s/l>$!0mM6~>
+cMmpPm'$Hh!4;b,p>aX%!4i(/!9<kS!5F*bJcC<$XoJD$PlH7~>
+cMmpPm'$Hh!0I3]p14.&!G(olrrBfbs+13$s/l>$!0mM6~>
+cMmphm*G\5Ml4eurr_6(B[#fBrrA2]!VU('!!Hj+`)">Nrri#q250Dgs+13$s.fVo!0mM6~>
+cMmphm*G\5Ml4eurr_6(B[#fBrrBP.!q!PYfDboj:W384"SMgQU$[F2JcC<$U]:>oPlH7~>
+cMmphm*G\5Ml4eurr_6(B[#fBrrA2]!VU('!!-X(JcC<$JcD,;rrA;`J,~>
+cMmpCiQqN(Mu!DRMsC?B!0R9]ci*nJAG0O6!+c'.!98Y1JcC<$T`>#lPlH7~>
+cMmpCiQqN(Mu!DRMsC?B!4Vt1\GuV*g&D.b!!$R.rrD)1s+13$s.KDl!0mM6~>
+cMmpCiQqN(Mu!DRMsC?B!0R9]ci*nFAG1TSJcC<$QiI'cPlH7~>
+ci4$Q!7(TEMu3PU;p=M+rrA/\"iLCOpA_8o!!)'LrrBfbs+13$s/l>$!0mM6~>
+ci4$Q!7(TEMu3PU;p=M+rrBP."7<XQAD-t_Xo8;#j73-L^OcE9s+13Ps8N(`s*t~>
+ci4$Q!7(TEMu3PU;p=M+rrA/\"2k1Mp?V_Y^OcE9s+13Ps8N(`s*t~>
+g]%8Oo`+uMcMn'+iO#MiiTL7@!0mKl`&6rUXg%O!s7S<G`:3d,^OcE9s+13Ps8N(`s*t~>
+g]%8Oo`+uMcMn'+iO#MiiTL7@!0R9_p9!$Irr_sP:W2c&!5F*bJcC<$XoJD$PlH7~>
+g]%8Oo`+uMcMn'+iO#MiiTL7@!0mKf`&6r^s4m>5rrBfbs+13$s/l>$!0mM6~>
+g]%8\pAb7n[-Z*<!/ok:rrAAb#MF5"!+7YaFoD=?j6lpI^OcE9s+13Ps8N(`s*t~>
+g]%8\pAb7n[-Z*<!/ok:rrBS/"4(M[j59k=\MXA0rVllXmf*:%JcC<$JcDkPrrA;`J,~>
+g]%8\pAb7n[-Z*<!/ok:rrAAb"PInt!5dmu!5F*bJcC<$XoJD$PlH7~>
+g]%?,!8#-g!/ok:rrAGd!UZ*H!!(^;rrBfbs+13$s/l>$!0mM6~>
+g]%?,!8#-g!/ok:rrBS/"1\C32;eE6Xo8;#g$8S;^OcE9s+13Ps8N(`s*t~>
+g]%?,!8#-g!/ok:rrAGd!UZ*L!!'1arrBfbs+13$s/l>$!0mM6~>
+g]%<5!5ea9MrOd:!1<cdPPkIb28(jI:YG%5!5F*bJcC<$XoJD$PlH7~>
+g]%<5!5ea9MrOd:!4Vt0mDQQrrrMNIrr3,p2#pG*lMgk!JcC<$JcDkPrrA;`J,~>
+g]%<5!5ea9MrOd:!1<cjP>Gfj!&_j[rrBfbs+13$s/l>$!0mM6~>
+g]%<Im)&c,MuVC-!!'Cis8N(grr^UIj,X*="KhCt`5Lm>!5F*bJcC<$XoJD$PlH7~>
+g]%<Im)&c,MuVC-!!'Cis8N)0rrMi\j8T5AP5ob(s8U%$rrBfbs+13$s/l>$!0mM6~>
+g]%<Im)&c,MuVC-!!'Cis8N(grs6sNs8;oN!3PtVrrBfbs+13$s/l>$!0mM6~>
+cMmn;cN!p&#,h.ooi"f5lMpkaSc8idFTAtSrVurIj8T+oJcC<$JcDkPrrA;`J,~>
+cMmn;cN!p&#,h.ooi"f5lMpka\c2cB!+_ebrrB2#!!)'>rrBfbs+13$s/l>$!0mM6~>
+cMmn;cN!p&#,h.ooi"f5lMpkaSc8fcFTAuNrrDQKrrBfbs+13$s/l>$!0mM6~>
+cMmkEcMmp'bl%JB3<8%(s8N(jrrqF;!!"n;rVur:JcC<$JcCc1rrA;`J,~>
+cMmkEcMmp'bl%JB3<8%(s8N)0rr^2M!-RQ+!:Bdc!:Bac!5sHgJcC<$NrT+ZPlH7~>
+cMmkEcMmp'bl%JB3<8%(s8N(jrrqFl!!"nNJcC<$JcCW-rrA;`J,~>
+ci4%)!7(TEbkqDAMZ<bCs8N(lrrVnJ&H2Y42;+1Wm=G:gs+130s8N(`s*t~>
+ci4%)!7(TEbkqDAMZ<bCs8N).s8Ud=rr_ts:NcX9s-!HMJcC<$JcC`0rrA;`J,~>
+ci4%)!7(TEbkqDAMZ<bCs8N(krs%NOg&M+1fn'0Ss+13-s8N(`s*t~>
+gA_34MtR.krr]V.!8$T;p&M)l!0d?]!Hn+mrrBfbs+13$s0ht$!0mM6~>
+gA_34MtR.krr]V.!8$T;p&N&2"84U9p?MYXXo8;#mG.^A^OcE9s+13Ys7QGWs*t~>
+gA_34MtR.krr]V.!8$T;p&M)l!:Bdc!`4%5hZ!SjJcC<$JcE1Yp&L?WJ,~>
+gAgdFa8Z7c!!&q`s7QGprrDHcrrDHc!!$<[rrBfbs+13$s0ht$!0mM6~>
+gAgdFa8Z7c!!&q`s7QH2rrh@>!&`g*rrDHcrrDHc!!&_JrrBfbs+13$s0ht$!0mM6~>
+gAgdFa8Z7c!!&q`s7QGhrrCU)rrBfbs+13$s0ht$!0mM6~>
+g]%?!!/pWr!OMjQrrTR*m/6kcbQ%XMm/R(cVuI+tXYkh+\c;\i/sk>m!5F*bJcC<$XoJD$PlH7~>
+g]%?!!/pWr!OMjQrrTR*m/6kcbQ%XMm/R(c])Mj*X^pu%"88iSL&M#QPBFgurrBfbs+13$s/l>$
+!0mM6~>
+g]%?!!/pWr!OMjQrrTR*m/6kcbQ%XMm/R(cU]1Pl\c;^-iS<2f!5F*bJcC<$XoJD$PlH7~>
+g]%;Pm.UGZ!7:`J^]4AAr;QlC!!&q`s8N(srrA8^!!4kT`7P"h^OcE9s+13Ps8N(`s*t~>
+g]%;Pm.UGZ!7:`J^]4AAr;QlC!!&q`s8N)3rrK7?mf*9NrVurcec,WaJcC<$JcDkPrrA;`J,~>
+g]%;Pm.UGZ!7:`J^]4AAr;QlC!!&q`s8N(orrQX0`7P"h^OcE9s+13Ps8N(`s*t~>
+g]%8\p&>$9d/O3`!!&Gbrr^IF!5Rt$rrAts!:BX`!86$)!5F*bJcC<$XoJD$PlH7~>
+g]%8\p&>$9d/O3`!!&Gbrr^IF!5Rt$rrBb4"RQ0hFlVuk!:Bac!3OfO!5F*bJcC<$XoJD$PlH7~>
+g]%8\p&>$9d/O3`!!&Gbrr^IF!5Rt$rrAho"0MV(g"?<)^OcE9s+13Ps8N(`s*t~>
+g]%;if>R[kf2JU?r;QkW!!)!Es8N)$rrUkrPQ(R_p/V%k!Hn+grrBfbs+13$s/l>$!0mM6~>
+g]%;if>R[kf2JU?r;QkW!!)!Es8N)3rr^qs!9<eQ!nh^[rVlq_FjJS;!5F*bJcC<$XoJD$PlH7~>
+g]%;if>R[kf2JU?r;QkW!!)!Es8N(srs/8Qg4fS-FnXJf!5F*bJcC<$XoJD$PlH7~>
+g]%?J;t]nb!/o2'!BKiMrrP1\VsFB_!3Z>%Xo8;&jS&WIr;Zh]f)G`bJcC<$JcDkPrrA;`J,~>
+g]%?J;t]nb!/o2'!BKiMrrP1\VsFB_!5AL5mJm1dj7`KQXo8;#mEY_3^OcE9s+13Ps8N(`s*t~>
+g]%?J;t]nb!/o2'!BKiMrrP1\VsFB_!36&$p\+X\r;Zh]f)G`bJcC<$JcDkPrrA;`J,~>
+gA_6@B]8ad!!(@F!R+L?rrRKH;sOD_!3Z>%mJ[(j+2n3ZP5kTnJcC<$JcC<$!ri6#PlH7~>
+gA_6@B]8ad!!(@F!R+L?rrRKH;sOD_!5AI8FZ$;pp&>$ZrVuq^JcC<$JcC<$q>^HpPlH7~>
+gA_6@B]8ad!!(@F!R+L?rrRKH;sOD_!36&(ai+5ZP5kTnJcC<$JcC<$!ri6#PlH7~>
+g&D,h!!)kR!GDJYrs5M_[*6a-!/p4/s8N)+rrVnrXoA>$`'+)""_@Z5fotHIs+13$s+14Ms8N(`
+s*t~>
+g&D,h!!)kR!GDJYrs5M_[*6a-!/p4/s8N)5rr]A\!3Q.u!qraurVltR26HS's+13$s+14Gs8N(`
+s*t~>
+g&D,h!!)kR!GDJYrs5M_[*6a-!/p4/s8N)%rsH^"pT?Gcs8Uc9j+75]s+13$s8W-!!0mM6~>
+gA_/!o`38:"nf[<Vp+Mks8N),rs$e,!!)EdAGZ?,j3[f+^OcE9s+13Ps8N(`s*t~>
+gA_/!o`38:"nf[<Vp+Mks8N)4rrVnXpAFpncSY\&mJd+dmInd(!5F*bJcC<$XoJD$PlH7~>
+gA_/!o`38:"nf[<Vp+Mks8N)&rrZd3:cJ@R!9;H+!5F*bJcC<$XoJD$PlH7~>
+g]%?A!!)eP!GDJ9s8N),rrD*Y!!8koU&=rlL"XfP!5F*bJcC<$XoJD$PlH7~>
+g]%?A!!)eP!GDJ9s8N)7rrU,Lg%kXJj8K#YTu[05^OcE9s+13Ps8N(`s*t~>
+g]%?A!!)eP!GDJ9s8N)&rrAbk!!.f,ci4![JcC<$JcDkPrrA;`J,~>
+g]%;P[.aM"!3ZA%!4r12fu3jh$$?5Yg&M)9:Ta$/rrBfbs+13$s/l>$!0mM6~>
+g]%;P[.aM"!3ZA%!5SU>P5kTHs8UcjrVltB!-Qu8rrBfbs+13$s/l>$!0mM6~>
+g]%;P[.aM"!3ZA%!4)V)pAY'oP>A=Jc2RdYJcC<$JcDkPrrA;`J,~>
+g]%8\p&>!lY5eM%]`/,pFT;F8rr3)\VZ;q$rrBfbs+13$s/l>$!0mM6~>
+g]%8\p&>!lY5eM%^]+Pb:W2:9!!)`lrrM05`W#qQJcC<$JcDkPrrA;`J,~>
+g]%8\p&>!lY5eM%Zi:*V!0bJ'!5F*bJcC<$XoJD$PlH7~>
+g]%8OU&Y,m]`.ubrVur#rr2tlrVuqlaSu7TJcC<$JcDkPrrA;`J,~>
+g]%8OU&Y,m_Z']2XnMbo!87>O!3O':!5F*bJcC<$XoJD$PlH7~>
+g]%8OU&Y,m[/U-"rVuqlaSu7TJcC<$JcDkPrrA;`J,~>
+g]%<@Mt[/Nbc_!G!5SU7r;HX"FT=;$s8S;]!!'.BrrBfbs+13$s/l>$!0mM6~>
+g]%<@Mt[/Nbc_!G!6"m@p?eOR/$8gN"*FT$Xhar:^OcE9s+13Ps8N(`s*t~>
+g]%<@Mt[/Nbc_!G!4Dh,PPkI]XiUMB^OcE9s+13Ps8N(`s*t~>
+gA_2\Mtd5O!3ZA%!5ng>qO>5!rVlg#frauJs)n8?!5uqX!5F*bJcC<$XoJD$PlH7~>
+gA_2\Mtd5O!3ZA%!6>*Fj8\->I#]?MEW5t>frat_rrBfbs+13$s/l>$!0mM6~>
+gA_2\Mtd5O!3ZA%!4Mn-Fo;:?`5hlX^OcE9s+13Ps8N(`s*t~>
+g&D,\;mcE$!T=$]s8N):rri9#!)UH+rrg7?!&`*BrrBfbs+13$s/l>$!0mM6~>
+g&D,\;mcE$!T=$]s8N)Brs7<Os%`Xps"uJ/!!&IurrBfbs+13$s/l>$!0mM6~>
+g&D,\;mcE$!T=$]s8N)-rrg7?!&`*BrrBfbs+13$s/l>$!0mM6~>
+g]%8OoDl&orrC.?!;QKl",m3[L&CuNg&M'RP;VBOs+13$s+14>s8N(`s*t~>
+g]%8OoDl&orrCCFs6U<rP5rr/M#c6/K`G6U!/6"(JcC<$JcFg2rrA;`J,~>
+g]%8OoDl&orrBV0s4RGP!g>M%JcC<$JcC<$nGiLgPlH7~>
+g]%8\oDl&orrC4A"RgJts82fq!md(`rVlu<:B42irrDG;s+13$s+14=s8N(`s*t~>
+g]%8\oDl&orrCLI'''#F!0dH/!/Ygu!2okamE_!LJcC<$JcC<$j8],ZPlH7~>
+g]%8\oDl&orrB\2"2mt8:]C@om=G:gs+13$s6p!f!0mM6~>
+g]%?,!8%#G!T=$]s8N)Arri)s2eBPrrrVSi2>mLTcb]V]^OcE9s+13Ps8N(`s*t~>
+g]%?,!8%#G!T=$]s8N)Mrs[rfs"u\6rr>jpp&Je*!!'R8rrBfbs+13$s/l>$!0mM6~>
+g]%?,!8%#G!T=$]s8N)5rrVSi2>mLTcb]V]^OcE9s+13Ps8N(`s*t~>
+g]%<5!;?Em!3ZA%!71ZFqY^?qA,lV'qYpQAqu?aTcb]V]^OcE9s+13Ps8N(`s*t~>
+g]%<5!;?Em!3ZA%!8@Gep?hmR!87C+!9=*,!9=+>s'u*0TsF[u^OcE9s+13Ps8N(`s*t~>
+g]%<5!;?Em!3ZA%!5AI5chmbD2:',=!5F*bJcC<$XoJD$PlH7~>
+g]%<Im.UGZm&pBg!7CfLnWQdEpAY'nc`QU5rsIG5mJm2^!!#g5p;$\.^OcE9s+13Ps8N(`s*t~>
+g]%<Im.UGZm&pBg!8[Ydj8[d4U&W%2U&VY'RZd_-pAY'nc`QT>rrBfbs+13$s/l>$!0mM6~>
+g]%<Im.UGZm&pBg!5eaCfnJhns%`Up:W2tBrrBfbs+13$s/l>$!0mM6~>
+cMmm&Y5eM%dJj4"rVur/q>Uc>FT;E*s8U#[cb9>Y^OcE9s+13Ps8N(`s*t~>
+cMmm&Y5eM%hu=2[A5E7!!)NX^!-S>8j4XD3!4f01!5F*bJcC<$XoJD$PlH7~>
+cMmm&Y5eM%`;^.^FT;E*s8U#[cb9>Y^OcE9s+13Ps8N(`s*t~>
+ci4%)!3ZA%!7h)Ljo,2]:B1Bgqu6]C:](1mp::2'^OcE9s+13Ps8N(`s*t~>
+ci4%)!3ZA%!8me`j#$i(s'u,ss4Q0*rrZ$s!26In!5F*bJcC<$XoJD$PlH7~>
+ci4%)!3ZA%!65$>cVOH=!;<u'!5F*bJcC<$XoJD$PlH7~>
+g]%8tp58uc!;3PqrrC^O"STB%2>7%L!md(tqYpPZr;ZmVXnK=*!5F*bJcC<$XoJD$PlH7~>
+g]%8tp58uc!;3PqrrD$Xs5OLef`8S_mHsVX:GqkFrrUN1mAg0d^OcE9s+13Ps8N(`s*t~>
+g]%8tp58uc!;3PqrrC(=!0d?]!]@+R\c2ZEJcC<$JcDkPrrA;`J,~>
+g]%8OoDemMYQ+V&f`(rtrVur:q#:Z=L&_2?!!"mYp:(&%^OcE9s+13Ps8N(`s*t~>
+g]%8OoDemMYQ+V&ir95C!&a0Dch@A<!71WE!5t]5!5F*bJcC<$XoJD$PlH7~>
+g]%8OoDemMYQ+V&b5VddL&_2?!!"mYp:(&%^OcE9s+13Ps8N(`s*t~>
+g]%>j!.+L""B,;6MtO:RrrC[N"&AmsL&:lWm@cB;!6"p;Xf_;Js+13$s+14.s8N(`s*t~>
+g]%>j!.+L""B,;6MtO:RrrD$X"-W^qpA=jl:B1BKJcC<$JcC<$ci="FPlH7~>
+g]%>j!.+L""B,;6MtO:RrrC=D$LONE!!'t;s/iEsJcC<$JcC<$i;`fWPlH7~>
+g]%?,!:9O]!o[)%Y5eM%hZ!Z1Khq[I!lSWfqu6Y,qu?^mJcC<$JcC<$g].9RPlH7~>
+g]%?,!:9O]!o[)%Y5eM%jT#7Ds8W+_!ni9'rVlr;AAj'!JcC<$JcF$qrrA;`J,~>
+g]%?,!:9O]!o[)%Y5eM%cMmlTqu?^mJcC<$JcC<$g].9RPlH7~>
+g]%<5!;?Em;m-0#!8meVg&:sO`;0E9cf>'*Fo;:@:W0L;!5F*bJcC<$XoJD$PlH7~>
+g]%<5!;?Em;m-0#!9O4bp1+/es8UdO!!'s.rrBfbs+13$s/l>$!0mM6~>
+g]%<5!;?Em;m-0#!7LlMcf>'*Fo;:@:W0L;!5F*bJcC<$XoJD$PlH7~>
+cMmpPm'$Hh!8d_X:B1Ajr;R/bThbZBs8U";!/8b%rrBfbs+13$s/l>$!0mM6~>
+cMmpPm'$Hh!9a@jp<Wd+2#u\:s%`Up:S%Lc^OcE9s+13Ps8N(`s*t~>
+cMmpPm'$Hh!7h)Wj.T6KL&_1k!!%`!Y5\L:JcC<$JcDkPrrA;`J,~>
+cMmphm'$Hh!9O4^nu[lLrr^1sPO8AL!Q6kn!!N#qp:9murrBfbs+13$s/l>$!0mM6~>
+cMmphm'$Hh!9a@cA,scS=l]M]"2m'\m@F7W^OcE9s+13Ps8N(`s*t~>
+cMmphm'$Hh!8%5O`&7Gm"SVlh\b<-)!5F*bJcC<$XoJD$PlH7~>
+cMmpCiQhH-iJW#?HAgbHs8N)\rr`",!6"m:s7QW`\Y9''`;BT92;+r.!5F*bJcC<$XoJD$PlH7~>
+cMmpCiQhH-iJW#?HAgbHs8N)as8Pjqs2=j9!6"m:s7Vr^!5F*bJcC<$XoJD$PlH7~>
+cMmpCiQhH-iJW#?HAgbHs8N)Srrqf#U&Y/2qu?aTfr4oN^OcE9s+13Ps8N(`s*t~>
+ci4$Q!7(TGbW3oHrrUD)bj,6.!9O4dk;NBOs8VJ[:]:=qpAajc!!.f"VZ-Y2JcC<$JcDkPrrA;`
+J,~>
+ci4$Q!7(TGbW3oHrrUD)bj,6.!:KjqT`F-QFTCh/\K:eOA=!5q^OcE9s+13Ps8N(`s*t~>
+ci4$Q!7(TGbW3oHrrUD)bj,6.!8meXm@d>T!!;lopAP$mL!QXr!5F*bJcC<$XoJD$PlH7~>
+g]%8Oo`+uMci4(*!5SO4!l+f[li6tbm/I.``6/&Y"h=VUg&K"f!!L7?s1-J(s8N)KrrBg_s8N(r
+s8N(qs8N(qs8N(qs8N)Ks8N(`s*t~>
+g]%8Oo`+uMci4(*!5SO4!l+f[li6tbnc'-%pA_Z'ZG]oH\c;]?!-Qu6s8N)KrrBg_s8N(rs8N(q
+s8N(qs8N(qs8N)Ks8N(`s*t~>
+g]%8Oo`+uMci4(*!5SO4!l+f[li6tbi;WeqqZ$c;s8TXUdf9=IeGfN`e,TFJVZ6YrV>pPqV>pPq
+V>pPqeGoOKPlH7~>
+g]%8\pAb7n[-Z-=!K-sSs8N)bs8N)crr^^M:u)'M"noHipAaja!!-W`cN!nEeGfN`e,TFJVZ6Yr
+V>pPqV>pPqV>pPqeGoOKPlH7~>
+g]%8\pAb7n[-Z-=!K-sSs8N)bs8N)irsl.2AG5$`)uou*pAb0dj2:os!7_#K^XN5_!2fer!2]_q
+!2]_q!2]_q!7_&K!0mM6~>
+g]%8\pAb7n[-Z-=!K-sSs8N)bs8N)[rrh#=pAaja!!-W`cN!nEeGfN`e,TFJVZ6YrV>pPqV>pPq
+V>pPqeGoOKPlH7~>
+g]%?,!8#0hrrDoqrr<&Cm/R(cm/IZI!!%0Aj.S=1!6"p;K`HhFp<<R:!2]_q!2fer!2]_q!2]_q
+!2]_q!7_&K!0mM6~>
+g]%?,!8#0hrrDoqrr<&Cm/R(co)B$iA,q>`X[W9jFh[nU!2]_q!2fer!2]_q!2]_q!2]_q!7_&K
+!0mM6~>
+g]%?,!8#0hrrDoqrr<&Cm/R(ckPktNTeufM`;fjk!/8Abbl@\CV>pPqVZ6YrV>pPqV>pPqV>pPq
+eGoOKPlH7~>
+g]%<5!6"m=ZiH$\rrS)YMsUKD!:p-jmCrQ!"K_Z"`+8cG"D%Q4mIn[%rrAnqrrAqrrrAnqrrAnq
+rrAnqrrCRKrrA;`J,~>
+g]%<5!6"m=ZiH$\rrS)YMsUKD!;6@#p12,/ZA%?=s/c8s`4l9O!2]_q!2fer!2]_q!2]_q!2]_q
+!7_&K!0mM6~>
+g]%<5!6"m=ZiH$\rrS)YMsUKD!9jF_AGcE1AH2\sp<!@7!2]_q!2fer!2]_q!2]_q!2]_q!7_&K
+!0mM6~>
+g]%<Im)8o*MZA\3rrS)YB^Gd!!:p-sS,g^XTk".^s8S;]!!+sN`W,r<eGfN`e,TFJVZ6YrV>pR=
+V>pRuV>pSLeGoOKPlH7~>
+g]%<Im)8o*MZA\3rrS)YB^Gd!!;6?qj#$fc!87AO!VXjPs8N)KrrBg_s8N(rs8N)DrrDcHg&D&m
+f`8tKXoACaXT5'1FoMI#FT>5/!0mM6~>
+g]%<Im)8o*MZA\3rrS)YB^Gd!!:^!oo$="?2p21#PPkI^25/"hrrCRK!5I"_rrAqrrrC=D!;>."
+rrC*m!6!ftrrD5a!272NrrD##!)N1dPlH7~>
+SH&Th!/p^R!fI$Ym/R(co`#!as5a%W#Bg(H\GuV`cboe_Y13IOiR@i,g4B9Ts+14+s8N(`s*t~>
+SH&Th!/p^R!fI$Ym/R(cp\t?hj8Zpo!!,mhrr35sg"GZjs7GF3f`8tOXoACNXT3t=XT4(?FoMHE
+FT>3g!.b-R!0mM6~>
+SH&Th!/p^R!fI$Ym/R(cnG`OV2uWd^AD,Y,!!%#CiRn4LjK8F^e?&_&l`C/@l?3+,Y&s_?JH16$
+Y5jgeJ,~>
+SH&Th!/p^R!fI$Ym/R(cp&>-`mE.Ba!<<'"p=Y#sJcC<$JcG'9s4Z!&rrA;`J,~>
+SH&Th!/p^R!fI$Ym/R(cq#:Zf:Gq24I/j7ipAP$k!!,$%JH16$JH1?'k]Qn*hK8g^poXPrPlH7~>
+SH&Th!/p^R!fI$Ym/R(cp&>6cmIgMZg,FQ_JH16$JH5TJk]Qn*hK8g^poXPrPlH7~>
+j8T,'q2>1N"2Ki%bfp+e!!%rRrrS)Y!:9ac!;QR'g$Jb"JcBks!!#fY\`88@hZ*W0VZ6\!V>pR=
+V>pPqV>pPqeGoOKPlH7~>
+j8T,'q2>1N"2Ki%bfp+e!!%rRrrS)Y!:9ac!;QR'fnf]>f`2"[s8VK*Tk/cTo)S-"rrB*B!29@n
+rrC3D!6!^HrrC!j!;>IQrrAnqrrCRKrrA;`J,~>
+j8T,'q2>1N"2Ki%bfp+e!!%rRrrS)Y!:9ac!;HKtoDdlC!8<0Y!:9dQFoMHBFTA-6XoACDXT6;q
+g&D&jf`:a+s8N(qs8N)Ks8N(`s*t~>
+j8T/H[/L%,BURiTrr^KCB]78:rr<%WqYpVT!!)BcrrDoq$h24;!6+"Xj8].imC<2rG1?Nl^XN5_
+!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+j8T/H[/L%,BURiTrr^KCB]78:rr<%WqYpVT!!)BcrrDoq$enV\Fd$A0AH5N[hRM8=!;Y:Jj5'_8
+^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+j8T/H[/L%,BURiTrr^KCB]78:rr<%WqYpVT!!)BcrrDoq$i0Stg;W,3!!#fLagg%(!;Y:Jj5'_8
+^XN5_!2fer!2]_q!2]_q!2]_q!7_&K!0mM6~>
+iVru';p=n6!qhJYci="F!/p^R!fI$Ym/R(cqYpfjs2=s<2ZUCqs8N)KrrBg_s8N(rs8N(qs8N(q
+s8N(qs8N)Ks8N(`s*t~>
+iVru';p=n6!qhJYci="F!/p^R!fI$Ym/R(cqYpOGrW!)3pA`4o[K$7,eGfN`e,TFJVZ6YrV>pPq
+V>pPqV>pPqeGoOKPlH7~>
+iVru';p=n6!qhJYci="F!/p^R!fI$Ym/R(cqYpQnrr3+p2ZRXR[K$7,eGfN`e,TFJVZ6YrV>pPq
+V>pPqV>pPqeGoOKPlH7~>
+iVrpWm.()VHF2'!rr<%WqYpVT!!)BcJH16$JH16$SH+oSJ,~>
+iVrpWm.()VHF2'!rr<%WqYpVT!!)BcJH16$JH16$SH+oSJ,~>
+iVrpWm.()VHF2'!rr<%WqYpVT!!)BcJH16$JH16$SH+oSJ,~>
+ir9%;_!q@)lr2:2!b_RlqYpVT!)r7aJH16$JH16$SH+oSJ,~>
+ir9%;_!q@)lr2:2!b_RlqYpVT!)r7aJH16$JH16$SH+oSJ,~>
+ir9%;_!q@)lr2:2!b_RlqYpVT!)r7aJH16$JH16$SH+oSJ,~>
+j8T/=!:KjfVq9>r!iH$VqYpVT!/lF.JcC<$JcC<$S,\!~>
+j8T/=!:KjfVq9>r!iH$VqYpVT!/lF.JcC<$JcC<$S,\!~>
+j8T/=!:KjfVq9>r!iH$VqYpVT!/lF.JcC<$JcC<$S,\!~>
+j8].dmf*=3[*emTbQ(T<rrQ+!Vh+l!s+13$s+13>s*t~>
+j8].dmf*=3[*emTbQ(T<rrQ+!Vh+l!s+13$s+13>s*t~>
+j8].dmf*=3[*emTbQ(T<rrQ+!Vh+l!s+13$s+13>s*t~>
+j8T.X[-mqpbbrhf!E0!ps8N'!iIV#[s+13$s+13>s*t~>
+j8T.X[-mqpbbrhf!E0!ps8N'!iIV#[s+13$s+13>s*t~>
+j8T.X[-mqpbbrhf!E0!ps8N'!iIV#[s+13$s+13>s*t~>
+j8].dmf*=3[*\gSZiJ_UrrUdPMh1nZs+13$s+13=s*t~>
+j8].dmf*=3[*\gSZiJ_UrrUdPMh1nZs+13$s+13=s*t~>
+j8].dmf*=3[*\gSZiJ_UrrUdPMh1nZs+13$s+13=s*t~>
+j8T.e!:KjfMmUh1!E3\0rrHe3JcC<$JcC<$JcD/<J,~>
+j8T.e!:KjfMmUh1!E3\0rrHe3JcC<$JcC<$JcD/<J,~>
+j8T.e!:KjfMmUh1!E3\0rrHe3JcC<$JcC<$JcD/<J,~>
+j8T2>!6jp3!<D*)rs7RDB\3:9BK>%&s+13$s+13$s-`n;~>
+j8T2>!6jp3!<D*)rs7RDB\3:9BK>%&s+13$s+13$s-`n;~>
+j8T2>!6jp3!<D*)rs7RDB\3:9BK>%&s+13$s+13$s-`n;~>
+ir9#Z3Um%L;ZP&A"P:Ge^t4/;JcC<$JcC<$QiDR~>
+ir9#Z3Um%L;ZP&A"P:Ge^t4/;JcC<$JcC<$QiDR~>
+ir9#Z3Um%L;ZP&A"P:Ge^t4/;JcC<$JcC<$QiDR~>
+ir9,)!/pOBrr_qP!2kDJJcC<$JcC<$JcFR+J,~>
+ir9,)!/pOBrr_qP!2kDJJcC<$JcC<$JcFR+J,~>
+ir9,)!/pOBrr_qP!2kDJJcC<$JcC<$JcFR+J,~>
+iVs%K!'.FQp\t?&3<3!/s+13$s+13$s+14*s*t~>
+iVs%K!'.FQp\t?&3<3!/s+13$s+13$s+14*s*t~>
+iVs%K!'.FQp\t?&3<3!/s+13$s+13$s+14*s*t~>
+i;WdUrVutWbl%JAb_uH#!)nIKJcC<$JcC<$JcFL)J,~>
+i;WdUrVutWbl%JAb_uH#!)nIKJcC<$JcC<$JcFL)J,~>
+i;WdUrVutWbl%JAb_uH#!)nIKJcC<$JcC<$JcFL)J,~>
+i;WiE3V3:P3UD=sJcC<$JcC<$JcFL)J,~>
+i;WiE3V3:P3UD=sJcC<$JcC<$JcFL)J,~>
+i;WiE3V3:P3UD=sJcC<$JcC<$JcFL)J,~>
+hu<cNZr?]!!N5UAs+13$s+13$s+14(s*t~>
+hu<cNZr?]!!N5UAs+13$s+13$s+14(s*t~>
+hu<cNZr?]!!N5UAs+13$s+13$s+14(s*t~>
+h#@D^Mu3PUMmS'8JcC<$JcC<$JcF@%J,~>
+h#@D^Mu3PUMmS'8JcC<$JcC<$JcF@%J,~>
+h#@D^Mu3PUMmS'8JcC<$JcC<$JcF@%J,~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcCB&!S?[hs+13Ls*t~>
+JcC<$JcCB&!S?[hs+13Ls*t~>
+JcC<$JcCB&!S?[hs+13Ls*t~>
+JcGNF#2tJdMgC<?YQ"XI!;HKtiJW#?HAgamrs$8s!!#rUiVEKXiJW#?HAgamrs$8s!!#rUiVEKX
+iJW#?HAgairrV.Xbkh>DiJW#?HAganrrS+Vbl7VEiQPuZqu6lZMgC;-MrD/F"i+dO!)p9$rs%G?
+HAd*-iIV%#s*t~>
+JcGNF#2tJdMgC<?YQ"XI!;HKtiJW#?HAgamrs$8s!!#rUiVEKXiJW#?HAgamrs$8s!!#rUiVEKX
+iJW#?HAgairrV.Xbkh>DiJW#?HAganrrS+Vbl7VEiQPuZqu6lZMgC;-MrD/F"i+dO!)p9$rs%G?
+HAd*-iIV%#s*t~>
+JcGNF#2tJdMgC<?YQ"XI!;HKtiJW#?HAgamrs$8s!!#rUiVEKXiJW#?HAgamrs$8s!!#rUiVEKX
+iJW#?HAgairrV.Xbkh>DiJW#?HAganrrS+Vbl7VEiQPuZqu6lZMgC;-MrD/F"i+dO!)p9$rs%G?
+HAd*-iIV%#s*t~>
+JcGQG!mE[Krr3&D3R"o2#5-3aZtKF>q#:E>3R%L&!mE[K]`/<)HF3&=s0Mb+Mu3MUbW3oHrrUD)
+be*oTM[%E*s3(HCMu3MUbW3oHrrUD)bd[TSlt?CCqu6`A3R%L&!mE[K]Dhkhq>^MRqu6`A3R%L&
+!mE[K])N&[BK<m.s6P&1r;QiB3R%L&!mE[KJcGBBJ,~>
+JcGQG!mE[Krr3&D3R"o2#5-3aZtKF>q#:E>3R%L&!mE[K]`/<)HF3&=s0Mb+Mu3MUbW3oHrrUD)
+be*oTM[%E*s3(HCMu3MUbW3oHrrUD)bd[TSlt?CCqu6`A3R%L&!mE[K]Dhkhq>^MRqu6`A3R%L&
+!mE[K])N&[BK<m.s6P&1r;QiB3R%L&!mE[KJcGBBJ,~>
+JcGQG!mE[Krr3&D3R"o2#5-3aZtKF>q#:E>3R%L&!mE[K]`/<)HF3&=s0Mb+Mu3MUbW3oHrrUD)
+be*oTM[%E*s3(HCMu3MUbW3oHrrUD)bd[TSlt?CCqu6`A3R%L&!mE[K]Dhkhq>^MRqu6`A3R%L&
+!mE[K])N&[BK<m.s6P&1r;QiB3R%L&!mE[KJcGBBJ,~>
+JcGTH!oX-pr;Qi6!6hnO#5*n4[&3m(q>UNT!5SO4!l+f[^&J+kbl%JCi;`jkrVlrX!5SO4!l+f[
+^&J/L;o&A3"3^`FMuEYWi;g[krrTt9bddZTH2mrhr;QiW!5SO4!l+f[]`.tiqu?arbkqDAi;g[k
+rrTt9be3rXbQ(T7rr3(u!!(7BrrV-Z_#436^];T0s7QDB~>
+JcGTH!oX-pr;Qi6!6hnO#5*n4[&3m(q>UNT!5SO4!l+f[^&J+kbl%JCi;`jkrVlrX!5SO4!l+f[
+^&J/L;o&A3"3^`FMuEYWi;g[krrTt9bddZTH2mrhr;QiW!5SO4!l+f[]`.tiqu?arbkqDAi;g[k
+rrTt9be3rXbQ(T7rr3(u!!(7BrrV-Z_#436^];T0s7QDB~>
+JcGTH!oX-pr;Qi6!6hnO#5*n4[&3m(q>UNT!5SO4!l+f[^&J+kbl%JCi;`jkrVlrX!5SO4!l+f[
+^&J/L;o&A3"3^`FMuEYWi;g[krrTt9bddZTH2mrhr;QiW!5SO4!l+f[]`.tiqu?arbkqDAi;g[k
+rrTt9be3rXbQ(T7rr3(u!!(7BrrV-Z_#436^];T0s7QDB~>
+JcGTH!K-sSs8N))rrUCE!;ZWqMZEVRrrBb4!)rao",d-ZfDbdNMZEVRrrBb4",d-Z[/L%(!<)ou
+MZEVRrrBV0"O'dE!6kB@!K-sSs8N)3rrn>>[&::iq>UJR!;c`q!5/@3!!)!Vrr\/Z!6kHB!K-sS
+s8N(Ms7QDB~>
+JcGTH!K-sSs8N))rrUCE!;ZWqMZEVRrrBb4!)rao",d-ZfDbdNMZEVRrrBb4",d-Z[/L%(!<)ou
+MZEVRrrBV0"O'dE!6kB@!K-sSs8N)3rrn>>[&::iq>UJR!;c`q!5/@3!!)!Vrr\/Z!6kHB!K-sS
+s8N(Ms7QDB~>
+JcGTH!K-sSs8N))rrUCE!;ZWqMZEVRrrBb4!)rao",d-ZfDbdNMZEVRrrBb4",d-Z[/L%(!<)ou
+MZEVRrrBV0"O'dE!6kB@!K-sSs8N)3rrn>>[&::iq>UJR!;c`q!5/@3!!)!Vrr\/Z!6kHB!K-sS
+s8N(Ms7QDB~>
+JcGTHrrDoqrr<&CZi:*N!!)iprrDoqrr<&C^]+DO!!(7@rr^%:!5SU6rrDoqrr<&C^Ae:n!!'D)
+s8E#ss8N)qs8N'!be!fWBZpGVbl%M@!;c`q!!(6Vrr@uLs8N)qs8N'!beF)Y^]8]YrrVkO[/L%)
+!;c`q!!(5os7ZJC~>
+JcGTHrrDoqrr<&CZi:*N!!)iprrDoqrr<&C^]+DO!!(7@rr^%:!5SU6rrDoqrr<&C^Ae:n!!'D)
+s8E#ss8N)qs8N'!be!fWBZpGVbl%M@!;c`q!!(6Vrr@uLs8N)qs8N'!beF)Y^]8]YrrVkO[/L%)
+!;c`q!!(5os7ZJC~>
+JcGTHrrDoqrr<&CZi:*N!!)iprrDoqrr<&C^]+DO!!(7@rr^%:!5SU6rrDoqrr<&C^Ae:n!!'D)
+s8E#ss8N)qs8N'!be!fWBZpGVbl%M@!;c`q!!(6Vrr@uLs8N)qs8N'!beF)Y^]8]YrrVkO[/L%)
+!;c`q!!(5os7ZJC~>
+JcGWI!jhrcqYpVT!/n2`!mCWEqYpW(!/p^R!fI&:^]+D[!!%rTrs6gK!4;e+ZiH$\rrS)YMn]2m
+m#.;1rr_Tf!)rms!jhrcqYpVT!/nJh"e">n!!(7ArrTP-Mu*GTMZA[Krr@uMrrTP-Mu*GTMZA[L
+rrP1\bkD&<ZiH$\rrS)YMh1p%s*t~>
+JcGWI!jhrcqYpVT!/n2`!mCWEqYpW(!/p^R!fI&:^]+D[!!%rTrs6gK!4;e+ZiH$\rrS)YMn]2m
+m#.;1rr_Tf!)rms!jhrcqYpVT!/nJh"e">n!!(7ArrTP-Mu*GTMZA[Krr@uMrrTP-Mu*GTMZA[L
+rrP1\bkD&<ZiH$\rrS)YMh1p%s*t~>
+JcGWI!jhrcqYpVT!/n2`!mCWEqYpW(!/p^R!fI&:^]+D[!!%rTrs6gK!4;e+ZiH$\rrS)YMn]2m
+m#.;1rr_Tf!)rms!jhrcqYpVT!/nJh"e">n!!(7ArrTP-Mu*GTMZA[Krr@uMrrTP-Mu*GTMZA[L
+rrP1\bkD&<ZiH$\rrS)YMh1p%s*t~>
+JcGWI!fI&:qYpVT!,/_=!mCWEqYpVT!/p^R!fI%l^]+E&H;i&crs6gK!2oksMZA\3rrS)YBXe!D
+MZ<bDrr3%X!/p^R!fI%l]`/2[VuOs@!6kEA!fI&:qYpVT!,0(G!/pOM!fI&:qYpVT!,0.I"3^`F
+iV*9QMZA\3rrS)YBS$3Ws*t~>
+JcGWI!fI&:qYpVT!,/_=!mCWEqYpVT!/p^R!fI%l^]+E&H;i&crs6gK!2oksMZA\3rrS)YBXe!D
+MZ<bDrr3%X!/p^R!fI%l]`/2[VuOs@!6kEA!fI&:qYpVT!,0(G!/pOM!fI&:qYpVT!,0.I"3^`F
+iV*9QMZA\3rrS)YBS$3Ws*t~>
+JcGWI!fI&:qYpVT!,/_=!mCWEqYpVT!/p^R!fI%l^]+E&H;i&crs6gK!2oksMZA\3rrS)YBXe!D
+MZ<bDrr3%X!/p^R!fI%l]`/2[VuOs@!6kEA!fI&:qYpVT!,0(G!/pOM!fI&:qYpVT!,0.I"3^`F
+iV*9QMZA\3rrS)YBS$3Ws*t~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y[f6W2!!'h7rr<%WqYpVT!!'P/"5s4[[/L%)
+!!%rRrrS)Y!58C;i;ioXbQ%XerVult!/p^R!fI$Y^&J:ps4:0L!4;Y'rr<%WqYpVT!!'e6$+'[4
+s8RuW!4:__s8N'!Mu*GTMZ<a.s7ZJC~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y[f6W2!!'h7rr<%WqYpVT!!'P/"5s4[[/L%)
+!!%rRrrS)Y!58C;i;ioXbQ%XerVult!/p^R!fI$Y^&J:ps4:0L!4;Y'rr<%WqYpVT!!'e6$+'[4
+s8RuW!4:__s8N'!Mu*GTMZ<a.s7ZJC~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y[f6W2!!'h7rr<%WqYpVT!!'P/"5s4[[/L%)
+!!%rRrrS)Y!58C;i;ioXbQ%XerVult!/p^R!fI$Y^&J:ps4:0L!4;Y'rr<%WqYpVT!!'e6$+'[4
+s8RuW!4:__s8N'!Mu*GTMZ<a.s7ZJC~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y[f6VZ!!)]lrr<%WqYpVT!!'S0"6#.<_#464
+!!%rRrrS)Y!58C;MrF^9bQ%XerVult!/p^R!fI$Y^&S+j#,h.ooi"f5rVult!/p^R!fI$Y^]495
+#L$-*s7N8ibl.SA!!%rRrrS)Y!.k1Ds*t~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y[f6VZ!!)]lrr<%WqYpVT!!'S0"6#.<_#464
+!!%rRrrS)Y!58C;MrF^9bQ%XerVult!/p^R!fI$Y^&S+j#,h.ooi"f5rVult!/p^R!fI$Y^]495
+#L$-*s7N8ibl.SA!!%rRrrS)Y!.k1Ds*t~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y[f6VZ!!)]lrr<%WqYpVT!!'S0"6#.<_#464
+!!%rRrrS)Y!58C;MrF^9bQ%XerVult!/p^R!fI$Y^&S+j#,h.ooi"f5rVult!/p^R!fI$Y^]495
+#L$-*s7N8ibl.SA!!%rRrrS)Y!.k1Ds*t~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\,QQS!!(7Bs8N'!Mu*GTMZ<ahs8IoX3K(9B
+s8N'!Mu*GTMZ<akrrL?Nrr3)E!!(7As8N'!Mu*GTMZ<ajrrJ&%r;QgY!9*qWrr<%WqYpVT!!'e6
+rVuq3r;QhV!2ohrrr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\,QQS!!(7Bs8N'!Mu*GTMZ<ahs8IoX3K(9B
+s8N'!Mu*GTMZ<akrrL?Nrr3)E!!(7As8N'!Mu*GTMZ<ajrrJ&%r;QgY!9*qWrr<%WqYpVT!!'e6
+rVuq3r;QhV!2ohrrr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\,QQS!!(7Bs8N'!Mu*GTMZ<ahs8IoX3K(9B
+s8N'!Mu*GTMZ<akrrL?Nrr3)E!!(7As8N'!Mu*GTMZ<ajrrJ&%r;QgY!9*qWrr<%WqYpVT!!'e6
+rVuq3r;QhV!2ohrrr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\GlZt!!&qqs8N'!Mu*GTMZ<aerr_V6!/pgU
+rr<%WqYpVT!!'b5!)rjr"3^`Fbl.SA!!%rRrrS)Y!58C4bkqDAMZ<bVs8N'!Mu*GTMZ<als8Duu
+[/Bq0bQ%Xes8N'!Mu*GTMZ<a.s7ZJC~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\GlZt!!&qqs8N'!Mu*GTMZ<aerr_V6!/pgU
+rr<%WqYpVT!!'b5!)rjr"3^`Fbl.SA!!%rRrrS)Y!58C4bkqDAMZ<bVs8N'!Mu*GTMZ<als8Duu
+[/Bq0bQ%Xes8N'!Mu*GTMZ<a.s7ZJC~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\GlZt!!&qqs8N'!Mu*GTMZ<aerr_V6!/pgU
+rr<%WqYpVT!!'b5!)rjr"3^`Fbl.SA!!%rRrrS)Y!58C4bkqDAMZ<bVs8N'!Mu*GTMZ<als8Duu
+[/Bq0bQ%Xes8N'!Mu*GTMZ<a.s7ZJC~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\GlVg!/pdTrr<%WqYpVT!!'M.$1'YP;t^1j
+!!%rRrrS)Y!5JO7REYX0"3^`Fbl.SA!!%rRrrS)Y!4Mn5ZiC*Xs8N'!Mu*GTMZ<als8DuubkqG?
+!!S;\rr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\GlVg!/pdTrr<%WqYpVT!!'M.$1'YP;t^1j
+!!%rRrrS)Y!5JO7REYX0"3^`Fbl.SA!!%rRrrS)Y!4Mn5ZiC*Xs8N'!Mu*GTMZ<als8DuubkqG?
+!!S;\rr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\GlVg!/pdTrr<%WqYpVT!!'M.$1'YP;t^1j
+!!%rRrrS)Y!5JO7REYX0"3^`Fbl.SA!!%rRrrS)Y!4Mn5ZiC*Xs8N'!Mu*GTMZ<als8DuubkqG?
+!!S;\rr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\c2_h!4;Y'rr<%WqYpVT!!'J-#`AZ_VuQbs
+!/p^R!fI$Y_#FGZVu6PsbQ%XerVult!/p^R!fI$Y[f6WW!!&qsrr<%WqYpVT!!'e6rW)fprW)uu
+rr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\c2_h!4;Y'rr<%WqYpVT!!'J-#`AZ_VuQbs
+!/p^R!fI$Y_#FGZVu6PsbQ%XerVult!/p^R!fI$Y[f6WW!!&qsrr<%WqYpVT!!'e6rW)fprW)uu
+rr<%WqYpVT!!%TMpA]X~>
+JcGWIrr<%WqYpVT!!'A*!mCWEqZ$Qq!/p^R!fI$Y\c2_h!4;Y'rr<%WqYpVT!!'J-#`AZ_VuQbs
+!/p^R!fI$Y_#FGZVu6PsbQ%XerVult!/p^R!fI$Y[f6WW!!&qsrr<%WqYpVT!!'e6rW)fprW)uu
+rr<%WqYpVT!!%TMpA]X~>
+JcGWI!b_RlqYpVT!)p6(!mCWEqYpV1!/p^R!fI%W])MiU;saA\!b_RlqYpVT!)p?+#g<8K;ucl2
+!/p^R!fI%W_>aQ&!;jtIR/d5bbfob[BE3terrS)Y;ni85[&<9grs6gK!4;e+BE3terrS)Y;nr>6
+BE/&/s8E#urrQj6Mu*GTMZ?\,s7ZJC~>
+JcGWI!b_RlqYpVT!)p6(!mCWEqYpV1!/p^R!fI%W])MiU;saA\!b_RlqYpVT!)p?+#g<8K;ucl2
+!/p^R!fI%W_>aQ&!;jtIR/d5bbfob[BE3terrS)Y;ni85[&<9grs6gK!4;e+BE3terrS)Y;nr>6
+BE/&/s8E#urrQj6Mu*GTMZ?\,s7ZJC~>
+JcGWI!b_RlqYpVT!)p6(!mCWEqYpV1!/p^R!fI%W])MiU;saA\!b_RlqYpVT!)p?+#g<8K;ucl2
+!/p^R!fI%W_>aQ&!;jtIR/d5bbfob[BE3terrS)Y;ni85[&<9grs6gK!4;e+BE3terrS)Y;nr>6
+BE/&/s8E#urrQj6Mu*GTMZ?\,s7ZJC~>
+JcGWI!iH$VqYpVT!/n2`!mCWEqYpVp!/p^R!fI&:]Dhra!9*kU"kWeSVZ;YOrrS)YMnf8of4\+L
+r;Qc@rW)uu!iH$VqYpVT!/n\n!:9=X"RQ/d!/p^R!fI&:^]+DO!!'D(rs6gK!2oksVZ;YOrrS)Y
+Mnf8nVZ6_ns8E#urrT(uMu*GTMZAZds7ZJC~>
+JcGWI!iH$VqYpVT!/n2`!mCWEqYpVp!/p^R!fI&:]Dhra!9*kU"kWeSVZ;YOrrS)YMnf8of4\+L
+r;Qc@rW)uu!iH$VqYpVT!/n\n!:9=X"RQ/d!/p^R!fI&:^]+DO!!'D(rs6gK!2oksVZ;YOrrS)Y
+Mnf8nVZ6_ns8E#urrT(uMu*GTMZAZds7ZJC~>
+JcGWI!iH$VqYpVT!/n2`!mCWEqYpVp!/p^R!fI&:]Dhra!9*kU"kWeSVZ;YOrrS)YMnf8of4\+L
+r;Qc@rW)uu!iH$VqYpVT!/n\n!:9=X"RQ/d!/p^R!fI&:^]+DO!!'D(rs6gK!2oksVZ;YOrrS)Y
+Mnf8nVZ6_ns8E#urrT(uMu*GTMZAZds7ZJC~>
+JcGWI!mCXCqYpUq!2m1'!mCWEqYpW@!)rao!`K)s]`/&W!6kB@#2urhs3(IAqYpUq!2mU3")%Z7
+RJd'bbl.VBrrUCE;u6Lq;ZN`+rr^IF!6kEA!mCXCqYpUq!2mU3"2Fm:RJd'jbQ%XYs8U:C;u6Lq
+;ZN`1rr^IF!8%,JrW)uu!mCXCqYpUq!2kDJpA]X~>
+JcGWI!mCXCqYpUq!2m1'!mCWEqYpW@!)rao!`K)s]`/&W!6kB@#2urhs3(IAqYpUq!2mU3")%Z7
+RJd'bbl.VBrrUCE;u6Lq;ZN`+rr^IF!6kEA!mCXCqYpUq!2mU3"2Fm:RJd'jbQ%XYs8U:C;u6Lq
+;ZN`1rr^IF!8%,JrW)uu!mCXCqYpUq!2kDJpA]X~>
+JcGWI!mCXCqYpUq!2m1'!mCWEqYpW@!)rao!`K)s]`/&W!6kB@#2urhs3(IAqYpUq!2mU3")%Z7
+RJd'bbl.VBrrUCE;u6Lq;ZN`+rr^IF!6kEA!mCXCqYpUq!2mU3"2Fm:RJd'jbQ%XYs8U:C;u6Lq
+;ZN`1rr^IF!8%,JrW)uu!mCXCqYpUq!2kDJpA]X~>
+JcGTH!E0!ps8N'!iNrOcbQ%Y=rrH$uqZ$Qq!9(Wk!mFU%qu6](fDbdN;ZQ[orr<&X^]495!/pdT
+"2Fm:B`A#4;ZQ[orr<&X\c2cU!!(7@rrH$uqZ$Qq!9(]m"4pJLp&+glMZ<b9rr3!t!;c`q!!(ul
+rrQ+!bl%JCo`+uirr3!t!;c`q!!(u/s7ZJC~>
+JcGTH!E0!ps8N'!iNrOcbQ%Y=rrH$uqZ$Qq!9(Wk!mFU%qu6](fDbdN;ZQ[orr<&X^]495!/pdT
+"2Fm:B`A#4;ZQ[orr<&X\c2cU!!(7@rrH$uqZ$Qq!9(]m"4pJLp&+glMZ<b9rr3!t!;c`q!!(ul
+rrQ+!bl%JCo`+uirr3!t!;c`q!!(u/s7ZJC~>
+JcGTH!E0!ps8N'!iNrOcbQ%Y=rrH$uqZ$Qq!9(Wk!mFU%qu6](fDbdN;ZQ[orr<&X^]495!/pdT
+"2Fm:B`A#4;ZQ[orr<&X\c2cU!!(7@rrH$uqZ$Qq!9(]m"4pJLp&+glMZ<b9rr3!t!;c`q!!(ul
+rrQ+!bl%JCo`+uirr3!t!;c`q!!(u/s7ZJC~>
+JcGTH!jhsZr;QiM!/n/_!mCWEq>UN'!8%/K!nRF1^&J0#;eZ#c!<CaNrrTP-fDPXMf)U`Crr\0>
+VsO?]")%Z7iVriYZiJ_UrrUdPMn&chbQ%Xer;Qi*!8%/K!nRF1^&J*np&"aj3<5uUrrTP-fDPXM
+f)U`BrrTP-B`.l4ZiC*mrr3&,!8%/K!nRF1JcGECJ,~>
+JcGTH!jhsZr;QiM!/n/_!mCWEq>UN'!8%/K!nRF1^&J0#;eZ#c!<CaNrrTP-fDPXMf)U`Crr\0>
+VsO?]")%Z7iVriYZiJ_UrrUdPMn&chbQ%Xer;Qi*!8%/K!nRF1^&J*np&"aj3<5uUrrTP-fDPXM
+f)U`BrrTP-B`.l4ZiC*mrr3&,!8%/K!nRF1JcGECJ,~>
+JcGTH!jhsZr;QiM!/n/_!mCWEq>UN'!8%/K!nRF1^&J0#;eZ#c!<CaNrrTP-fDPXMf)U`Crr\0>
+VsO?]")%Z7iVriYZiJ_UrrUdPMn&chbQ%Xer;Qi*!8%/K!nRF1^&J*np&"aj3<5uUrrTP-fDPXM
+f)U`BrrTP-B`.l4ZiC*mrr3&,!8%/K!nRF1JcGECJ,~>
+JcGQG!E3\0rrHe3Z2Xp5!!(XHrrH&3r;Qe2;nW,1B_MK,m/?qb;eZ+/!GGEErrHfWr;Ql+!!'D(
+rrH&3r;Qe2;n)c/ZiC*(qu6[qB`.l2BN)SD!R+L?rrRKH;u?Rq;eZ+/!GGEDrrQ+!fDYaL!!)!U
+rrH&3r;Qe2;h=u@s*t~>
+JcGQG!E3\0rrHe3Z2Xp5!!(XHrrH&3r;Qe2;nW,1B_MK,m/?qb;eZ+/!GGEErrHfWr;Ql+!!'D(
+rrH&3r;Qe2;n)c/ZiC*(qu6[qB`.l2BN)SD!R+L?rrRKH;u?Rq;eZ+/!GGEDrrQ+!fDYaL!!)!U
+rrH&3r;Qe2;h=u@s*t~>
+JcGQG!E3\0rrHe3Z2Xp5!!(XHrrH&3r;Qe2;nW,1B_MK,m/?qb;eZ+/!GGEErrHfWr;Ql+!!'D(
+rrH&3r;Qe2;n)c/ZiC*(qu6[qB`.l2BN)SD!R+L?rrRKH;u?Rq;eZ+/!GGEDrrQ+!fDYaL!!)!U
+rrH&3r;Qe2;h=u@s*t~>
+JcGQG#iRdWfDjH93T7@FpAk-k#iRdWfDjH93T7[O!6k-:r;R&]3G@%Ef4[2']`/<)BP=csbaAGk
+bkqDGiAkT's4:pEiOT!a!!)!Wrs7RDB\3:9BK>%`rs5M_[*6a-!/p4@rs7RDB\3:9BK>%`rs7sO
+!1D'<BK=<6rs7RDB\3:9BK>%&s7H>A~>
+JcGQG#iRdWfDjH93T7@FpAk-k#iRdWfDjH93T7[O!6k-:r;R&]3G@%Ef4[2']`/<)BP=csbaAGk
+bkqDGiAkT's4:pEiOT!a!!)!Wrs7RDB\3:9BK>%`rs5M_[*6a-!/p4@rs7RDB\3:9BK>%`rs7sO
+!1D'<BK=<6rs7RDB\3:9BK>%&s7H>A~>
+JcGQG#iRdWfDjH93T7@FpAk-k#iRdWfDjH93T7[O!6k-:r;R&]3G@%Ef4[2']`/<)BP=csbaAGk
+bkqDGiAkT's4:pEiOT!a!!)!Wrs7RDB\3:9BK>%`rs5M_[*6a-!/p4@rs7RDB\3:9BK>%`rs7sO
+!1D'<BK=<6rs7RDB\3:9BK>%&s7H>A~>
+JcGKE"P:Ge^t5:["P:Ge^t5Ob"P:Ge^t6*r"mj%3VngpYrrgrhVngo`rrgrhVngoorrr)2[&;.7
+p\tBJ^o,!"\,QT_^o+Qkp\tBJ^o,!"JcG<@J,~>
+JcGKE"P:Ge^t5:["P:Ge^t5Ob"P:Ge^t6*r"mj%3VngpYrrgrhVngo`rrgrhVngoorrr)2[&;.7
+p\tBJ^o,!"\,QT_^o+Qkp\tBJ^o,!"JcG<@J,~>
+JcGKE"P:Ge^t5:["P:Ge^t5Ob"P:Ge^t6*r"mj%3VngpYrrgrhVngo`rrgrhVngoorrr)2[&;.7
+p\tBJ^o,!"\,QT_^o+Qkp\tBJ^o,!"JcG<@J,~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcF=$rp91T!TED9rrM*FJcC<$JcGTHJ,~>
+JcC<$JcF=$rp91T!TED9rrM*FJcC<$JcGTHJ,~>
+JcC<$JcF=$rp91T!TED9rrM*FJcC<$JcGTHJ,~>
+JcC<$df0=+o`,#Nba/;-!!%rLrrD$V!;6?liV`b-s+13$s8)bG~>
+JcC<$df0=+o`,#Nba/;-!!%rLrrD$V!;6?liV`b-s+13$s8)bG~>
+JcC<$df0=+o`,#Nba/;-!!%rLrrD$V!;6?liV`b-s+13$s8)bG~>
+JcC<$df0OEbfktF!)rg>"LMhBB^D,d"O+Y[!/pLL"SL!:!!)]l"SL!:!!%TMJcC<$qYu'~>
+JcC<$df0OEbfktF!)rg>"LMhBB^D,d"O+Y[!/pLL"SL!:!!)]l"SL!:!!%TMJcC<$qYu'~>
+JcC<$df0OEbfktF!)rg>"LMhBB^D,d"O+Y[!/pLL"SL!:!!)]l"SL!:!!%TMJcC<$qYu'~>
+JcC<$ci4*k!!%rRrr\Yh!6gf0!fI&:nc/Uho)J^iV>gP>JcC<$fDg@~>
+JcC<$ci4*k!!%rRrr\Yh!6gf0!fI&:nc/Uho)J^iV>gP>JcC<$fDg@~>
+JcC<$ci4*k!!%rRrr\Yh!6gf0!fI&:nc/Uho)J^iV>gP>JcC<$fDg@~>
+JcC<$ci4*k!!%rQrrZ1"!;2`Z!fI&:nc/Uho)J^iV>gORJcC<$fDg@~>
+JcC<$ci4*k!!%rQrrZ1"!;2`Z!fI&:nc/Uho)J^iV>gORJcC<$fDg@~>
+JcC<$ci4*k!!%rQrrZ1"!;2`Z!fI&:nc/Uho)J^iV>gORJcC<$fDg@~>
+JcC<$ci4*k!!%rQrr\/Z!5P!%!fI&:nc/Uho)J^iV>gMqJcC<$fDg@~>
+JcC<$ci4*k!!%rQrr\/Z!5P!%!fI&:nc/Uho)J^iV>gMqJcC<$fDg@~>
+JcC<$ci4*k!!%rQrr\/Z!5P!%!fI&:nc/Uho)J^iV>gMqJcC<$fDg@~>
+JcC<$ci4*k!!%rQrr\/Z!48-n!fI&:nc/Uho)J^iVZ-\U!.k0$s4@:$~>
+JcC<$ci4*k!!%rQrr\/Z!48-n!fI&:nc/Uho)J^iVZ-\U!.k0$s4@:$~>
+JcC<$ci4*k!!%rQrr\/Z!48-n!fI&:nc/Uho)J^iVZ-\U!.k0$s4@:$~>
+JcC<$ci4*k!!%rQrr\/Z!2l4a!fI&:nc/Uho)J^iVZ-[T!.k0$s4@:$~>
+JcC<$ci4*k!!%rQrr\/Z!2l4a!fI&:nc/Uho)J^iVZ-[T!.k0$s4@:$~>
+JcC<$ci4*k!!%rQrr\/Z!2l4a!fI&:nc/Uho)J^iVZ-[T!.k0$s4@:$~>
+JcC<$ci4*k!!%rQrsrcC!:9acf?C/:s8U<M_"IX*#2tJdMgC<?q#:ESMgGA\!5SI2#/F/qMgD;o
+rVlrlVgA?#!Pe^6rrVkkHN&g'^]=93#/F/qMgD;oq>U`EVi.Iss,-l8nc/Uhs8N5/Mi4M"q>^Hp
+qYpcYMgC;-MrFL3!9*p8#3#U@Mi1NmpAYKOiMX'_s3.jJ_"II%#2tJdMgC<?qu6`jVgA?#!Pe^7
+rr_5<!!)uAr;QikVgA?#!Pe\ds+146s*t~>
+JcC<$ci4*k!!%rQrsrcC!:9acf?C/:s8U<M_"IX*#2tJdMgC<?q#:ESMgGA\!5SI2#/F/qMgD;o
+rVlrlVgA?#!Pe^6rrVkkHN&g'^]=93#/F/qMgD;oq>U`EVi.Iss,-l8nc/Uhs8N5/Mi4M"q>^Hp
+qYpcYMgC;-MrFL3!9*p8#3#U@Mi1NmpAYKOiMX'_s3.jJ_"II%#2tJdMgC<?qu6`jVgA?#!Pe^7
+rr_5<!!)uAr;QikVgA?#!Pe\ds+146s*t~>
+JcC<$ci4*k!!%rQrsrcC!:9acf?C/:s8U<M_"IX*#2tJdMgC<?q#:ESMgGA\!5SI2#/F/qMgD;o
+rVlrlVgA?#!Pe^6rrVkkHN&g'^]=93#/F/qMgD;oq>U`EVi.Iss,-l8nc/Uhs8N5/Mi4M"q>^Hp
+qYpcYMgC;-MrFL3!9*p8#3#U@Mi1NmpAYKOiMX'_s3.jJ_"II%#2tJdMgC<?qu6`jVgA?#!Pe^7
+rr_5<!!)uAr;QikVgA?#!Pe\ds+146s*t~>
+JcC<$ci4*k!!%rRrs%E^!,2E4iVif]MuQ`"VZ9ZorrTP-fDbdOf)W2SrrTP-HN!jE;mcK&#A=+h
+s8V$X;uQ^s;mcQ(!pfmerVlms[/U(,li7%`rs*3;fDkm0!)rao#u^iJs5A9^MZA\*s8N'(s&7/A
+s/,jpqZ$Qqqu6`)!8%5M!nRFZqu7&2!8%8;!.%TDrrAtkrrD$V!!iO&bl@^$!2oYm!jhsZrr3&O
+!4;\(!E6B)rrq`h!<<(sq#L?m!E6B)rrVNe!.k0$s60K5~>
+JcC<$ci4*k!!%rRrs%E^!,2E4iVif]MuQ`"VZ9ZorrTP-fDbdOf)W2SrrTP-HN!jE;mcK&#A=+h
+s8V$X;uQ^s;mcQ(!pfmerVlms[/U(,li7%`rs*3;fDkm0!)rao#u^iJs5A9^MZA\*s8N'(s&7/A
+s/,jpqZ$Qqqu6`)!8%5M!nRFZqu7&2!8%8;!.%TDrrAtkrrD$V!!iO&bl@^$!2oYm!jhsZrr3&O
+!4;\(!E6B)rrq`h!<<(sq#L?m!E6B)rrVNe!.k0$s60K5~>
+JcC<$ci4*k!!%rRrs%E^!,2E4iVif]MuQ`"VZ9ZorrTP-fDbdOf)W2SrrTP-HN!jE;mcK&#A=+h
+s8V$X;uQ^s;mcQ(!pfmerVlms[/U(,li7%`rs*3;fDkm0!)rao#u^iJs5A9^MZA\*s8N'(s&7/A
+s/,jpqZ$Qqqu6`)!8%5M!nRFZqu7&2!8%8;!.%TDrrAtkrrD$V!!iO&bl@^$!2oYm!jhsZrr3&O
+!4;\(!E6B)rrq`h!<<(sq#L?m!E6B)rrVNe!.k0$s60K5~>
+JcC<$ci4*k!!%rSrrh\7!,1`trs7Q`Mi5CNMZ<bVrrUCEbl%JBbQ,$JrrV-ZHN!jF;ZHgrrrS)Y
+bl.PGVZ=+(s,24$rrKn8rr3"WHMmdD^]=?5!fI'&rVlqs!4;_)"8,SkiVicYbQ%X$nc/Uh!E75@
+rrS)YMu3PS!;uiubQ,lbrrUCE[/L"+bQ,HXrs$7=MuWgam.LA]o`+tjbl.PCMZA\4rrUCEbl%JB
+bQ,$LrrJ%(r;Qf5!;uls!;ZWqMgG=$!Pe\ds+146s*t~>
+JcC<$ci4*k!!%rSrrh\7!,1`trs7Q`Mi5CNMZ<bVrrUCEbl%JBbQ,$JrrV-ZHN!jF;ZHgrrrS)Y
+bl.PGVZ=+(s,24$rrKn8rr3"WHMmdD^]=?5!fI'&rVlqs!4;_)"8,SkiVicYbQ%X$nc/Uh!E75@
+rrS)YMu3PS!;uiubQ,lbrrUCE[/L"+bQ,HXrs$7=MuWgam.LA]o`+tjbl.PCMZA\4rrUCEbl%JB
+bQ,$LrrJ%(r;Qf5!;uls!;ZWqMgG=$!Pe\ds+146s*t~>
+JcC<$ci4*k!!%rSrrh\7!,1`trs7Q`Mi5CNMZ<bVrrUCEbl%JBbQ,$JrrV-ZHN!jF;ZHgrrrS)Y
+bl.PGVZ=+(s,24$rrKn8rr3"WHMmdD^]=?5!fI'&rVlqs!4;_)"8,SkiVicYbQ%X$nc/Uh!E75@
+rrS)YMu3PS!;uiubQ,lbrrUCE[/L"+bQ,HXrs$7=MuWgam.LA]o`+tjbl.PCMZA\4rrUCEbl%JB
+bQ,$LrrJ%(r;Qf5!;uls!;ZWqMgG=$!Pe\ds+146s*t~>
+JcC<$ci4*k!!#%WMZZlXMrFO4$ii;$s8VGmfDkm;!.+MA!dXjRrVlpZ!8%2L!b_R4rr3&D!.+PB
+"Z]N]rr?a1rrMHdrr3!!B`.l2li@%b!mCXjqu6[W;uQ^tMZC-]rrRKHMt-iI!!)B_rrQ+![/Bt(
+!<)p!li;A.rrRKH[/U(,3<8FFrr_Tf!9*JJrr<&cr;Qll!!'D)rrVNeHM[XGH2t>Prr?a1rrMHd
+r;Zcsq>UHqB`.l2li;V:JcFs6J,~>
+JcC<$ci4*k!!#%WMZZlXMrFO4$ii;$s8VGmfDkm;!.+MA!dXjRrVlpZ!8%2L!b_R4rr3&D!.+PB
+"Z]N]rr?a1rrMHdrr3!!B`.l2li@%b!mCXjqu6[W;uQ^tMZC-]rrRKHMt-iI!!)B_rrQ+![/Bt(
+!<)p!li;A.rrRKH[/U(,3<8FFrr_Tf!9*JJrr<&cr;Qll!!'D)rrVNeHM[XGH2t>Prr?a1rrMHd
+r;Zcsq>UHqB`.l2li;V:JcFs6J,~>
+JcC<$ci4*k!!#%WMZZlXMrFO4$ii;$s8VGmfDkm;!.+MA!dXjRrVlpZ!8%2L!b_R4rr3&D!.+PB
+"Z]N]rr?a1rrMHdrr3!!B`.l2li@%b!mCXjqu6[W;uQ^tMZC-]rrRKHMt-iI!!)B_rrQ+![/Bt(
+!<)p!li;A.rrRKH[/U(,3<8FFrr_Tf!9*JJrr<&cr;Qll!!'D)rrVNeHM[XGH2t>Prr?a1rrMHd
+r;Zcsq>UHqB`.l2li;V:JcFs6J,~>
+JcC<$ci4*k!!%rIs8N'![/0e(H2sl>rrT(u;uZduZiC+'rrKLcrr;uu!/paS#)`KSrr<&Xr;Q`s
+rr;uu!9*kU!!*#urr<%Wqu6nZ!;6Blf)PgIrrS)YMt-iI!;c]sZiFe;s8N)trrRKHVu$DpVZ9Zp
+s8N)ss8N'!bjk`5!;c]sZiFe<rrRKHVu$DuVZ9Zqrr<&Xr;Q`sr;Zcsq>^Hp!9*kU!!%TMJcFs6
+J,~>
+JcC<$ci4*k!!%rIs8N'![/0e(H2sl>rrT(u;uZduZiC+'rrKLcrr;uu!/paS#)`KSrr<&Xr;Q`s
+rr;uu!9*kU!!*#urr<%Wqu6nZ!;6Blf)PgIrrS)YMt-iI!;c]sZiFe;s8N)trrRKHVu$DpVZ9Zp
+s8N)ss8N'!bjk`5!;c]sZiFe<rrRKHVu$DuVZ9Zqrr<&Xr;Q`sr;Zcsq>^Hp!9*kU!!%TMJcFs6
+J,~>
+JcC<$ci4*k!!%rIs8N'![/0e(H2sl>rrT(u;uZduZiC+'rrKLcrr;uu!/paS#)`KSrr<&Xr;Q`s
+rr;uu!9*kU!!*#urr<%Wqu6nZ!;6Blf)PgIrrS)YMt-iI!;c]sZiFe;s8N)trrRKHVu$DpVZ9Zp
+s8N)ss8N'!bjk`5!;c]sZiFe<rrRKHVu$DuVZ9Zqrr<&Xr;Q`sr;Zcsq>^Hp!9*kU!!%TMJcFs6
+J,~>
+JcC<$ci4*k!!%rIs8N'!m/$b^!!(7>rrUCE!<3!"MZ@Gbrr_Tf!6k??$&\f8s,-jWMp0EBrrn;\
+!/o(Fr;Qlc!!(7?rs+G^fDkl/!,26/!fI&:nc/UhqYpZV!!)]js8N)ts8N'!bkh>@bQ%YBs8N)s
+s8N'!bjk`5!;c]tbQ%Y9rr;uu!6k<>$HrJMs8RuW!/o(Fq>^Hpq>UVV!!%r$b^oeFs5j92~>
+JcC<$ci4*k!!%rIs8N'!m/$b^!!(7>rrUCE!<3!"MZ@Gbrr_Tf!6k??$&\f8s,-jWMp0EBrrn;\
+!/o(Fr;Qlc!!(7?rs+G^fDkl/!,26/!fI&:nc/UhqYpZV!!)]js8N)ts8N'!bkh>@bQ%YBs8N)s
+s8N'!bjk`5!;c]tbQ%Y9rr;uu!6k<>$HrJMs8RuW!/o(Fq>^Hpq>UVV!!%r$b^oeFs5j92~>
+JcC<$ci4*k!!%rIs8N'!m/$b^!!(7>rrUCE!<3!"MZ@Gbrr_Tf!6k??$&\f8s,-jWMp0EBrrn;\
+!/o(Fr;Qlc!!(7?rs+G^fDkl/!,26/!fI&:nc/UhqYpZV!!)]js8N)ts8N'!bkh>@bQ%YBs8N)s
+s8N'!bjk`5!;c]tbQ%Y9rr;uu!6k<>$HrJMs8RuW!/o(Fq>^Hpq>UVV!!%r$b^oeFs5j92~>
+JcC<$ci4*k!!%rIs8N)qrr_Tf!6k<>#g<8Km/R(c!/pUO"7-!fB`!\k;ZPeVs,6dT!2obp!/paT
+!2ohr"7-!fB`!\m;ZPeVrr<%WqYpVT!/pCIrrDlprr<&XrVultrr3)e!!(7>rs6gK!:9acH2uq'
+rr_3[!:97UrrDlprr<8^s8VEc!6k<>#0[&Im/R*Dqu?_pqu?Zrq#:>Pqu?_pJcC<$kPp&~>
+JcC<$ci4*k!!%rIs8N)qrr_Tf!6k<>#g<8Km/R(c!/pUO"7-!fB`!\k;ZPeVs,6dT!2obp!/paT
+!2ohr"7-!fB`!\m;ZPeVrr<%WqYpVT!/pCIrrDlprr<&XrVultrr3)e!!(7>rs6gK!:9acH2uq'
+rr_3[!:97UrrDlprr<8^s8VEc!6k<>#0[&Im/R*Dqu?_pqu?Zrq#:>Pqu?_pJcC<$kPp&~>
+JcC<$ci4*k!!%rIs8N)qrr_Tf!6k<>#g<8Km/R(c!/pUO"7-!fB`!\k;ZPeVs,6dT!2obp!/paT
+!2ohr"7-!fB`!\m;ZPeVrr<%WqYpVT!/pCIrrDlprr<&XrVultrr3)e!!(7>rs6gK!:9acH2uq'
+rr_3[!:97UrrDlprr<8^s8VEc!6k<>#0[&Im/R*Dqu?_pqu?Zrq#:>Pqu?_pJcC<$kPp&~>
+JcC<$ci4*k!!%rIs8N)qrr_3[!6k<>#g<8KiW&oX!/pUO"5s4[bk:u;iJWWn!!-d+rVlrXMi7Q7
+#&*]0i;`l%pAb-m!/p^R!fI&:nc/Uhq>^Hp!:9[arrE&u"5s4[bkh>FbQ%Y%s8VEcMuN_XMZCuj
+s8N)ps8N''m/R+E!!(7>rr^IF!9*qW!o]&qrVut4p&4pj!;HKpiJWWn!!-d+JcC<$l2Q8~>
+JcC<$ci4*k!!%rIs8N)qrr_3[!6k<>#g<8KiW&oX!/pUO"5s4[bk:u;iJWWn!!-d+rVlrXMi7Q7
+#&*]0i;`l%pAb-m!/p^R!fI&:nc/Uhq>^Hp!:9[arrE&u"5s4[bkh>FbQ%Y%s8VEcMuN_XMZCuj
+s8N)ps8N''m/R+E!!(7>rr^IF!9*qW!o]&qrVut4p&4pj!;HKpiJWWn!!-d+JcC<$l2Q8~>
+JcC<$ci4*k!!%rIs8N)qrr_3[!6k<>#g<8KiW&oX!/pUO"5s4[bk:u;iJWWn!!-d+rVlrXMi7Q7
+#&*]0i;`l%pAb-m!/p^R!fI&:nc/Uhq>^Hp!:9[arrE&u"5s4[bkh>FbQ%Y%s8VEcMuN_XMZCuj
+s8N)ps8N''m/R+E!!(7>rr^IF!9*qW!o]&qrVut4p&4pj!;HKpiJWWn!!-d+JcC<$l2Q8~>
+JcC<$ci4*k!!%rIs8N)qrr_Tf!6k<>#g<8Km/R(c!/pUO"7-!fbjk]8bQ%Y%q>U`E!!)!Xli7%0
+pAb-m!/p^R!fI&:nc/Uhq>^Hp!9*nVrrE&u"7-!fbkh>KbQ%Y0s8VFaBR7%DB\2_QrrDlprr<8^
+s8VEc!6k<>"3^`Fm/$_abQ%Y%rVultrVlkqq#:H?!!(u/s+147s*t~>
+JcC<$ci4*k!!%rIs8N)qrr_Tf!6k<>#g<8Km/R(c!/pUO"7-!fbjk]8bQ%Y%q>U`E!!)!Xli7%0
+pAb-m!/p^R!fI&:nc/Uhq>^Hp!9*nVrrE&u"7-!fbkh>KbQ%Y0s8VFaBR7%DB\2_QrrDlprr<8^
+s8VEc!6k<>"3^`Fm/$_abQ%Y%rVultrVlkqq#:H?!!(u/s+147s*t~>
+JcC<$ci4*k!!%rIs8N)qrr_Tf!6k<>#g<8Km/R(c!/pUO"7-!fbjk]8bQ%Y%q>U`E!!)!Xli7%0
+pAb-m!/p^R!fI&:nc/Uhq>^Hp!9*nVrrE&u"7-!fbkh>KbQ%Y0s8VFaBR7%DB\2_QrrDlprr<8^
+s8VEc!6k<>"3^`Fm/$_abQ%Y%rVultrVlkqq#:H?!!(u/s+147s*t~>
+JcC<$ci4*k!!%rIs8N)qrr_oo!6k<>#g<8Kp&G&M!.+A=rr<&7p\t3nqu6i,!2oks!;ld$ZiI$(
+rr<&7pAY2P!.+MA!fI&:nc/UhqYpZV!!)]js8N)urr_oo!6k<>#g<8Kp&G&[bl@[dmJm1dqYplG
+!!)]ls7H?lbkh>CbQ%Y9rrDrr!jhs*rVultrVlitrr2ruqu6`)!2kDJJcG!7J,~>
+JcC<$ci4*k!!%rIs8N)qrr_oo!6k<>#g<8Kp&G&M!.+A=rr<&7p\t3nqu6i,!2oks!;ld$ZiI$(
+rr<&7pAY2P!.+MA!fI&:nc/UhqYpZV!!)]js8N)urr_oo!6k<>#g<8Kp&G&[bl@[dmJm1dqYplG
+!!)]ls7H?lbkh>CbQ%Y9rrDrr!jhs*rVultrVlitrr2ruqu6`)!2kDJJcG!7J,~>
+JcC<$ci4*k!!%rIs8N)qrr_oo!6k<>#g<8Kp&G&M!.+A=rr<&7p\t3nqu6i,!2oks!;ld$ZiI$(
+rr<&7pAY2P!.+MA!fI&:nc/UhqYpZV!!)]js8N)urr_oo!6k<>#g<8Kp&G&[bl@[dmJm1dqYplG
+!!)]ls7H?lbkh>CbQ%Y9rrDrr!jhs*rVultrVlitrr2ruqu6`)!2kDJJcG!7J,~>
+JcC<$ci4*k!!%rIs8N)prrS)YMu*GTMZ@Girr_3[!;66h#3"qKs,-kjqYp]Wm/I(0qu6g"[/^.+
+bkqDE!4;e+MZ@Gers%HKs8V$X!;c]sMZA\*s8N)qrrS)YHMmgC!<)p!MZA\3rrS)YB`A#4MmVaK
+rrDoq!b_R[rVlqW!/p^R#)`Ips8N)Cqu6Zs[/L%)!<)ot!<3!!!6k??!<BKXs+147s*t~>
+JcC<$ci4*k!!%rIs8N)prrS)YMu*GTMZ@Girr_3[!;66h#3"qKs,-kjqYp]Wm/I(0qu6g"[/^.+
+bkqDE!4;e+MZ@Gers%HKs8V$X!;c]sMZA\*s8N)qrrS)YHMmgC!<)p!MZA\3rrS)YB`A#4MmVaK
+rrDoq!b_R[rVlqW!/p^R#)`Ips8N)Cqu6Zs[/L%)!<)ot!<3!!!6k??!<BKXs+147s*t~>
+JcC<$ci4*k!!%rIs8N)prrS)YMu*GTMZ@Girr_3[!;66h#3"qKs,-kjqYp]Wm/I(0qu6g"[/^.+
+bkqDE!4;e+MZ@Gers%HKs8V$X!;c]sMZA\*s8N)qrrS)YHMmgC!<)p!MZA\3rrS)YB`A#4MmVaK
+rrDoq!b_R[rVlqW!/p^R#)`Ips8N)Cqu6Zs[/L%)!<)ot!<3!!!6k??!<BKXs+147s*t~>
+JcC<$ci4*k!!%rIs8N)orrQj6m/6kcli7%PrVlqe!1E`a!IFG<rrS)YfDGRNHM.:<B`.l7li>90
+rr?a1rrVNebl7VDMZDB+rrIH=rr3%f!4;\("7-!fMt-iI!!%rTrr_3[!:9X`rrDus!b_T#r;Qlc
+!!)BbrrSTe[/A,Jm-t&T!!%rTrr^%:!:9X`!b_T#r;R#g!!)Bcrr?a1rrVNebl.PG;ZQ1as6Kab
+rrE+5r;Qib!6g#oJcG!7J,~>
+JcC<$ci4*k!!%rIs8N)orrQj6m/6kcli7%PrVlqe!1E`a!IFG<rrS)YfDGRNHM.:<B`.l7li>90
+rr?a1rrVNebl7VDMZDB+rrIH=rr3%f!4;\("7-!fMt-iI!!%rTrr_3[!:9X`rrDus!b_T#r;Qlc
+!!)BbrrSTe[/A,Jm-t&T!!%rTrr^%:!:9X`!b_T#r;R#g!!)Bcrr?a1rrVNebl.PG;ZQ1as6Kab
+rrE+5r;Qib!6g#oJcG!7J,~>
+JcC<$ci4*k!!%rIs8N)orrQj6m/6kcli7%PrVlqe!1E`a!IFG<rrS)YfDGRNHM.:<B`.l7li>90
+rr?a1rrVNebl7VDMZDB+rrIH=rr3%f!4;\("7-!fMt-iI!!%rTrr_3[!:9X`rrDus!b_T#r;Qlc
+!!)BbrrSTe[/A,Jm-t&T!!%rTrr^%:!:9X`!b_T#r;R#g!!)Bcrr?a1rrVNebl.PG;ZQ1as6Kab
+rrE+5r;Qib!6g#oJcG!7J,~>
+JcC<$ci4*F!!$^'rr_Tf!8%&H!pfo#r;Qh3!9*hT!`K*NrVlo*Vu?Vslr.Tqrs#j.s8N'!bl.PH
+ZiKImrr<&CrVlr+!:9^b!pij!r;Qf)Vu6Pr;ZPGJrrd"6!)r7TrrW8.HHc?f!`K*+r;Qlc!!(XL
+rrVNeB`.l3BE7#irrDE]!!%rIs8N'"HHc?frr<&+qu6`a!,2<1!b_Smrr;uu!6kEA!jhsorVm)"
+!4;e+[']i4rr<&CrVlr+!:5::JcG!7J,~>
+JcC<$ci4*F!!$^'rr_Tf!8%&H!pfo#r;Qh3!9*hT!`K*NrVlo*Vu?Vslr.Tqrs#j.s8N'!bl.PH
+ZiKImrr<&CrVlr+!:9^b!pij!r;Qf)Vu6Pr;ZPGJrrd"6!)r7TrrW8.HHc?f!`K*+r;Qlc!!(XL
+rrVNeB`.l3BE7#irrDE]!!%rIs8N'"HHc?frr<&+qu6`a!,2<1!b_Smrr;uu!6kEA!jhsorVm)"
+!4;e+[']i4rr<&CrVlr+!:5::JcG!7J,~>
+JcC<$ci4*F!!$^'rr_Tf!8%&H!pfo#r;Qh3!9*hT!`K*NrVlo*Vu?Vslr.Tqrs#j.s8N'!bl.PH
+ZiKImrr<&CrVlr+!:9^b!pij!r;Qf)Vu6Pr;ZPGJrrd"6!)r7TrrW8.HHc?f!`K*+r;Qlc!!(XL
+rrVNeB`.l3BE7#irrDE]!!%rIs8N'"HHc?frr<&+qu6`a!,2<1!b_Smrr;uu!6kEA!jhsorVm)"
+!4;e+[']i4rr<&CrVlr+!:5::JcG!7J,~>
+JcC<$df0=+q#CE%p\t6Pq>gBl#jc5<[*5mjB^GTq#OIiY[*5n8RJ[!hltC(>bd<:rrr36(Mi4"I
+bbo.@rr36(Mi4"Ibbo.@r;R#gBP=cs[#:@Lrs7tZ!49tWMp.+Y!!%rKrs;Wjm#.dcb\1\KrVllV
+qZ$W_rr38jBP=csZtO.>r;QfL;u;LP!!(77s8N'(m#.dcbW0@qq>U`eBP=csZtO.>rVm-'Mi4"I
+bbo.@r;QreBE5E`B`7r:!/lc'bfltum",1fs60K5~>
+JcC<$df0=+q#CE%p\t6Pq>gBl#jc5<[*5mjB^GTq#OIiY[*5n8RJ[!hltC(>bd<:rrr36(Mi4"I
+bbo.@rr36(Mi4"Ibbo.@r;R#gBP=cs[#:@Lrs7tZ!49tWMp.+Y!!%rKrs;Wjm#.dcb\1\KrVllV
+qZ$W_rr38jBP=csZtO.>r;QfL;u;LP!!(77s8N'(m#.dcbW0@qq>U`eBP=csZtO.>rVm-'Mi4"I
+bbo.@r;QreBE5E`B`7r:!/lc'bfltum",1fs60K5~>
+JcC<$df0=+q#CE%p\t6Pq>gBl#jc5<[*5mjB^GTq#OIiY[*5n8RJ[!hltC(>bd<:rrr36(Mi4"I
+bbo.@rr36(Mi4"Ibbo.@r;R#gBP=cs[#:@Lrs7tZ!49tWMp.+Y!!%rKrs;Wjm#.dcb\1\KrVllV
+qZ$W_rr38jBP=csZtO.>r;QfL;u;LP!!(77s8N'(m#.dcbW0@qq>U`eBP=csZtO.>rVm-'Mi4"I
+bbo.@r;QreBE5E`B`7r:!/lc'bfltum",1fs60K5~>
+JcC<$XT&@giU$4:!pnn=pAY3\iV!-K!9*qW!o`M=r;QcUrr3&Ym.L,Q!pnn=pAY9^iV!6Nrp9%P
+"82$>p$Mb\m,@=-rrTP-bkh>@ZiC*ts8N*!rr_W3bk:W.!pnn4qYpQSrr3&Ym.L,Q!USeCrrD$W
+rrV0Gon!-os5s?3~>
+JcC<$XT&@giU$4:!pnn=pAY3\iV!-K!9*qW!o`M=r;QcUrr3&Ym.L,Q!pnn=pAY9^iV!6Nrp9%P
+"82$>p$Mb\m,@=-rrTP-bkh>@ZiC*ts8N*!rr_W3bk:W.!pnn4qYpQSrr3&Ym.L,Q!USeCrrD$W
+rrV0Gon!-os5s?3~>
+JcC<$XT&@giU$4:!pnn=pAY3\iV!-K!9*qW!o`M=r;QcUrr3&Ym.L,Q!pnn=pAY9^iV!6Nrp9%P
+"82$>p$Mb\m,@=-rrTP-bkh>@ZiC*ts8N*!rr_W3bk:W.!pnn4qYpQSrr3&Ym.L,Q!USeCrrD$W
+rrV0Gon!-os5s?3~>
+JcC<$JcD>A!pfncq#:D/!8$lCrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfncq#:D/!8$lCrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfncq#:D/!8$lCrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfoFq#:E&!9*SMrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfoFq#:E&!9*SMrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfoFq#:E&!9*SMrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfnIq#:Co!9*SMrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfnIq#:Co!9*SMrr@WMJcDbMJ,~>
+JcC<$JcD>A!pfnIq#:Co!9*SMrr@WMJcDbMJ,~>
+JcC<$JcD;@!mFT$qYpVT!4;J"#PH<V!!&q@m",1fs/l<O~>
+JcC<$JcD;@!mFT$qYpVT!4;J"#PH<V!!&q@m",1fs/l<O~>
+JcC<$JcD;@!mFT$qYpVT!4;J"#PH<V!!&q@m",1fs/l<O~>
+JcC<$JcD8?"6!ol[/U(-Zr:Yip&>$NqZ$W?JcC<$XoEn~>
+JcC<$JcD8?"6!ol[/U(-Zr:Yip&>$NqZ$W?JcC<$XoEn~>
+JcC<$JcD8?"6!ol[/U(-Zr:Yip&>$NqZ$W?JcC<$XoEn~>
+JcC<$JcD2=#3!A)VmO7uJcC<$QiDR~>
+JcC<$JcD2=#3!A)VmO7uJcC<$QiDR~>
+JcC<$JcD2=#3!A)VmO7uJcC<$QiDR~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+JcC<$JcC<$JcC<$WW.J~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/running-times/README.md b/running-times/README.md
deleted file mode 100644
index 47994b3..0000000
--- a/running-times/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-To reproduce the extraction-running-time evaluation, do the following:
-
-- Install the requierements in a virtualenv:
-
-        sudo pip install virtualenv; virtualenv ENV; source ENV/bin/activate
-        sudo pip install lxml, feedparser, goose-extractor, python-readability, boilerpipe
-
-- Get the version of the BlogForever Crawler used for the evaluation:
-
-        git clone git@github.com:BlogForever/crawler.git
-        git checkout 06a1fd89554db518c6348aba3c1709d85cce2c42
-
-- Merge it with running-times/crawler:
-
-        rsync -aplx --link-dest=crawler/ blogforever-crawler-publication/running-times/crawler/ merged/
-
-- Run the evaluation:
-
-        sudo python -m bibcrawl/run
diff --git a/running-times/crawler/bibcrawl/pipelines/timeextrator.py b/running-times/crawler/bibcrawl/pipelines/timeextrator.py
deleted file mode 100644
index a54108c..0000000
--- a/running-times/crawler/bibcrawl/pipelines/timeextrator.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# """TimeExtrator"""
-
-# from bibcrawl.utils.ohpython import *
-# from bibcrawl.utils.parsing import parseHTML
-# from bibcrawl.utils.stringsimilarity import cleanTags
-# from boilerpipe.extract import Extractor
-# from goose import Goose
-# from readability.readability import Document
-# from scrapy import log
-# from time import time
-# import gc
-# import sys
-
-# class TimeExtrator(object):
-#   def process_item(self, item, spider):
-#     gcenabled = gc.isenabled()
-#     gc.disable()
-#     try:
-#       contentExtractor = lambda _: spider.contentExtractor(parseHTML(_))
-#       boilerpipeExtractor = lambda _: Extractor(html=_).getText()
-#       gooseExtractor = lambda _: Goose().extract(raw_html=_).cleaned_text
-#       readabilityExtractor = lambda _: cleanTags(Document(_).summary())
-
-#       # CE, BP, GO, RE
-#       log.msg("{} {} {} {}".format(
-#         timeMeThis(partial(contentExtractor,     item.rawHtml)),
-#         timeMeThis(partial(boilerpipeExtractor,  item.rawHtml)),
-#         timeMeThis(partial(gooseExtractor,       item.rawHtml)),
-#         timeMeThis(partial(readabilityExtractor, item.rawHtml)),
-#       ))
-#     finally:
-#       if gcenabled:
-#         gc.enable()
-
-# def timeMeThis(e):
-#   t0 = time()
-#   e()
-#   return time() - t0
-
-"""TimeExtrator"""
-
-from bibcrawl.utils.ohpython import *
-from bibcrawl.utils.parsing import parseHTML
-from bibcrawl.utils.stringsimilarity import cleanTags
-from boilerpipe.extract import Extractor
-from goose import Goose
-from readability.readability import Document
-from scrapy import log
-from time import time
-import gc
-import sys
-from numpy import median, mean, std
-
-class TimeExtrator(object):
-  def process_item(self, item, spider):
-    gcenabled = gc.isenabled()
-    gc.disable()
-    try:
-      contentExtractor = lambda _: spider.contentExtractor(parseHTML(_))
-      boilerpipeExtractor = lambda _: Extractor(html=_).getText()
-      gooseExtractor = lambda _: Goose().extract(raw_html=_).cleaned_text
-      readabilityExtractor = lambda _: cleanTags(Document(_).summary())
-
-      # CE, BP, GO, RE
-      ntimes = range(11)
-      contents = map(
-        lambda _: timeMeThis(partial(contentExtractor, item.rawHtml)),
-        ntimes)
-      boilerpipes = map(
-        lambda _: timeMeThis(partial(boilerpipeExtractor, item.rawHtml)),
-        ntimes)
-      gooses = map(
-        lambda _: timeMeThis(partial(gooseExtractor, item.rawHtml)),
-        ntimes)
-      readabilitys = map(
-        lambda _: timeMeThis(partial(readabilityExtractor, item.rawHtml)),
-        ntimes)
-
-      log.msg("{} {} {} {} {} {} {} {}".format(
-        mean(contents), std(contents),
-        mean(boilerpipes), std(boilerpipes),
-        mean(gooses), std(gooses),
-        mean(readabilitys), std(readabilitys)
-      ))
-    finally:
-      if gcenabled:
-        gc.enable()
-
-def timeMeThis(e):
-  t0 = time()
-  e()
-  return time() - t0
diff --git a/running-times/crawler/bibcrawl/run.py b/running-times/crawler/bibcrawl/run.py
deleted file mode 100644
index b84a7d5..0000000
--- a/running-times/crawler/bibcrawl/run.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""main"""
-
-from bibcrawl.spiders.newcrawl import NewCrawl
-from bibcrawl.spiders.updatecrawl import UpdateCrawl
-from bibcrawl.spiders.evalcrawl import EvalCrawl
-from scrapy import signals
-from scrapy.crawler import Crawler
-from scrapy.settings import Settings
-from twisted.internet import reactor
-from datetime import date, timedelta, datetime
-from scrapy import log
-import sys
-
-def stop_reactor():
-  """Stops the twistedreactor."""
-  reactor.stop()
-
-def startSpider(spider):
-  pass
-
-def main():
-  """Crawler entry point."""
-  settings = Settings({
-      "ITEM_PIPELINES": [
-          # 'bibcrawl.pipelines.renderjavascript.RenderJavascript',
-          'bibcrawl.pipelines.processhtml.ProcessHtml',
-          'bibcrawl.pipelines.timeextrator.TimeExtrator',
-          # 'bibcrawl.pipelines.downloadimages.DownloadImages',
-          # 'bibcrawl.pipelines.downloadfeeds.DownloadFeeds',
-          # 'bibcrawl.pipelines.extractcomments.ExtractComments',
-          # 'bibcrawl.pipelines.backendpropagate.BackendPropagate',
-          # 'bibcrawl.pipelines.outpropagate.OutPropagate',
-      ],
-      "HTTPCACHE_POLICY": "scrapy.contrib.httpcache.DummyPolicy",
-      "HTTPCACHE_STORAGE": "scrapy.contrib.httpcache.FilesystemCacheStorage",
-      "HTTPCACHE_ENABLED": True,
-      "FILES_STORE": "img",
-
-      # "CONCURRENT_ITEMS": 1,
-      "STATS_DUMP": False,
-      "LOG_LEVEL": "DEBUG",
-      # "CONCURRENT_REQUESTS": 1,
-      # "CONCURRENT_REQUESTS_PER_DOMAIN": 1,
-      # "CONCURRENT_REQUESTS_PER_IP": 1
-  })
-
-  # Need test cases for this one: letitcrash.com
-  # techcrunch.com
-  # keikolynn.com
-
-  # spider = NewCrawl(domain="korben.info", maxDownloads=500)
-  # spider = UpdateCrawl(
-  #   startAt="http://korben.info/feed",
-  #   domain="korben.info",
-  #   since=datetime.now() - timedelta(days=1))
-
-  # spider = EvalCrawl(startAt="http://" + sys.argv[1])
-  spider = NewCrawl(startAt="http://www.quantumdiaries.org/", maxDownloads=5000)
-
-  crawler = Crawler(settings)
-
-  crawler.signals.connect(reactor.stop, signals.spider_closed)
-  crawler.signals.connect(reactor.getThreadPool().stop, signals.spider_closed)
-  crawler.configure()
-  crawler.crawl(spider)
-  crawler.start()
-  log.start()
-  reactor.run()
-
-if __name__ == "__main__":
-  main()
diff --git a/tex/runningtimeFigure.tex b/runningtimeFigure.tex
similarity index 80%
rename from tex/runningtimeFigure.tex
rename to runningtimeFigure.tex
index 32e29d1..25bd85b 100644
--- a/tex/runningtimeFigure.tex
+++ b/runningtimeFigure.tex
@@ -1,17 +1,20 @@
-\begin{figure}[t]
+\begin{figure}[ht]
+  \capstart
+  \refstepcounter{figure}
+  \label{runningtime}
   \vspace{-12pt}
   \hspace{-34pt}
   \begin{gnuplot}% nop
     set terminal epslatex color
-    set size 0.75
+    set size 0.76
     set size ratio 0.618

+    set title 'Figure \arabic{figure}: Running time of articles extraction.'
     set ylabel 'Cumulated running time (sec.)' offset 1.3
     set xlabel 'Processed blog posts'

     set yrange [0:44]
     set xrange [0:65]
-    set key invert

     set arrow from 15,graph(0,0) to 15,graph(1,1) nohead linecolor rgb 'grey' linetype 2

@@ -21,7 +24,5 @@
     '' u 0:2 smooth cumulative w lines linewidth 4 title 'Boilerpipe',\
     '' u 0:3 smooth cumulative w lines linewidth 4 title 'Goose'
   \end{gnuplot}
-  \vspace{-18pt}
-  \caption{Running time of article extraction.}
-  \label{runningtime}
+  \vspace{-12pt}
 \end{figure}
diff --git a/slides/1-into.md b/slides/1-into.md
deleted file mode 100644
index fa1313b..0000000
--- a/slides/1-into.md
+++ /dev/null
@@ -1,87 +0,0 @@
-% BlogForever Crawler
-% Olivier Blanvillain
-% JANUARY 29, 2014
-
-<h2>
-#. My internship
-
-#. I didn't like Python
-
-#. The crawler
-</h2>
-
-My internship
-=============
-
-----------------------------------------------------------
-
-## My background
-
-- Mostly Java and Scala
-
-- Mathematically Inclined
-
-- I like compilers
-
-- Recent interest in functional programming
-
-```bash
-            $ cd workspace/crawler/src/
-            $ grep -r 'for .* in' | wc -l
-            13
-            $ grep -r 'lambda' | wc -l
-            95
-```
-
-----------------------------------------------------------
-
-## It started like this...
-
-![](img/great.jpg)
-
-(^ This is Nikos)
-
-<!--
-  goal -> text editor -> get started
-  great effect
-  highly motivated, feels like mine
--->
-
-----------------------------------------------------------
-
-## And not like this:
-
-![](img/bro.png)
-
-<!--
-  online on bf.eu
-  not: started in 2011
-  not: close source version
--->
-
-----------------------------------------------------------
-
-## BTW, here is how it is:
-
-![](img/brolol.png)
-
-<!--
-  no api
-  twitter closed
-  real time with invenio?
-  microformat/semantic: .5%
-  links are all URLs
-
-  crawler's job
--->
-
-----------------------------------------------------------
-
-## Outline:
-
-- Three months of developement
-
-- Three months of documentation
-
-- I learned Python somewhere in the process
-
diff --git a/slides/2-ididntlikepython.md b/slides/2-ididntlikepython.md
deleted file mode 100644
index 85eacd0..0000000
--- a/slides/2-ididntlikepython.md
+++ /dev/null
@@ -1,146 +0,0 @@
-I didn't like Python
-====================
-
-----------------------------------------------------------
-
-### What I'm not going to talk about:
-
-- sdtlib documentation
-
-- pip, virtualenv
-
-- byte vs unicode strings
-
-----------------------------------------------------------
-
-### Things that bug me:
-
-- No interfaces
-  ↪ \ *you better like reading source code...*
-
-- No type-checking
-
-- Exceptions as control flow
-  ↪ \ *you better like stack traces...*
-
-- Immutability?
-
-----------------------------------------------------------
-
-## Interfaces
-
-### *"We're all consenting adults here"*
-
-----------------------------------------------------------
-
-# Nope.
-
-----------------------------------------------------------
-
-```python
-      def parseHTML(page):
-        """Parses a page to an html tree.
-
-        @type  page: string
-        @param page: the page to parse
-        @rtype: xml.etree.ElementTree.Element
-        @return: the root of the html tree
-        """
-```
-  . . .
-
-```python
-        try:
-          return lxml.html.fromstring(page)
-        except (LookupError,
-                UnicodeDecodeError,
-                lxml.etree.XMLSyntaxError,
-                lxml.etree.ParserError): # TBC
-          try:
-            return soupparser.fromstring(page)
-          except Exception:
-            return lxml.etree.Element("html")
-```
-
-----------------------------------------------------------
-
-### lxml documentation:
-
-![](img/lxml.png)
-
-----------------------------------------------------------
-
-## Type-checking
-
-### *"If it looks like a duck and quacks like*
-
-### *a duck, then it must be a duck"*
-
-----------------------------------------------------------
-
-![](img/sc.jpg)
-
-```python
-    max([ True, 2, [3, 4], {5: 6, 7: 8}, "nine", None ])
-```
-
-----------------------------------------------------------
-
-```python
-def similarity(string1, string2, bufferDict=None):
-  """Computes the similarity between two strings."""
-```
-. . .
-
-```python
-def extractFirst(page, query):
-  """Executes a XPath query and return the first result."""
-```
-. . .
-
-```python
-def bestXPath(contentZipPages):
-  """Given a list of content/page, computes the best XPath
-  query that would return the content on each page.
-  @type  contentZipPages: list of (string, etree.ElementTree)
-  @rtype: string"""
-```
-. . .
-
-```python
-  queries = ("/some/path", "/another/path", ...)
-  dct = dict()
-  ratio = lambda content, page, query: (
-      similarity(content, extractFirst(page, query)), dct)
-```
-. . .
-
-```python
-  topQueriesHead = nlargest(
-      10, queries, key=partial(ratio, *contentZipPages[0]))
-```
-```python
-  topQueries = map(lambda (c, p):
-      max(topQueriesHead, key=partial(ratio, c, p)),
-      contentZipPages)
-```
-```python
-  return max(set(topQueries), key=topQueries.count)
-```
-
-----------------------------------------------------------
-
-### Do you know the difference between
-### 500 and 200?
-
-```python
-
-                  In [1]: 200 is 100 + 100
-                  Out[1]: True
-
-                  In [2]: 500 is 250 + 250
-                  Out[2]: False
-```
-
-----------------------------------------------------------
-
diff --git a/slides/3-thecrawler.md b/slides/3-thecrawler.md
deleted file mode 100644
index 2fb4ba4..0000000
--- a/slides/3-thecrawler.md
+++ /dev/null
@@ -1,93 +0,0 @@
-The Crawler
-===========
-
-----------------------------------------------------------
-
-![](img/cd.png)
-
-----------------------------------------------------------
-
-![](img/grail.png)
-
-----------------------------------------------------------
-
-```xml
-<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
-<channel>
-  <title>Quantum Diaries</title>
-  <atom:link href="http://www.quantumdiaries.org/feed/" rel="self" type="application/rss+xml" />
-  <link>http://www.quantumdiaries.org</link>
-  <description>Thoughts on work and life from particle physicists from around the world.</description>
-  <lastBuildDate>Tue, 28 Jan 2014 14:21:48 +0000</lastBuildDate>
-  <language>en-US</language>
-    <sy:updatePeriod>hourly</sy:updatePeriod>
-    <sy:updateFrequency>1</sy:updateFrequency>
-  <generator>http://wordpress.org/?v=3.7.1</generator>
-  <item>
-    <title>Anti-beam me up, Scotty!</title>
-    <link>http://www.quantumdiaries.org/2014/01/28/anti-beam-me-up-scotty/</link>
-    <comments>http://www.quantumdiaries.org/2014/01/28/anti-beam-me-up-scotty/#comments</comments>
-    <pubDate>Tue, 28 Jan 2014 13:46:08 +0000</pubDate>
-    <dc:creator><![CDATA[CERN]]></dc:creator>
-    <guid isPermaLink="false">http://www.quantumdiaries.org/?p=32171</guid>
-    <description><![CDATA[While the CERN accelerator complex was being revamped in 2013, the ASACUSA experiment took time to carefully review the data taken in 2012 at the Antiproton Decelerator (AD) facility. This painstaking work paid off and they just announced in Nature having produced the first ever beam of antihydrogen atoms. In laboratory experiments like the ones [&#8230;]]]></description>
-    <content:encoded><![CDATA[<p>While the <a href="http://public.web.cern.ch/">CERN</a> <a href="http://www.quantumdiaries.org/2014/01/15/a-whole-universe-to-be-discovered/">accelerator complex was being revamped</a> in 2013, the <a href="http://home.web.cern.ch/about/experiments/asacusa">ASACUSA</a> experiment took time to carefully review the data taken in 2012 at the <a href="http://home.web.cern.ch/about/accelerators/antiproton-decelerator">Antiproton Decelerator</a> (AD) facility. This painstaking work paid off and they just <a href="http://www.nature.com/ncomms/2014/140121/ncomms4089/full/ncomms4089.html">announced in <i>Nature</i></a> having produced the first ever beam of antihydrogen atoms.</p>
-    ...
-```
-
-----------------------------------------------------------
-
-```xml
-<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
-<channel>
-  <title>Quantum Diaries</title>
-  <atom:link href="http://www.quantumdiaries.org/feed/" rel="self" type="application/rss+xml" />
-  <link>http://www.quantumdiaries.org</link>
-  <description>Thoughts on work and life from particle physicists from around the world.</description>
-  <lastBuildDate>Tue, 28 Jan 2014 14:21:48 +0000</lastBuildDate>
-  <language>en-US</language>
-    <sy:updatePeriod>hourly</sy:updatePeriod>
-    <sy:updateFrequency>1</sy:updateFrequency>
-  <generator>http://wordpress.org/?v=3.7.1</generator>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-  <item>...</item> <item>...</item>
-</channel>
-</rss>
-```
-
-----------------------------------------------------------
-
-![](img/div.png)
-
-----------------------------------------------------------
-
-![](img/divpa.png)
-
-----------------------------------------------------------
-
-## The algorithm:
-
-1. Find all possible *XPaths* for a given blog
-
-2. Obtain *training data* from the web-feed
-
-3. Execute all *XPaths* on the ~15 latest posts
-
-4. Find the *XPaths* returning results most
-   similar to the training data
-
-----------------------------------------------------------
-
-## Scrapy
-
-![](img/scrapy_architecture.png)
-
-----------------------------------------------------------
-
-# Questions?
diff --git a/slides/img/bro.png b/slides/img/bro.png
deleted file mode 100644
index da0fa4b..0000000
Binary files a/slides/img/bro.png and /dev/null differ
diff --git a/slides/img/brolol.png b/slides/img/brolol.png
deleted file mode 100644
index 73a2b42..0000000
Binary files a/slides/img/brolol.png and /dev/null differ
diff --git a/slides/img/cd.png b/slides/img/cd.png
deleted file mode 100644
index 9b694d4..0000000
Binary files a/slides/img/cd.png and /dev/null differ
diff --git a/slides/img/div.png b/slides/img/div.png
deleted file mode 100644
index 2a0d8b5..0000000
Binary files a/slides/img/div.png and /dev/null differ
diff --git a/slides/img/divpa.png b/slides/img/divpa.png
deleted file mode 100644
index 73e59dd..0000000
Binary files a/slides/img/divpa.png and /dev/null differ
diff --git a/slides/img/fullbro.png b/slides/img/fullbro.png
deleted file mode 100644
index 9d779e3..0000000
Binary files a/slides/img/fullbro.png and /dev/null differ
diff --git a/slides/img/fullbrolol.png b/slides/img/fullbrolol.png
deleted file mode 100644
index aa6b3e0..0000000
Binary files a/slides/img/fullbrolol.png and /dev/null differ
diff --git a/slides/img/grail.png b/slides/img/grail.png
deleted file mode 100644
index 5737d01..0000000
Binary files a/slides/img/grail.png and /dev/null differ
diff --git a/slides/img/great.jpg b/slides/img/great.jpg
deleted file mode 100644
index fb2acb5..0000000
Binary files a/slides/img/great.jpg and /dev/null differ
diff --git a/slides/img/lxml.png b/slides/img/lxml.png
deleted file mode 100644
index 657ba81..0000000
Binary files a/slides/img/lxml.png and /dev/null differ
diff --git a/slides/img/sc.jpg b/slides/img/sc.jpg
deleted file mode 100644
index fd8157a..0000000
Binary files a/slides/img/sc.jpg and /dev/null differ
diff --git a/slides/img/scrapy_architecture.png b/slides/img/scrapy_architecture.png
deleted file mode 100644
index cfca550..0000000
Binary files a/slides/img/scrapy_architecture.png and /dev/null differ
diff --git a/slides/index.html b/slides/index.html
deleted file mode 100644
index c3164b4..0000000
--- a/slides/index.html
+++ /dev/null
@@ -1,398 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-  <meta name="author" content="Olivier Blanvillain" />
-  <meta name="dcterms.date" content="2014-01-29" />
-  <title>BlogForever Crawler</title>
-  <meta name="apple-mobile-web-app-capable" content="yes" />
-  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-  <link rel="stylesheet" href="reveal.js/css/reveal.min.css"/>
-    <style type="text/css">
-table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
-  margin: 0; padding: 0; vertical-align: baseline; border: none; }
-table.sourceCode { width: 100%; line-height: 100%; }
-td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
-td.sourceCode { padding-left: 5px; }
-code > span.kw { color: #007020; font-weight: bold; }
-code > span.dt { color: #902000; }
-code > span.dv { color: #40a070; }
-code > span.bn { color: #40a070; }
-code > span.fl { color: #40a070; }
-code > span.ch { color: #4070a0; }
-code > span.st { color: #4070a0; }
-code > span.co { color: #60a0b0; font-style: italic; }
-code > span.ot { color: #007020; }
-code > span.al { color: #ff0000; font-weight: bold; }
-code > span.fu { color: #06287e; }
-code > span.er { color: #ff0000; font-weight: bold; }
-    </style>
-    <link rel="stylesheet" href="reveal.js/css/theme/simple.css" id="theme">
-  <link rel="stylesheet" media="print" href="reveal.js/css/print/pdf.css" />
-  <!--[if lt IE 9]>
-  <script src="reveal.js/lib/js/html5shiv.js"></script>
-  <![endif]-->
-
-<style type="text/css">
-  .reveal pre {
-    box-shadow: 0 0 0;
-  }
-
-  .reveal pre {
-    font-size: 70%;
-  }
-
-  code{
-    white-space: pre;
-  }
-
-  .reveal h3 {
-    text-transform: none;
-  }
-
-  .reveal pre code {
-    padding: 0px;
-    /*word-wrap: break-word;*/
-  }
-
-  .level2 > h1 {
-    font-size: 2.11em;
-    text-shadow: none;
-  }
-</style>
-
-</head>
-<body>
-  <div class="reveal">
-    <div class="slides">
-
-<section>
-    <h1 class="title">BlogForever Crawler</h1>
-    <h2 class="author">Olivier Blanvillain</h2>
-    <h3 class="date">JANUARY 29, 2014</h3>
-</section>
-
-<section class="slide level1">
-
-<h2>
-<ol>
-<li><p>My internship</p></li>
-<li><p>I didn't like Python</p></li>
-<li>The crawler
-</h2>
-</li>
-</ol>
-</section>
-<section id="my-internship" class="slide level1">
-<h1>My internship</h1>
-</section>
-<section class="slide level1">
-
-<h2 id="my-background">My background</h2>
-<ul>
-<li><p>Mostly Java and Scala</p></li>
-<li><p>Mathematically Inclined</p></li>
-<li><p>I like compilers</p></li>
-<li><p>Recent interest in functional programming</p></li>
-</ul>
-<pre class="sourceCode bash"><code class="sourceCode bash">            $ <span class="kw">cd</span> workspace/crawler/src/
-            $ <span class="kw">grep</span> -r <span class="st">&#39;for .* in&#39;</span> <span class="kw">|</span> <span class="kw">wc</span> -l
-            <span class="kw">13</span>
-            $ <span class="kw">grep</span> -r <span class="st">&#39;lambda&#39;</span> <span class="kw">|</span> <span class="kw">wc</span> -l
-            <span class="kw">95</span></code></pre>
-</section>
-<section class="slide level1">
-
-<h2 id="it-started-like-this...">It started like this...</h2>
-<figure>
-<img src="img/great.jpg" />
-</figure>
-<p>(^ This is Nikos)</p>
-<!--
-  goal -> text editor -> get started
-  great effect
-  highly motivated, feels like mine
--->
-
-</section>
-<section class="slide level1">
-
-<h2 id="and-not-like-this">And not like this:</h2>
-<figure>
-<img src="img/bro.png" />
-</figure>
-<!--
-  online on bf.eu
-  not: started in 2011
-  not: close source version
--->
-
-</section>
-<section class="slide level1">
-
-<h2 id="btw-here-is-how-it-is">BTW, here is how it is:</h2>
-<figure>
-<img src="img/brolol.png" />
-</figure>
-<!--
-  no api
-  twitter closed
-  real time with invenio?
-  microformat/semantic: .5%
-  links are all URLs
-
-  crawler's job
--->
-
-</section>
-<section class="slide level1">
-
-<h2 id="outline">Outline:</h2>
-<ul>
-<li><p>Three months of developement</p></li>
-<li><p>Three months of documentation</p></li>
-<li><p>I learned Python somewhere in the process</p></li>
-</ul>
-</section>
-<section id="i-didnt-like-python" class="slide level1">
-<h1>I didn't like Python</h1>
-</section>
-<section class="slide level1">
-
-<h3 id="what-im-not-going-to-talk-about">What I'm not going to talk about:</h3>
-<ul>
-<li><p>sdtlib documentation</p></li>
-<li><p>pip, virtualenv</p></li>
-<li><p>byte vs unicode strings</p></li>
-</ul>
-</section>
-<section class="slide level1">
-
-<h3 id="things-that-bug-me">Things that bug me:</h3>
-<ul>
-<li><p>No interfaces<br /> ↪  <em>you better like reading source code...</em></p></li>
-<li><p>No type-checking</p></li>
-<li><p>Exceptions as control flow<br /> ↪  <em>you better like stack traces...</em></p></li>
-<li><p>Immutability?</p></li>
-</ul>
-</section>
-<section class="slide level1">
-
-<h2 id="interfaces">Interfaces</h2>
-<h3 id="were-all-consenting-adults-here"><em>&quot;We're all consenting adults here&quot;</em></h3>
-</section>
-<section id="nope." class="slide level1">
-<h1>Nope.</h1>
-</section>
-<section class="slide level1">
-
-<pre class="sourceCode python"><code class="sourceCode python">      <span class="kw">def</span> parseHTML(page):
-        <span class="co">&quot;&quot;&quot;Parses a page to an html tree.</span>
-
-<span class="co">        @type  page: string</span>
-<span class="co">        @param page: the page to parse</span>
-<span class="co">        @rtype: xml.etree.ElementTree.Element</span>
-<span class="co">        @return: the root of the html tree</span>
-<span class="co">        &quot;&quot;&quot;</span></code></pre>
-<div class="fragment">
-<pre class="sourceCode python"><code class="sourceCode python">        <span class="kw">try</span>:
-          <span class="kw">return</span> lxml.html.fromstring(page)
-        <span class="kw">except</span> (<span class="ot">LookupError</span>,
-                <span class="ot">UnicodeDecodeError</span>,
-                lxml.etree.XMLSyntaxError,
-                lxml.etree.ParserError): <span class="co"># TBC</span>
-          <span class="kw">try</span>:
-            <span class="kw">return</span> soupparser.fromstring(page)
-          <span class="kw">except</span> <span class="ot">Exception</span>:
-            <span class="kw">return</span> lxml.etree.Element(<span class="st">&quot;html&quot;</span>)</code></pre>
-</div>
-</section>
-<section class="slide level1">
-
-<h3 id="lxml-documentation">lxml documentation:</h3>
-<figure>
-<img src="img/lxml.png" />
-</figure>
-</section>
-<section class="slide level1">
-
-<h2 id="type-checking">Type-checking</h2>
-<h3 id="if-it-looks-like-a-duck-and-quacks-like"><em>&quot;If it looks like a duck and quacks like</em></h3>
-<h3 id="a-duck-then-it-must-be-a-duck"><em>a duck, then it must be a duck&quot;</em></h3>
-</section>
-<section class="slide level1">
-
-<figure>
-<img src="img/sc.jpg" />
-</figure>
-<pre class="sourceCode python"><code class="sourceCode python">    <span class="dt">max</span>([ <span class="ot">True</span>, <span class="dv">2</span>, [<span class="dv">3</span>, <span class="dv">4</span>], {<span class="dv">5</span>: <span class="dv">6</span>, <span class="dv">7</span>: <span class="dv">8</span>}, <span class="st">&quot;nine&quot;</span>, <span class="ot">None</span> ])</code></pre>
-</section>
-<section class="slide level1">
-
-<pre class="sourceCode python"><code class="sourceCode python"><span class="kw">def</span> similarity(string1, string2, bufferDict=<span class="ot">None</span>):
-  <span class="co">&quot;&quot;&quot;Computes the similarity between two strings.&quot;&quot;&quot;</span></code></pre>
-<div class="fragment">
-<pre class="sourceCode python"><code class="sourceCode python"><span class="kw">def</span> extractFirst(page, query):
-  <span class="co">&quot;&quot;&quot;Executes a XPath query and return the first result.&quot;&quot;&quot;</span></code></pre>
-</div>
-<div class="fragment">
-<pre class="sourceCode python"><code class="sourceCode python"><span class="kw">def</span> bestXPath(contentZipPages):
-  <span class="co">&quot;&quot;&quot;Given a list of content/page, computes the best XPath</span>
-<span class="co">  query that would return the content on each page.</span>
-<span class="co">  @type  contentZipPages: list of (string, etree.ElementTree)</span>
-<span class="co">  @rtype: string&quot;&quot;&quot;</span></code></pre>
-</div>
-<div class="fragment">
-<pre class="sourceCode python"><code class="sourceCode python">  queries = (<span class="st">&quot;/some/path&quot;</span>, <span class="st">&quot;/another/path&quot;</span>, ...)
-  dct = <span class="dt">dict</span>()
-  ratio = <span class="kw">lambda</span> content, page, query: (
-      similarity(content, extractFirst(page, query)), dct)</code></pre>
-</div>
-<div class="fragment">
-<pre class="sourceCode python"><code class="sourceCode python">  topQueriesHead = nlargest(
-      <span class="dv">10</span>, queries, key=partial(ratio, *contentZipPages[<span class="dv">0</span>]))</code></pre>
-<pre class="sourceCode python"><code class="sourceCode python">  topQueries = <span class="dt">map</span>(<span class="kw">lambda</span> (c, p):
-      <span class="dt">max</span>(topQueriesHead, key=partial(ratio, c, p)),
-      contentZipPages)</code></pre>
-<pre class="sourceCode python"><code class="sourceCode python">  <span class="kw">return</span> <span class="dt">max</span>(<span class="dt">set</span>(topQueries), key=topQueries.count)</code></pre>
-</div>
-</section>
-<section class="slide level1">
-
-<h3 id="do-you-know-the-difference-between">Do you know the difference between</h3>
-<h3 id="and-200">500 and 200?</h3>
-<pre class="sourceCode python"><code class="sourceCode python">
-                  In [<span class="dv">1</span>]: <span class="dv">200</span> is <span class="dv">100</span> + <span class="dv">100</span>
-                  Out[<span class="dv">1</span>]: <span class="ot">True</span>
-
-                  In [<span class="dv">2</span>]: <span class="dv">500</span> is <span class="dv">250</span> + <span class="dv">250</span>
-                  Out[<span class="dv">2</span>]: <span class="ot">False</span></code></pre>
-</section>
-<section id="the-crawler" class="slide level1">
-<h1>The Crawler</h1>
-</section>
-<section class="slide level1">
-
-<figure>
-<img src="img/cd.png" />
-</figure>
-</section>
-<section class="slide level1">
-
-<figure>
-<img src="img/grail.png" />
-</figure>
-</section>
-<section class="slide level1">
-
-<pre class="sourceCode xml"><code class="sourceCode xml"><span class="kw">&lt;rss</span><span class="ot"> version=</span><span class="st">&quot;2.0&quot;</span><span class="ot"> xmlns:content=</span><span class="st">&quot;http://purl.org/rss/1.0/modules/content/&quot;</span><span class="ot"> xmlns:wfw=</span><span class="st">&quot;http://wellformedweb.org/CommentAPI/&quot;</span><span class="ot"> xmlns:dc=</span><span class="st">&quot;http://purl.org/dc/elements/1.1/&quot;</span><span class="ot"> xmlns:atom=</span><span class="st">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="ot"> xmlns:sy=</span><span class="st">&quot;http://purl.org/rss/1.0/modules/syndication/&quot;</span><span class="ot"> xmlns:slash=</span><span class="st">&quot;http://purl.org/rss/1.0/modules/slash/&quot;</span><span class="kw">&gt;</span>
-<span class="kw">&lt;channel&gt;</span>
-  <span class="kw">&lt;title&gt;</span>Quantum Diaries<span class="kw">&lt;/title&gt;</span>
-  <span class="kw">&lt;atom:link</span><span class="ot"> href=</span><span class="st">&quot;http://www.quantumdiaries.org/feed/&quot;</span><span class="ot"> rel=</span><span class="st">&quot;self&quot;</span><span class="ot"> type=</span><span class="st">&quot;application/rss+xml&quot;</span> <span class="kw">/&gt;</span>
-  <span class="kw">&lt;link&gt;</span>http://www.quantumdiaries.org<span class="kw">&lt;/link&gt;</span>
-  <span class="kw">&lt;description&gt;</span>Thoughts on work and life from particle physicists from around the world.<span class="kw">&lt;/description&gt;</span>
-  <span class="kw">&lt;lastBuildDate&gt;</span>Tue, 28 Jan 2014 14:21:48 +0000<span class="kw">&lt;/lastBuildDate&gt;</span>
-  <span class="kw">&lt;language&gt;</span>en-US<span class="kw">&lt;/language&gt;</span>
-    <span class="kw">&lt;sy:updatePeriod&gt;</span>hourly<span class="kw">&lt;/sy:updatePeriod&gt;</span>
-    <span class="kw">&lt;sy:updateFrequency&gt;</span>1<span class="kw">&lt;/sy:updateFrequency&gt;</span>
-  <span class="kw">&lt;generator&gt;</span>http://wordpress.org/?v=3.7.1<span class="kw">&lt;/generator&gt;</span>
-  <span class="kw">&lt;item&gt;</span>
-    <span class="kw">&lt;title&gt;</span>Anti-beam me up, Scotty!<span class="kw">&lt;/title&gt;</span>
-    <span class="kw">&lt;link&gt;</span>http://www.quantumdiaries.org/2014/01/28/anti-beam-me-up-scotty/<span class="kw">&lt;/link&gt;</span>
-    <span class="kw">&lt;comments&gt;</span>http://www.quantumdiaries.org/2014/01/28/anti-beam-me-up-scotty/#comments<span class="kw">&lt;/comments&gt;</span>
-    <span class="kw">&lt;pubDate&gt;</span>Tue, 28 Jan 2014 13:46:08 +0000<span class="kw">&lt;/pubDate&gt;</span>
-    <span class="kw">&lt;dc:creator&gt;</span><span class="bn">&lt;![CDATA[</span>CERN<span class="bn">]]&gt;</span><span class="kw">&lt;/dc:creator&gt;</span>
-    <span class="kw">&lt;guid</span><span class="ot"> isPermaLink=</span><span class="st">&quot;false&quot;</span><span class="kw">&gt;</span>http://www.quantumdiaries.org/?p=32171<span class="kw">&lt;/guid&gt;</span>
-    <span class="kw">&lt;description&gt;</span><span class="bn">&lt;![CDATA[</span>While the CERN accelerator complex was being revamped in 2013, the ASACUSA experiment took time to carefully review the data taken in 2012 at the Antiproton Decelerator (AD) facility. This painstaking work paid off and they just announced in Nature having produced the first ever beam of antihydrogen atoms. In laboratory experiments like the ones [&amp;#8230;]<span class="bn">]]&gt;</span><span class="kw">&lt;/description&gt;</span>
-    <span class="kw">&lt;content:encoded&gt;</span><span class="bn">&lt;![CDATA[</span>&lt;p&gt;While the &lt;a href=&quot;http://public.web.cern.ch/&quot;&gt;CERN&lt;/a&gt; &lt;a href=&quot;http://www.quantumdiaries.org/2014/01/15/a-whole-universe-to-be-discovered/&quot;&gt;accelerator complex was being revamped&lt;/a&gt; in 2013, the &lt;a href=&quot;http://home.web.cern.ch/about/experiments/asacusa&quot;&gt;ASACUSA&lt;/a&gt; experiment took time to carefully review the data taken in 2012 at the &lt;a href=&quot;http://home.web.cern.ch/about/accelerators/antiproton-decelerator&quot;&gt;Antiproton Decelerator&lt;/a&gt; (AD) facility. This painstaking work paid off and they just &lt;a href=&quot;http://www.nature.com/ncomms/2014/140121/ncomms4089/full/ncomms4089.html&quot;&gt;announced in &lt;i&gt;Nature&lt;/i&gt;&lt;/a&gt; having produced the first ever beam of antihydrogen atoms.&lt;/p&gt;
-    ...</code></pre>
-</section>
-<section class="slide level1">
-
-<pre class="sourceCode xml"><code class="sourceCode xml"><span class="kw">&lt;rss</span><span class="ot"> version=</span><span class="st">&quot;2.0&quot;</span><span class="ot"> xmlns:content=</span><span class="st">&quot;http://purl.org/rss/1.0/modules/content/&quot;</span><span class="ot"> xmlns:wfw=</span><span class="st">&quot;http://wellformedweb.org/CommentAPI/&quot;</span><span class="ot"> xmlns:dc=</span><span class="st">&quot;http://purl.org/dc/elements/1.1/&quot;</span><span class="ot"> xmlns:atom=</span><span class="st">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="ot"> xmlns:sy=</span><span class="st">&quot;http://purl.org/rss/1.0/modules/syndication/&quot;</span><span class="ot"> xmlns:slash=</span><span class="st">&quot;http://purl.org/rss/1.0/modules/slash/&quot;</span><span class="kw">&gt;</span>
-<span class="kw">&lt;channel&gt;</span>
-  <span class="kw">&lt;title&gt;</span>Quantum Diaries<span class="kw">&lt;/title&gt;</span>
-  <span class="kw">&lt;atom:link</span><span class="ot"> href=</span><span class="st">&quot;http://www.quantumdiaries.org/feed/&quot;</span><span class="ot"> rel=</span><span class="st">&quot;self&quot;</span><span class="ot"> type=</span><span class="st">&quot;application/rss+xml&quot;</span> <span class="kw">/&gt;</span>
-  <span class="kw">&lt;link&gt;</span>http://www.quantumdiaries.org<span class="kw">&lt;/link&gt;</span>
-  <span class="kw">&lt;description&gt;</span>Thoughts on work and life from particle physicists from around the world.<span class="kw">&lt;/description&gt;</span>
-  <span class="kw">&lt;lastBuildDate&gt;</span>Tue, 28 Jan 2014 14:21:48 +0000<span class="kw">&lt;/lastBuildDate&gt;</span>
-  <span class="kw">&lt;language&gt;</span>en-US<span class="kw">&lt;/language&gt;</span>
-    <span class="kw">&lt;sy:updatePeriod&gt;</span>hourly<span class="kw">&lt;/sy:updatePeriod&gt;</span>
-    <span class="kw">&lt;sy:updateFrequency&gt;</span>1<span class="kw">&lt;/sy:updateFrequency&gt;</span>
-  <span class="kw">&lt;generator&gt;</span>http://wordpress.org/?v=3.7.1<span class="kw">&lt;/generator&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-  <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span> <span class="kw">&lt;item&gt;</span>...<span class="kw">&lt;/item&gt;</span>
-<span class="kw">&lt;/channel&gt;</span>
-<span class="kw">&lt;/rss&gt;</span></code></pre>
-</section>
-<section class="slide level1">
-
-<figure>
-<img src="img/div.png" />
-</figure>
-</section>
-<section class="slide level1">
-
-<figure>
-<img src="img/divpa.png" />
-</figure>
-</section>
-<section class="slide level1">
-
-<h2 id="the-algorithm">The algorithm:</h2>
-<ol type="1">
-<li><p>Find all possible <em>XPaths</em> for a given blog</p></li>
-<li><p>Obtain <em>training data</em> from the web-feed</p></li>
-<li><p>Execute all <em>XPaths</em> on the ~15 latest posts</p></li>
-<li><p>Find the <em>XPaths</em> returning results most<br /> similar to the training data</p></li>
-</ol>
-</section>
-<section class="slide level1">
-
-<h2 id="scrapy">Scrapy</h2>
-<figure>
-<img src="img/scrapy_architecture.png" />
-</figure>
-</section>
-<section id="questions" class="slide level1">
-<h1>Questions?</h1>
-</section>
-    </div>
-  </div>
-
-  <script src="reveal.js/lib/js/head.min.js"></script>
-  <script src="reveal.js/js/reveal.min.js"></script>
-
-  <script>
-
-      // Full list of configuration options available here:
-      // https://github.com/hakimel/reveal.js#configuration
-      Reveal.initialize({
-        controls: false,
-        progress: true,
-        history: true,
-        center: true,
-        overview: true,
-        // transitionSpeed: 'fast',
-        theme: "sky",
-        transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/cSoncave/zoom/linear/fade/none
-
-        // Optional libraries used to extend on reveal.js
-        dependencies: [
-          { src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
-          { src: 'reveal.js/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
-          { src: 'reveal.js/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
-//          { src: 'reveal.js/plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; }, }
-//          { src: 'reveal.js/plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
-]});
-    </script>
-  </body>
-</html>
diff --git a/slides/mk.sh b/slides/mk.sh
deleted file mode 100644
index a2153ec..0000000
--- a/slides/mk.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-# watchmedo shell-command --wait --patterns="*.s*.md;*.template" --command "sh mk.sh"
-
-cat *.md | pandoc \
-  -t revealjs --template revealjs.template \
-  --slide-level 1 -s -o index.html
-
-xdotool search --name Chrome key --window %@ F5
diff --git a/slides/reveal.js b/slides/reveal.js
deleted file mode 160000
index 8b8cc60..0000000
--- a/slides/reveal.js
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 8b8cc607d4e02ca51c4256175b9cc861f75b70e3
diff --git a/slides/revealjs.template b/slides/revealjs.template
deleted file mode 100644
index ea86086..0000000
--- a/slides/revealjs.template
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html>
-<html$if(lang)$ lang="$lang$"$endif$>
-<head>
-  <meta charset="utf-8">
-  <meta name="generator" content="pandoc">
-$for(author-meta)$
-  <meta name="author" content="$author-meta$" />
-$endfor$
-$if(date-meta)$
-  <meta name="dcterms.date" content="$date-meta$" />
-$endif$
-  <title>$if(title-prefix)$$title-prefix$ - $endif$$pagetitle$</title>
-  <meta name="apple-mobile-web-app-capable" content="yes" />
-  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-  <link rel="stylesheet" href="$revealjs-url$/css/reveal.min.css"/>
-$if(highlighting-css)$
-    <style type="text/css">
-$highlighting-css$
-    </style>
-$endif$
-$if(css)$
-$for(css)$
-    <link rel="stylesheet" href="$css$"/>
-$endfor$
-$else$
-    <link rel="stylesheet" href="$revealjs-url$/css/theme/simple.css" id="theme">
-$endif$
-  <link rel="stylesheet" media="print" href="$revealjs-url$/css/print/pdf.css" />
-  <!--[if lt IE 9]>
-  <script src="$revealjs-url$/lib/js/html5shiv.js"></script>
-  <![endif]-->
-$if(math)$
-    $math$
-$endif$
-$for(header-includes)$
-    $header-includes$
-$endfor$
-
-<style type="text/css">
-  .reveal pre {
-    box-shadow: 0 0 0;
-  }
-
-  .reveal pre {
-    font-size: 70%;
-  }
-
-  code{
-    white-space: pre;
-  }
-
-  .reveal h3 {
-    text-transform: none;
-  }
-
-  .reveal pre code {
-    padding: 0px;
-    /*word-wrap: break-word;*/
-  }
-
-  .level2 > h1 {
-    font-size: 2.11em;
-    text-shadow: none;
-  }
-</style>
-
-</head>
-<body>
-$for(include-before)$
-$include-before$
-$endfor$
-  <div class="reveal">
-    <div class="slides">
-
-$if(title)$
-<section>
-    <h1 class="title">$title$</h1>
-$if(subtitle)$
-  <h1 class="subtitle">$subtitle$</h1>
-$endif$
-$for(author)$
-    <h2 class="author">$author$</h2>
-$endfor$
-    <h3 class="date">$date$</h3>
-</section>
-$endif$
-$if(toc)$
-<section id="$idprefix$TOC">
-$toc$
-</section>
-$endif$
-
-$body$
-    </div>
-  </div>
-$for(include-after)$
-$include-after$
-$endfor$
-
-  <script src="$revealjs-url$/lib/js/head.min.js"></script>
-  <script src="$revealjs-url$/js/reveal.min.js"></script>
-
-  <script>
-
-      // Full list of configuration options available here:
-      // https://github.com/hakimel/reveal.js#configuration
-      Reveal.initialize({
-        controls: false,
-        progress: true,
-        history: true,
-        center: true,
-        overview: true,
-        // transitionSpeed: 'fast',
-        theme: "sky",
-        transition: $if(transition)$'$transition$'$else$Reveal.getQueryHash().transition || 'default'$endif$, // default/cube/page/cSoncave/zoom/linear/fade/none
-
-        // Optional libraries used to extend on reveal.js
-        dependencies: [
-          { src: '$revealjs-url$/lib/js/classList.js', condition: function() { return !document.body.classList; } },
-          { src: '$revealjs-url$/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
-          { src: '$revealjs-url$/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
-//          { src: '$revealjs-url$/plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; }, }
-//          { src: '$revealjs-url$/plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
-]});
-    </script>
-  </body>
-</html>
diff --git a/success-rates/README.md b/success-rates/README.md
deleted file mode 100644
index 54d1c92..0000000
--- a/success-rates/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-To reproduce the success-rates evaluation, do the following:
-
-- Generate the test-set as explained in `/dataset`.
-- Install the requierements in a virtualenv:
-
-        sudo pip install virtualenv; virtualenv ENV; source ENV/bin/activate
-        sudo pip install lxml, feedparser, goose-extractor, readability-lxml, boilerpipe
-
-- Get the version of the BlogForever Crawler used for the evaluation:
-
-        git clone git@github.com:BlogForever/crawler.git
-        git checkout 06a1fd89554db518c6348aba3c1709d85cce2c42
-
-- Merge it with success-rates/crawler:
-
-        mkdir merged; sudo cp -al crawler/* blogforever-crawler-publication/success-rates/crawler/* merged/
-
-- Run all the extractions:
-
-        # for * in success-rates/titles/, * in success-rates/articles/, and merged/
-        sudo path/to/project/gen.sh
-
-- Compute the scores:
-
-        success-rates/scoreArticles.sh
-        success-rates/scoreTitles.sh
diff --git a/success-rates/articles/boilerpipe/gen.py b/success-rates/articles/boilerpipe/gen.py
deleted file mode 100644
index 2250d77..0000000
--- a/success-rates/articles/boilerpipe/gen.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import sys
-from boilerpipe.extract import Extractor
-from os import listdir
-from urllib2 import urlopen, HTTPError
-import codecs
-
-def main():
-  contents = sys.argv[1]
-  for url in listdir(contents):
-    print url
-    with codecs.open(url, "w", encoding="utf-8") as out:
-      try:
-        html = urlopen(url.replace("{", "/")).read()
-        extracted = Extractor(html=html)
-        out.write(extracted.getText())
-      except HTTPError:
-        out.write("")
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/articles/boilerpipe/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/success-rates/articles/boilerpipe/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index 90cf521..0000000
--- a/success-rates/articles/boilerpipe/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1,284 +0,0 @@
-This is a tradition I don’t think I’ve mentioned on the blog before. It is — as far as I can tell — less important than michaelmas, but that’s not to say it’s unimportant. It’s basically the waldorf take on an old european tradition . The children usually make their own lanterns and then — on a dark afternoon or evening, usually on the 11th of November (three days after St Martin’s day of death, chew that anthroposophical chew-bone!) — walk in procession carrying their lanterns while singing. Anthroposophically speaking, what can be better than the pentagon-dodecahedron lantern with its neat pentagram stars?
-I urge you to look up the dodecahedron and the foundation stone (in the context of anthroposophy). And the importance of  pentagrams  in anthroposophy. However, I shall not delve into the spiritual symbolism and significance of the geometrical shapes of lanterns. You don’t actually need to have the dodecahedron, although it is interesting to note — given the anthroposophical meaning of them — the presence of dodecahedron lanterns. (They’re too advanced for kindergarten kids to make. So there are several types of lanterns. Round, cylindrical, even squares; sometimes coloured silk papers glued together very simply into globes…)
-Instead I want to share with you a recent article in German waldorf education magazine Erziehungskunst. It deals with this November celebration. I assure you, who don’t read German, that it is worth running this article through google translate!
-The author, Fabrizio Venturini, writes:
-So kann das einfache Kinderlied: »Ich geh mit meiner Laterne / und meine Laterne mit mir« – zum Lebensmotto werden: Man trägt das Ziel, dem man folgen will, selbstgesetzt vor sich her! Das Laternenlicht wird zum Bild für den inneren Leitstern. Es ist berührend, die jüngeren Kinder ihr »Licht-Ich« vor sich her tragen zu sehen: Man weiß zuweilen nicht, ob die Laterne vom Kind getragen oder ob dieses vom vorangehenden Licht gezogen wird. Ist es mit den Idealen im Leben nicht ebenso?
-I think that (the child being ‘pulled’ by the light rather than the child carrying the light) is a subtle reference to reinkarnation and karma.
-Das Laternenlicht-Ich symbolisiert das idealische Selbst des Menschen, das mit der Welt und dem Kosmos verbunden ist. Sonne, Mond und Sterne treten in der Laterne auf; sie auf »Sternenbahnen« zu tragen gleicht ihrem kosmischen Umlauf. Diese Sphärenharmonie sollte deshalb von Singen, nicht von Schwatzen begleitet sein.
-The ideal self is, supposedly, the reincarnating spirit. The eternal core, with its cosmic connections. The reference to a harmony of the spheres is pure anthro-speak, too. Which again sets Erziehungskunst apart — on the one hand, they fail to explain some things and remain anthroposophically obscure, on the other: at least they use the concepts, they mention the ideas. They don’t completely ignore that this element of anthroposophical spirituality is a vital part of waldorf education. And should be, if the education is to be called ‘waldorf’.
-Die Ich-Flamme in jedem Menschen ist in der geistig finster werdenden Welt gefährdet; die Mächte der Dunkelheit wollen sie auslöschen – deshalb muss sie geschützt werden, deshalb braucht sie eine Hülle. Aber diese Hülle darf das Leuchten des Ichs nicht zudecken, sie muss durchlässig, durchsichtig, transparent gemacht werden. Dafür muss die Seele geläutert werden.’
-I don’t need to tell you how anthroposophical this is, do I? The struggle of the eternal human spirit in a dark world where sinister forces battle for domination. Ahriman, Lucifer, materialism, intellectualism, et cetera. Of course, waldorf education is there to protect children from such detrimental influences of this world during their incarnation process, that is, during the time when they grow up…
-·
-Hmm … i don’t know how it is in Sweden. Here in the UK, the season of November 11 is carried as a time of remembrance and solemn recollection of the destruction and loss of life from war. i’m sure that many of these commemorations, especially those in London, would have been broadcast via the Internet.
-Still, an interesting season and time of year that i can find difficult as i still strive to appreciate its qualities. From conversations, I reckon others struggle to find meaning.
-·
-No, we weren’t in the war. Also, the continental St Martins tradition much predates the war. And, lastly: That’s not the reason this lantern festival is celebrated in waldorf schools worldwide!
-But it would not surprise me if parents in the Uk are told that the celebration is a little bit the same as the commemorations. Saves them having to explain the other, real reasons.
-Perhaps Uk parents or others know.
-Tom H-S
-·
-You are right Alicia, St. Martin has nothing to do with commemorating the war dead.
-I was on the St Martin Lantern walk with my two little grand-daughters last Friday evening. It is a lovely thing to do and they really enjoyed it.
-It is about the light of the ego in the ‘darkness’ of earthly incarnation. Nobody tried to fudge the issue or pretend it was about anything else.
-You say, ‘Of course, Waldorf education is there to protect children from such detrimental influences of this world during their incarnation process, that is, during the time when they grow up…’
-Yes, and most Steiner schools are pretty open about that. They are usually very clear that they believe children should not be exposed to influences they cannot deal with before they are ready.
-An obvious problem in England is the access of young children and teenagers to pornography on the internet. According to reports some teenagers, both boys and girls, are growing up with very unbalanced ideas about sex. Porn is nearly always diminishing and exploitative of the female, nearly always coloured by male fantasy, I agree with those who would like children and young teenagers to be protected from it.  Having said that there is no easy solution to this problem – I do not want to see any form of censorship on the internet.
-What we are talking about here is values. Education is always a value-laden enterprise.
-I value protecting children from ‘Ahriman, Lucifer, materialism, intellectualism, ….’.
-I think if we made suitable substitutions for the names Steiner gave to represent aspects of the human soul I would find many people in principle agreed with me.
-The objective of Steiner education is to enable children to meet things when they are sufficiently mature to deal with them in a balanced way.
-You say, ‘No, we weren’t in the war.’ It is true Sweden was officially neutral. But the war had an impact on Swedes as it did in every country. I have spoken to many older people about that time and many Swedes behaved honourably and heroicly.
-David Clark
-·
-Having seen the lantern festival myself, i acknowledge and recognise your comments about the worldwide tradition. Mine referred to the (for me) multifaceted season itself and my deep personal struggle with its layers of meaning here. Again through UK news via the Internet, you may be aware that views of the “official” commemorations can vary quite markedly, both among and within communities across the several nations and regions of the UK. As i write, i reckon the lantern festival itself may somehow be a quiet common element that is brought to expression across the increasingly diverse and variegated cultures and geographies of the UK.
-Giving an adult education class at a UK Waldorf school tomorrow, I’ll ask. Anyway, i reckon it would also make an interesting theme for conversation (close to my heart actually), especially as the first Waldorf school was established in the same year as the now influential academic discipline of International Relations was established in Wales-UK.
-Thank you. Once again, it is interesting to compare notes from the opposite shores of such historically significant seaways.
-i’m wondering
-·
-Another thought I have is that it’s quite possible for lantern festival to sort of merge a bit with local traditions — much in the way michealmas is often merging or even being rebranded as harvest festival. (Wonder what happens in the southern hemisphere!)
-As for the lantern festival, I think it’s quite beautiful, and have nothing against it. It wouldn’t hurt being open about what it is though (what it is, in the context of anthroposophy), and I believe they neglect that. As usual!
-‘Yes, and most Steiner schools are pretty open about that.’
-You’re right. They advertise it proudly. What they don’t talk as much about is the reasons — I mean all the reasons, not just the superficial ones. And this depending on the clientele the particular school is trying to attract.
-Almost everyone would want to protect children from seeing porn. However, that’s not the only reason for waldorf schools to recommend — or even ‘demand’ — that computers, tv, et c, are avoided. When I was a kid, they didn’t want the kids to see or talk about an educational TV show (teaching reading and writing). It certainly wasn’t pornographic. It was considered a bad influence nonetheless. Just to name one example.
-‘I think if we made suitable substitutions for the names Steiner gave to represent aspects of the human soul I would find many people in principle agreed with me.’
-Maybe not for exactly the same reasons though. And can we just substitute the concepts?
-I think many agree with the conclusions — that porn is detrimental, that other activities should replace or at least complement time in front of the screen, and so forth. They might not agree with all the (anthroposophically motivated) steps coming towards these conclusions.
-‘You say, ‘No, we weren’t in the war.’ It is true Sweden was officially neutral. But the war had an impact on Swedes as it did in every country.’
-Of course! I only mentioned it because there’s no such day of commemoration. And the impact was much less severe.
-I wonder if rememberance day is ever acknowledged in waldorf schools at all?
-Ted Wrinch
-·
-“the first Waldorf school was established in the same year as the now influential academic discipline of International Relations was established in Wales-UK.”
-What a co-incidence you should mention this, David. My path towards shipping my moorings from my ‘hard science’ background was via the same academic discipline! My friend, and intellectual mentor, had been taking a first degree (his second: he already had one in English and History from Adelaide) in the International Relations department at Aberystwyth (the Welsh end of the axis you mention) whilst I was doing Physics and Maths. Prompted by inspiring talks with him at our Cwrt Mawr halls of residence, I later embarked on the one year PG Dip International Studies at Warwick (with no humanities background, I couldn’t do the MA; a course lecturer was Barry Buzan, brother of Tony;  my friend went on to a doctorate at Oxford, which he hated: Oxford, that is). And now here we all are!
-T.
-Ted 
-·
-Alicia, some key words in the legend of St Martin are these (from the article):
-“Sankt Martin wird im Lied in jeder Strophe drei Mal angerufen. Ihn kennzeichnet, dass er den Unbehausten, Frierenden, Bedürftigen, den der »im Dunkeln sitzt«, sieht, dass er bereit ist, von seinem »hohen Ross« herab sich ihm zuzuneigen, und dass er ihm von seinem schützenden »Eigentum«, dem Mantel, den halben Teil schenkt”.
-The legend has lived on, inspiring many a good turn through the ages, ending as described in Wikipedia:
-“The basilica was sacked by Huguenots in 1562, during the French Wars of Religion. The abbey recovered, but was disestablished during the French Revolution.[20] It was deconsecrated, used as a stable, then utterly demolished, its dressed stones sold in 1802 when two streets were opened on the site, to ensure it would not be rebuilt”.
-For the historian the interesting queston arises: Why was St Martins Shrine so important to destroy? An enormous amount of churches and cathedrals survived the revolution. This onewas utterly annihilated, well into Napoleon´s era. Why? Speculations wellcomed!
-Melanie
-·
-I used to like the lantern festival, I can still sing the song: ‘I go with my own little lantern…’
-But NO, we were not told what it meant. There was never any mention of ‘incarnation’ either.
-Hollywood Tomfortas
-The Parenting Passageway on “A Waldorf View of Martinmas” (2010)
-·
-Well. We met yesterday for the adult education class and paused briefly as a class of younger children set out on their festival. After a gap of many years, I also experienced great joy and delight as i participated in the evening festival. As an older person, i felt the need this time to stay by those who knew me because my enhanced CRB was unfortunately at home. Feeling quite vulnerable much of the time. Wonders of the Internet i suppose! :-)
-Alicia, many thanks for sharing your ethereal spaces with me. In return, i would like to invite you across to the UK …..
-As you can see/feel, it is much warmer here. In passing, i must say that the ethereal return flight home was rather turbulent. Quite a lot of feverish disturbances up in the clouds about elementals. i actually felt a lot better on realising that i neither believed in gnomes or in the witty comments of those who seemed to do so. But then i don’t believe everything i read on the Internet either. Yet, i suppose it does provide a few IT experts with a living. Who am i to criticise? They certainly seem to know more than i do. Anyway, i wasn’t scared for long. Very sorry, Alicia, i digress …
-Welcome to the UK. i imagine that you have ethereally rented one of those 1960′s UK ice cream vans. In my mind’s eye, it is parked at the side of the road – did you know about those ethereal yellow lines as a (t)rusty lawyer? :-) Away from the Waldorf school (and its playground :-) ).As a planner in a “previous incarnation” :-) i can firmly confirm that we are definitely on the ethereal public highway.
-Mine’s a mint ice cream with chocolate. i rarely have any other sort.
-Please imagine that i’m now juggling an ethereal newspaper and an ethereally ancient computer with battery problems – no prizes for guessing :-) Now, i’m also juggling the ice cream.
-Aargh!! Now everything is starting to move – and i’ve woken up Rufus. Growl!!! As you know, I have a cat. Help!!
-Phew, it’s much calmer and quieter now, until …. Alicia!!! Please turn off the chimes! They will disturb the children and the neighbours find them annoying!
-Where was i? Oh yes. the Lantern Festival.
-David Clark
-Very sorry. Other practical commitments beckon suddenly. Back later today. i hope you have some more customers in the meantime. Please wait. i’ll be back.
-·
-Melanie — I remember that song too… Odd, isn’t it, how even the same songs are sung… And Tom, that blog is hilarious.
-‘Quite a lot of feverish disturbances up in the clouds about elementals. i actually felt a lot better on realising that i neither believed in gnomes or in the witty comments of those who seemed to do so.’
-Well, if you don’t believe in them, no wonder they’re angry and cause disturbances! Your ethereal flights are bound to be turbulent until you recognize the gnomes and their needs.
-David Clark
-Hi Alicia,
-Can you make an irish coffee? OK. If not, i’d welcome an americano please. Small, with milk.
-Well, yesterday’s Festival(s) were quite amazing. Early in the day, the younger children walked past, guided by their teachers. We could see that the process of the Festival was all important. Led in a line and then encouraged to sing while stepping. Careful activity.
-Our conversation was very interesting. From UK news you will be aware of recent events in Afghanistan. These touched us. A page in the bulletin had been dedicated to the St. Martin legend and one of us read it out. This content sparked an interesting discussion that demonstrated both the polarity of views on formal remembrance and the inherent contradictions that may be felt during this season. Almost as i write, i realise that these may be summarised as a contrast between “light into darkness” (Martinmas) and darkness into light (formality).
-At “my” state school, there was a stone war memorial set into the wall of one of the corridors. At the set date and time, former pupils gathered in alcove opposite the memorial and boys from the whole school walked in step, saluting by turning their heads as they passed by in strictly observed silence. For various reasons, i don’t think Waldorf schools remember in this way. Ideally, the tragedies and consequences of war are highlighted in the Upper School curriculum through attentive presentation of Modern History. As relatively new foundations, UK (and i expect those elsewhere) Waldorf schools would only have been created after World War 1 by definition. In passing, I sometimes imagine Main Lessons being given at the Stuttgart school as the sounds of gunfire from the opposing factions of the civil war/revolution were being heard in the streets.
-But what happened next? As they say on some TV programmes in the UK
-David Clark
-·
-All with lighted lanterns, adults and children gathered in a corner of the school site. Slightly embarrassed parents and restless children. Before setting out, one of the teachers outlined the suggested process following song and careful walking. We (struggled) to practice songs and then set out.
-Well, I can only reflect on my observations. Gradually, a hush descended on us all as the parents became increasingly attentive to their children. An amazing mood of gentle caring and concern gradually opened up, demonstrated by (unhurried and uncritical attention) to mud and clothes for example. At the same time, the children could give voice to their own direct experiences. You may know the paintings of Joseph Wright of Derby. These give a pale image of what could be discovered then.
-This, people were left quite free to make their own discoveries. Interestingly, a child within earshot saw various electrically powered lights on houses, a car and a bicycle (on a public road) and commented “They’re cheating” on several occasions.
-As an adult, I’m surprised and disappointed at the rapid fading of such experiences into memory. Speaking personally, i spend much more time in the company of other human beings and sunlight than i do in the world of experiment. For personal reasons, I reckon my connection with technology has been rather closer…
-*sip” Do you have another of those ice creams, Alicia? Great. Thanks. i can see it is getting darker and we will soon need to pack up leave in our separate directions. Ah! Problem. i can only pay you in ethereal £. Did you expect to receive euros?
-So, to sum up, i reckoned one aspect of the St. Martin’s Festival was a celebration among human beings. Somehow, this manifest and subtle dimension is often neglected in life.
-Striving to promote the well-being of vulnerable people, i’m frequently caught up with contradictions in “care”. While health professionals may use information from the British National Formulary to support their clinical decisions, this “digest for rapid reference”. As noted, in p. iii of the September 2010 edition: “The BNF should be interpreted in the light of professional knowledge and supplemented as necessary by specialised publications and by reference to the product literature.”
-This statement may be taken widely as a sensibly safe and conservative view of the academic, professional and scientific position. Yet, once again, what happens next, following references to the BNF? Well, much of this accepted usage lies in a carefully controlled human domain. Is mental health different? Fortunately for me as a consumer, the BNF gives careful, highly detailed and technical information about products.
-Clearly, such explanations provide an essential basis for scientific medicine and support appropriate innovation. Several years ago, i applied for registration at the then London University School of Pharmacy to pursue postgraduate research into themes of exercise and effectiveness as relating to treatment and effectiveness. At that time, I was frustrated that my application was unsuccessful. Having reflected for several years, i have concluded that this evidence points to the possibility that the “human” dimension is excluded from what i may call the “bnf.org” approach. Of course, I accept that the situation may have changed since 2010.
-To me, this seems very well until the dimension of polypharmacy is considered. Here, i should make clear my own situation. While a social scientist and not a health professional, this theme was brought to my notice several years ago by a health professional. Aware of my advocacy activities, he suggested that i should carry our research into “polypharmacy” and “treatment and recovery”. Having done this, i wonder whether the biographical (in vivo?) aspect is accounted for in the same way as the statistical aspect.
-In many ways, this awareness of boundaries would also suggest agreement upon limitations. For example in England-UK, media coverage of a recent NICE decision sparked some interest. By removing recognition of exercise from its remit, it was seen as acting out of harmony with general opinion. Yet, accepting the above method, the decision is quite consistent. While not qualified to say so as David Clark, this does not seem in any way to be “improbable science”.
-Yet, i can still hear the TV announcer say “But what happens next?” A great deal of discipline and rigour have been dedicated towards ensuring the effectiveness and safety of medicines. Clearly, one can only be pleased that such endeavours continue. Yet some vulnerable people have a complex biographical and product history in this area. From experience, i know that they struggle in many ways, some in long term institutions. Looking in from outside, i reckon exercise and fresh air in various forms may enliven. Sometimes, i’m saddened that justified recognition of clinical standards may be accompanied by this more challenging human dimension.
-Sorry, Alicia. i haven’t finished yet. In the circumstances, i’ll get on with other tasks and meet you in the ethereal departure lounge for some parting remarks on gnomes and international relations. Hope you can wait. Bye.
-David Clark
-Hi Alicia.
-About gnomes. At Martinmas, i feel quite safe when i think about them.
-Phew! So glad we managed to meet. It’s been foggy today and i reckon there is likely to be a delay. Air transport is currently quite contentious here. Many years ago, i handled airports and air transport in professional life. It always intrigued me that forecasts seemed so elastic and variable. Initially, i thought it was because aircraft could fly anywhere :-) After much reflection, i reckoned that this seeming inaccuracy was affected by technical innovation and the use of ICT. Very briefly, after a hiccup, innovations in computer technology enabled the design and development of larger aircraft. Quite a story actually, summarised in “Fundamentals of Aerodynamics” Fifth edition in SI units by John D. Anderson Jr. published by Mc Graw Hill. From my reading, the use of ICT is less evident as theory and more as application. More aircraft into the same airspace and safer flight.
-For me, Chapter 1 of Anderson’s book is especially interesting as it refers to the life and work of the late Geoffrey de Havilland. There is a memorial to him outside the University of Hertfordshire (former Hatfield College of Technology that i attended, While i digress, you may notice how intimately the world of computers is connected to life. Geoffrey de Havilland died when his aircraft hit the sound barrier and was destroyed. Later calculation and computer technology enabled advances in fluid mechanics that allowed design of faster, larger and safer aircraft.
-i will get round to talking about gnomes, promise.
-Reflecting once again on the St. Martin’s walk, i don’t think any complex introduction was needed. Very quickly, people realised that they were sharing a common experience through shared activity. Hopefully, some became conscious of that, especially those who, like myself were in the rear. What “concept” may be applied to these “percepts”? To start with, this has to be a matter of freedom – do i struggle with incarnation or prefer embodiment? do i really notice anything and/or wish to hurry home and watch the TV :-) Another question is whether my experience of the walk may be related to a concept of embodiment – would i prefer to be a passenger in the car, away from the mud?
-Sorry Alicia. i’m reminded of a closely related theme. During the Festival, i was especially touched by the subtler qualities of the event. Just skip the politics. Parents and children. Steiner parents? Give the guy a break! Are there no limits to worship of authority? Wag tail! To paraphrase my one of my daughter’s favourite expressions: “Leave him alone!” As an aside, Alicia, i’m all in favour of good animal care and connection. i suspect that you may know much more about elementals and reincarnation than i do. To be both practical and skeptical (is this possible:-))  i’m really wondering whether 1) anyone could have so many parents and 2) have surviving parents still alive now, so long after their offspring’s death. Certainly my Asian friends would laugh.
-Maybe it would be good to explore this further.
-sorry, i must stop for now. Just an inkling of where i’m coming from, ie my destiny connections. This background will become more important in connection with gnomes, i promise.-
-David Clark  B.Sc.(Econ.), M.Sc., M.R.T.P.I., C.M.I.L.T., M.R.I.N.
-David Clark
-·
-At last! It is a matter of public record that i do not believe in gnomes. So why not stop there? Well others’ beliefs and comments continue and i feel compelled to present a research account. Following other disciplines, I reckon this is OK. Now in 2012, I reckon this may be the best i can do.
-Firstly, to my credentials. Pretty atheist first degree, many years ago, Master’s in Property Development – finance, bricks and mortar; Town planner – economics, rights, bricks and mortar and air transport/aviation professional – noisy metal, use of sophisticated computing and lots of concrete. With this background, i tend to approach themes of elemental beings in a quite hard-boiled, skeptical sort of way. Yet, Martinmas somehow manages to intrigue me greatly. Still.
-Am i writing to fellow non-believers? How and why do you approach this difficult subject?
-Anyway, let’s set off. So far, no ducks. Looking at the Oxford English Dictionary (2nd, Ed. 1989) just now, i found a definition of “gnomometry” or gnome measurement. You’re right, i would have no ambitions in that direction. In passing, i saw in the 17 November NS – No..2891 p.p.46-49 an article “Deprive Yourself”. Thinking about gnomes, i’d agree, but i’m slightly concerned about the notion that “a simple measure could improve your health and brain functioning”.
-Aaarrgh!
-Yet i digress. My deep opposition to the idea is coming to the surface again. Tee .. Hee ..
-Aaarrgh! i really must get a grip!! :-)
-Initially, I would refer you to my sources:
-“Horse and Hound” 15 November 2012
-“Man as Symphony of the Creative Word” Twelve Lectures given in Dornach, Switzerland October 19th to November 11th (yes, that date again) pub. Rudolf Steiner Press, London in 1923 with caveat to readers on p.5
-“The Influence of Spiritual Beings upon Man” Eleven Lectures delivered in Berlin between January 6 (celebrated in various ways) and June 11 1908 pub Anthroposophic Press Inc. NY 1961 with preceding caveat to readers.
-What is your initial comment on this literature? Can perhaps hear something faintly in the distance?
-Aasrrgh!  Tee .. Hee …
-OK. My thoughts at this stage are:
-1. Rudolf Steiner’s perspective on elementals are clearly related to the human being – thanks presumably to the Editor/Publisher.
-2. The title of “Horse and Hound” does not refer to the human being (directly – think about it! again!)
-3. in “The Influence of Spiritual Beings on Man”, Rudolf Steiner defines what is effectively a research qiestion that relates to human beings and horses. Can i suggest that you look this up?
-Household tasks call. Back later. Sorry, more credentials.
-David Clark, M.Sc. (Cirencester), M.R.A.C.
-David Clark
-·
-Sorry. “Man as Symphony of the Creative Word” was published in 1970. This book contains lectures that were given in 1923. ‘Bye …
-David Clark
-Hi All,
-Interesting responses and challenging themes on what, after all, is a personal account of my own experience.
-Not yours. Mine.
-Absolutely no pressure accept or agree.
-That’s quite fine with me.
-Just seeking to communicate, seeking to link past and present. in this connection, i would note that my principal career history has not been pursued in anthroposophical contexts.
-By now, i have made it clear that expressions of difference are to be expected in research. To me, this is no surprise, although it may surprise some users of the web. Absolutely no surprises here. indeed, i reckon these expressions may be seen as part of a legitimate rights sphere. i’m here to read and respond.
-Anyway, i reckon it’s really good to share experiences. Somehow that’s quite authentic, liberating  and wholesome. Hopefully, you’ll agree.
-Perhaps surprisingly for some, the Journal noted above is not an anthroposophical one. This may not be a surprise for readers in the UK, for whom it may seem quite out of place, if not  controversial. Hopefully, they may choose to pick up a copy and have a look. It is quite relevant to the question as a scientific one. My selection of the (to me, quite secular) Journal derives from my personal connection with educators at the Royal Agricultural College Cirencester as a researcher.
-i first met the title while working with horse people at the grass roots element of the equestrian world. Yes, muddy boots, rural environment, conversations in the open air. Getting my hands and feet dirty. Absolutely nothing wrong with this at all. Great! Quite different to my previous technical role. My research project required me to engage with understanding their interest in equestrian matters for the College’s M.Sc.
-At that time, my greatest problem was that i’m a skeptical, technical professional at heart. At the time, that placed me in quite a difficult situation. For this reason, i’m not sure why anthroposophists are considered by some as a separate “breed”. The research placed me in a specific situation where i had to meet other people in a quite different situation. Actually, i reckon this was quite healthy. Good experience for a technical professional. The project had its biography. How is this non-anthroposophical context relevant? Am i missing something here? What’s the problem? What’s the point? i struggled to gain my M.Sc., not yours.
-For personal reasons, i didn’t choose this project, instead, it was passed to me. indeed, i faced externally given deadlines. i’ve stated my position already. What’s yours?
-To continue, as i grappled with this question, i signally failed to grasp what many expected. Why are horse people quite passionate about horses? Looking back, i now realise that there was an important methodological point. i had in fact largely spoken with “horse people” in lectures and conferences. Namely, when they had their feet on the ground or were away from their horses.
-Again back to my personal background as noted above. For me, the key theme was not at all that i was an anthroposophist. i was employed in secular activities, trying very much to make sense of life. You may not perhaps be so surprised that this was not a standard of judgement. indeed, i initially protested against pursuing this project. Others – you’ve guessed it – circumstances prevailed. The eventual point was that, as a skeptical, technical professional, i was struggling to discover a practical and sensible research methodology that was appropriate for the particular subject matter. Namely, local people. Not outsiders. i was definitely one in my inability to comprehend their non-bureaucratic, impassioned world. For a while, this was quite scary.
-While i noted few sources for the above enquiry, they were in hard copy, but are all publicly available. i reckon my personal thoughts on using search engines are by now now on record. The Journal is linked with countryside sport. Thus, i don’t expect “karma” to figure in any Boolean Search. Just imagine my own existential difficulties as 1) i strove to understand a totally alien area, 2) i had to meet others’ imposed deadlines, 3) i had to explain myself to people i actually met.
-Far from straightforward.
-Well, Alicia.
-For me, this has been a very special Martinmas Tide that i will remember and treasure for a long time.
-Prompted by the “Horse and Hound” article, i was prompted to use the Google Scholar search engine. i was very surprised to find many references to the “Gnomes of Zurich” and the very lively debate surrounding Harold Wilson’s original attribution of the term.
-In addition to being a Prime Minister in the UK, Harold Wilson was an Economist and Statistician educated at Oxford University. Many of these sources, skeptical or not, rely on mathematical economics. As you may guess, i’m slightly skeptical. Many of those that rely on its insights also believe that financial judgements can be characterised and understood by using computers.
-Following news of upcoming events in the Eurozone, you may have guessed that i am skeptical. That is why i’m pursuing an academically based research project.
-I reckon skepticism is fine. My problem is with the acceptance of difference.
-David Clark
-Hi Alicia,
-Alicia, Thanks.
-If you choose to moderate me out that’s quite fine by me. Here, you may quite legitimately be the guardian of public morality. Definitely not an ambition that i share. This mesage is as quarrelsome an an anthropopsophical meeting. Great.
-As you know, the sources listed refer to gnomes and their response to myself and other people. In modern parlance, i was modelling this in my writing. Annoying eh? Please remember i have been trying to respond to your interests. Not mine. Again, nobody asked. You will be interested to learn that the UK Sunday Times this week also has a highly relevant Magazine Section.
-Again, nobody asked me whether i believed in gnomes. I see no reason not to do so, but im awaiting proof either way. I reckon this is a robustly skeptical view. OK, i’m still looking – that is the burden of my reference to sources. I spent several years and put my career on the line, at the same time open to others’ criticism. Yes, research and enquiry may be maddening. On this subject, i’ve great respect for a lady in Scotland who is quite widely known for her efforts and also subject to harsh criticism.
-Again, i’m very happy to short circuit your investigations by contributing my own understanding and explaining it.
-I reckon this is the way investigation should work. Present findings and then explain them. Debate.
-I will be away for the rest of today and will attempt to respond tomorrow with my conclusions. Not those of others. But mine. For those, I will take responsibility.
-Just in case I’m moderated out, best to All.
-It’s perhaps your call now Alicia.
-David
-·
-David, the fact that you’re jumping between threads and seemingly posting your comments randomly in this thread and the karma thread doesn’t actually make it less confusing. Now you’re apparently responding to the other thread, yet placing your comment here. I don’t understand it. I’m going to reply there.
-David Clark
-Hi Curt,
-I’ve not forgotten your intriguing message – it may take a little time to respond, but I’ll be back. Initially, I’m thinking about facets of Napoleonic history and the redevelopment of Paris.
-Greetings
-David
-Hi Alicia,
-Sorry. I don’t understand the message. Please explain if it relates to me. I’m confused.
-Scrolling back, I had remembered an item from an earlier part of this thread and was picking it up.
-Apologies, I don’t do Internet acronyms.
-Greetings,
-David
-·
-I’m even more confused. I can’t even imagine what anything of this has to do with ‘Napoleonic history and the redevelopment of Paris’!
-David Clark
-St. Martin’s Shrine
-Please let me know if there is a blogging convention that I’ve missed.
-Merely trying to engage
-·
-Sorry, David, I actually only remembered the stuff that had to do with martinmas celebrations in Steiner schools… and had forgotten Curt’s mention of cathedrals, destruction and Napoleon. I suppose it was because I had no idea why the shrine was destroyed and why it would be important.
-David Clark
-·
-That’s fine Alicia. At this time, I don’t know the answer either. Just setting out the current directions of my researches, hoping to re-establish contact. These early thoughts may change. Over the winter, I’ll do a little digging – and reading :-) Thanks for connecting.
-Hollywood Tomfortas
-·
-David Clark, sir!  I must interrupt these august (actually November) proceedings at the Ethereal Kiosk to acknowledge and honor your extraordinary and proficient abilities to weave a magical web of obfuscatory non sequiturs all over Alicia’s already sprawling blog.  David, sir, I must say that we at the Kiosk are in the presence of a gifted genius of a fine stage magician whose deft sleight of hand at scholarly misdirection is first rate! Bravo, Sir David, bravo!
-Moreover, Sir David, sir, you are able to take us all on the internet equivalent of a “magic carpet ride,” which I would like to re-christen here as a “Magic Tangent Ride.”  Nay, having suddenly been inspired by the Beatles, I shall now call it the “Magical Obliquity Tour.”
-And here is where I see your value — not only to the Anthroposophical Society at the Goetheanum — but more directly and effectively in your native land of the UK where The Frome Steiner school initiative is under such heavy attack from that heaving horde of grousing blinkered Waldorf-Steiner critics.
-Sir David, it is my unyielding belief that you would so discomfit and confound that sullen horde with your resplendent obfsucatory drollness that I encourage you to volunteer immediately for the position of public relations spokesman for the Frome school initiative.
-Sir David, I also believe that you may be well nigh the British equivalent of the amazing American master of karmi-cosmi-comic erudition, Professor Irwin Corey, who is still with us today at age 98. Please consult his biography here:
-Indeed, I can only wax lyrical and musical here at the conclusion of my paean to your irresistibly discombobulating wit, Sir David. So I shall select a most appropriate song from a favorite British rock band of my teenage years in New York City, a group that is, astonishingly enough, named after you! Imagine that!
-I mean of course, The Dave Clark Five here singing their hit song from 1965, “Catch us if you can,” a song which I heartily suggest you establish as a thrilling anthem for the Frome Steiner Academy as they try to outwit and outmaneuver the monomaniacal hordes of Waldorf and Steiner critics who dare to dash their plans for such a Steiner freeschool in the UK.
-Sir David Clark, I dedicate this song to you, sir —- as you run linguistic interference for the Frome Steiner Academy against the Steiner-Waldorf critics, daring them to:  “Catch us if you can!”
-Hollywood Tomfortas
-·
-‘Sir David, it is my unyielding belief that you would so discomfit and confound that sullen horde with your resplendent obfsucatory drollness that I encourage you to volunteer immediately for the position of public relations spokesman for the Frome school initiative.’
-I think you’re absolutely right, Tom.
-David Clark
-Hi Alicia. Hi Tom,
-Of necessity my latest comments concerning abuse are on another thread, where in my view they belong and others may read them. How is that a problem? Are you suggesting that I’m not concerned with these extremely serious and weighty matters? Explain. Now.
-Lovely, witty comments. Gosh! As you may guess, I’ve never heard that linguistic and rhetorical joke before :-) Droll. As you may guess, I didn’t listen to the extract on You Tube. Thanks anyway.
-I hear you. This may all be a distant rumour. We’ve never met.
-At least you engage. Many thanks. Others do (can) not, even though some are closer. Pity that. I’m now beginning to wonder why.
-Sorry, you’ve got me wrong. Currently, I’ve no connections with Frome, except potentially as a UK taxpayer. I have no pecuniary, personal, or professional ambitions in that direction. By now you will know about my adult education role. Do you have any interests to declare?
-As you may guess, I’m no fan of public relations and as you may see, I lead a busy enough life already. How about you?
-Over the winter months, I’ll be enjoying a “magical tangent ride” as I read my chosen book in between other matters. I also reckon it’s OK to pursue a historical investigation in my spare time. These are personal choices.
-Greetings,
-David
-Melanie
-“magical web of obfuscatory non sequiturs …Magic Tangent Ride…heavy attack from that heaving horde of grousing blinkered Waldorf-Steiner critics…volunteer immediately for the position of public relations spokesman for the Frome school initiative.”
-Worthy of your Buddha at the Jet Propulsion Lab and Drag Queens at LA (Peter Staudenmaier and I) days on critics, Tom! Cracked me up similarly. Thanks (the smaller BSM pumpkin head gnome quip on quacks was nearly as funny).
-Ted Wrinch
-·
-BTW, Tom, is this Dadaesque, life as theatre of the absurd, play one end against the other, theistic atheism, your last word on life’s riddles and meaning, do you think? I think laughter is all very well but a poor second fiddle to thinking (especially as life’s great, dark, cliff edge starts to loom in the distance).
-·
-‘Of necessity my latest comments concerning abuse are on another thread, where in my view they belong and others may read them. How is that a problem? Are you suggesting that I’m not concerned with these extremely serious and weighty matters? Explain. Now.’
-I’m not Tom, and I can’t explain why he chose this thread over another thread to respond in. (Also, I’m not very keen on that demanding tone: ‘Explain. Now.’ I don’t have any such duties. Thank you very much.)
-I assume that Tom has noted that you’ve posted (at least partly) incomprehensible comments on a large number of posts. And he then pretty randomly chose a thread to respond in (or make jokes about it in).
-But he’s right. Your comment in the abuse thread was, like so many other comments you’ve posted on other threads, incomprehensible. It wasn’t even possible to know what ‘extremely serious and weighty matter’ you were addressing, if any at all. At least I didn’t understand it.
-This comment of yours is equally incomprehensible. What does passages like these even mean? What are you trying to convey?
-‘Lovely, witty comments. Gosh! As you may guess, I’ve never heard that linguistic and rhetorical joke before :-) Droll. As you may guess, I didn’t listen to the extract on You Tube. Thanks anyway.
-I hear you. This may all be a distant rumour. We’ve never met.’
-I have absolutely no idea. It makes no sense. Seemingly, it’s words piled up without context, without coherence, without meaning — it’s not even possible to know who you’re talking to. Yourself, me, us, someone here?
-‘Sorry, you’ve got me wrong. Currently, I’ve no connections with Frome, except potentially as a UK taxpayer. I have no pecuniary, personal, or professional ambitions in that direction. By now you will know about my adult education role. Do you have any interests to declare?’
-Tom pointed it out as a possibility for humorous reasons. I think you should become the press speaker for the entire SWSF, though.
-Your involvement in Steiner study groups for parents was extremely easy to discover through a google search. No need for you to exhort anyone else to ‘declare their interests’ because you’re pissed that the rest of us know how to type ‘david clark steiner school’ into the google search bar.
-·
-‘Laughter means distance. Where laughter is absent, madness begins. The moment one takes the world with complete seriousness one is potentially insane.’ (Jens Bjørneboe)
-Ted Wrinch
-·
-“‘Laughter means distance. Where laughter is absent, madness begins. The moment one takes the world with complete seriousness one is potentially insane.’ (Jens Bjørneboe)”
-Oh, all right!
-·
-Bjørneboe is the best. He might be the sanest of anthroposophists, ever.
-Ted Wrinch
-·
-I’ve heard that (Tarjei is a big fan). Times like this make me wish I was better linguist (I’m considering going back to school for German with Rossetta Stone).
-Ted Wrinch
-“American master of karmi-cosmi-comic erudition, Professor Irwin Corey, who is still with us today at age 98″
-This reminds me of Tom’s characterisation of me on critics as a “failed lounge singer”, after another American comedy icon, who, since I’m not American, I don’t remember the name of. However, the idea was that the guy played a lounge singer who was so bad and pathetic that he parodied himself and became funny in a tragi-comic manner. I think Tom thought the parallel was with the quality of my argumentation for some reason…
-·
-Thanks. Ah, yes, I remember the America quote -must be from Tarjei’s influence. I’ll take a look at some more, which also looks familiar, around the edges at least.
-Hollywood Tomfortas
-Ted,
-It was the late great comedian Andy Kaufman who created a real life alter ego, the terrible lounge singer Tony Clifton. Here’s the WC post I made from 2 years ago. Does the shoe still fit?
-·
-I don’t know, Tom – did it then? Maybe, sort of –  I was playing a role (whilst trying to learn the ‘game of polemics’). Maybe this fitted:
-“Many people misunderstood Kaufman’s intent, focusing on the character’s foul language and prima donna antics while failing to appreciate the fact that Clifton was meant to be the comic antithesis of the typical lounge
-singer, a bland, genial entertainer designed to add a touch of class to a hotel and make guests feel welcome.”
-If for ‘bland, genial entertainer’ we substitutes ‘politico, polemical academic’.
-'Perhaps humankind can't bear too much reality, but neither can it bear too much unreality, too much abuse of the truth.' (Saul Bellow)
-'448 OMAR KHAYYÁM Omar had a personality; I, for better or worse, have none. In an hour I’ll have strayed from what I am at this moment; tomorrow I’ll have forgotten what I am today. Those who are who they are, like Omar, live in just one world, the external one. Those who aren’t who they are, like me, live not only in the external world but also in a diversified, ever-changing inner world. Try as we might, we could never have the same philosophy as Omar’s. I harbour in me, like unwanted souls, the very philosophies I criticize. Omar could reject them all, for they were all external to him, but I can’t reject them, because they’re me.' (F Pessoa)
-'Mrs Glass looked over, abstractedly, at the blue bathmat, across the tiled floor. Zooey stood as still as possible, in order not to break her mood. "You can't live in the world with such strong likes and dislikes," Mrs Glass said to the bathmat, then turned again toward Zooey and gave him a long look, with very little, if any, morality in it. "Regardless of what you may think, young man," she said.' (JD Salinger)
-'Art only begins where imitation ends.' (Oscar Wilde)
-'"I like zooey's blog," Steiner would say, "It's the only internet site with a foyer. Saul and I often meet there, by the ethereal kiosk. The ice-cream is splendid."' (ThetisMercurio)
-'What is the use of telling people repeatedly that the Society is not a sect and then behave as if it were one?' (Steiner)
-'Laughter means distance. Where laughter is absent, madness begins. The moment one takes the world with complete seriousness one is potentially insane.' (Jens Bjørneboe)
-'If you want to tell people the truth, make them laugh, otherwise they'll kill you.' (Oscar Wilde)
-'Let's act like sphinxes, however falsely, until we reach the point of no longer knowing who we are. For we are, in fact, false sphinxes, with no idea of what we are in reality. The only way to be in agreement with life is to disagree with ourselves. Absurdity is divine.' (F Pessoa)
-my photos on flickr
-the posts on this blog are written by alicia hamberg, with the guidance of mr dog, the canineosophist, and with inspiration from rudolf steiner, the anthroposophist, and the rest of our friends, people, dogs and strange beings who hang out with us in this remarkable ethereal kiosk
-comments & discussion
-[2 july, 2013: comments closed on most threads. If you need to contact me, please e-mail zzzooey@gmail.com.]   Comments in swedish, norwegian, danish, english, german are very welcome and much appreciated; and even though I do understand some french, spanish, dutch and italian, I prefer the aforementioned five languages. As a side-note: I eat food, not anthroposophists. And I'm not half as evil as you might think.
-rss
-search
-tags
-Join 759 other followers
-Email check failed, please try again
-Sorry, your blog cannot share posts by email.
diff --git a/success-rates/articles/goose/gen.py b/success-rates/articles/goose/gen.py
deleted file mode 100644
index ed69b3f..0000000
--- a/success-rates/articles/goose/gen.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import sys
-from goose import Goose
-from os import listdir
-import codecs
-
-def main():
-  contents = sys.argv[1]
-  goose = Goose()
-  for url in listdir(contents):
-    print url
-    with codecs.open(url, "w", encoding="utf-8") as out:
-      try:
-        extracted = goose.extract(url=url.replace("{", "/"))
-        out.write(extracted.cleaned_text)
-      except IOError:
-        out.write("")
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/articles/goose/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/success-rates/articles/goose/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index be823fc..0000000
--- a/success-rates/articles/goose/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1,13 +0,0 @@
-This is a tradition I don’t think I’ve mentioned on the blog before. It is — as far as I can tell — less important than michaelmas, but that’s not to say it’s unimportant. It’s basically the waldorf take on an old european tradition. The children usually make their own lanterns and then — on a dark afternoon or evening, usually on the 11th of November (three days after St Martin’s day of death, chew that anthroposophical chew-bone!) — walk in procession carrying their lanterns while singing. Anthroposophically speaking, what can be better than the pentagon-dodecahedron lantern with its neat pentagram stars?
-
-I urge you to look up the dodecahedron and the foundation stone (in the context of anthroposophy). And the importance of pentagrams in anthroposophy. However, I shall not delve into the spiritual symbolism and significance of the geometrical shapes of lanterns. You don’t actually need to have the dodecahedron, although it is interesting to note — given the anthroposophical meaning of them — the presence of dodecahedron lanterns. (They’re too advanced for kindergarten kids to make. So there are several types of lanterns. Round, cylindrical, even squares; sometimes coloured silk papers glued together very simply into globes…)
-
-Instead I want to share with you a recent article in German waldorf education magazine Erziehungskunst. It deals with this November celebration. I assure you, who don’t read German, that it is worth running this article through google translate!
-
-So kann das einfache Kinderlied: »Ich geh mit meiner Laterne / und meine Laterne mit mir« – zum Lebensmotto werden: Man trägt das Ziel, dem man folgen will, selbstgesetzt vor sich her! Das Laternenlicht wird zum Bild für den inneren Leitstern. Es ist berührend, die jüngeren Kinder ihr »Licht-Ich« vor sich her tragen zu sehen: Man weiß zuweilen nicht, ob die Laterne vom Kind getragen oder ob dieses vom vorangehenden Licht gezogen wird. Ist es mit den Idealen im Leben nicht ebenso?
-
-I think that (the child being ‘pulled’ by the light rather than the child carrying the light) is a subtle reference to reinkarnation and karma.
-
-The ideal self is, supposedly, the reincarnating spirit. The eternal core, with its cosmic connections. The reference to a harmony of the spheres is pure anthro-speak, too. Which again sets Erziehungskunst apart — on the one hand, they fail to explain some things and remain anthroposophically obscure, on the other: at least they use the concepts, they mention the ideas. They don’t completely ignore that this element of anthroposophical spirituality is a vital part of waldorf education. And should be, if the education is to be called ‘waldorf’.
-
-I don’t need to tell you how anthroposophical this is, do I? The struggle of the eternal human spirit in a dark world where sinister forces battle for domination. Ahriman, Lucifer, materialism, intellectualism, et cetera. Of course, waldorf education is there to protect children from such detrimental influences of this world during their incarnation process, that is, during the time when they grow up…
\ No newline at end of file
diff --git a/success-rates/articles/readability/gen.py b/success-rates/articles/readability/gen.py
deleted file mode 100644
index 2c03c7f..0000000
--- a/success-rates/articles/readability/gen.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import sys
-from lxml.html.clean import Cleaner
-from os import listdir
-from re import sub as resub
-from readability.readability import Document
-from urllib2 import urlopen, HTTPError
-import codecs
-
-def main():
-  contents = sys.argv[1]
-  for url in listdir(contents):
-    print url
-    with codecs.open(url, "w", encoding="utf-8") as out:
-      try:
-        html = urlopen(url.replace("{", "/")).read()
-        out.write((Document(html).summary()))
-      except HTTPError:
-        out.write("")
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/articles/readability/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/success-rates/articles/readability/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index 7aa546a..0000000
--- a/success-rates/articles/readability/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1,13 +0,0 @@
-<div> All with lighted lanterns, adults and children gathered in a corner of the school site. Slightly embarrassed parents and restless children. Before setting out, one of the teachers outlined the suggested process following song and careful walking. We (struggled) to practice songs and then set out.
-Well, I can only reflect on my observations. Gradually, a hush descended on us all as the parents became increasingly attentive to their children. An amazing mood of gentle caring and concern gradually opened up, demonstrated by (unhurried and uncritical attention) to mud and clothes for example. At the same time, the children could give voice to their own direct experiences. You may know the paintings of Joseph Wright of Derby. These give a pale image of what could be discovered then.
-This, people were left quite free to make their own discoveries. Interestingly, a child within earshot saw various electrically powered lights on houses, a car and a bicycle (on a public road) and commented “They’re cheating” on several occasions.
-As an adult, I’m surprised and disappointed at the rapid fading of such experiences into memory. Speaking personally, i spend much more time in the company of other human beings and sunlight than i do in the world of experiment. For personal reasons, I reckon my connection with technology has been rather closer…
-*sip” Do you have another of those ice creams, Alicia? Great. Thanks. i can see it is getting darker and we will soon need to pack up leave in our separate directions. Ah! Problem. i can only pay you in ethereal £. Did you expect to receive euros?
-So, to sum up, i reckoned one aspect of the St. Martin’s Festival was a celebration among human beings. Somehow, this manifest and subtle dimension is often neglected in life.
-Striving to promote the well-being of vulnerable people, i’m frequently caught up with contradictions in “care”. While health professionals may use information from the British National Formulary to support their clinical decisions, this “digest for rapid reference”. As noted, in p. iii of the September 2010 edition: “The BNF should be interpreted in the light of professional knowledge and supplemented as necessary by specialised publications and by reference to the product literature.”
-This statement may be taken widely as a sensibly safe and conservative view of the academic, professional and scientific position. Yet, once again, what happens next, following references to the BNF? Well, much of this accepted usage lies in a carefully controlled human domain. Is mental health different? Fortunately for me as a consumer, the BNF gives careful, highly detailed and technical information about products.
-Clearly, such explanations provide an essential basis for scientific medicine and support appropriate innovation. Several years ago, i applied for registration at the then London University School of Pharmacy to pursue postgraduate research into themes of exercise and effectiveness as relating to treatment and effectiveness. At that time, I was frustrated that my application was unsuccessful. Having reflected for several years, i have concluded that this evidence points to the possibility that the “human” dimension is excluded from what i may call the “bnf.org” approach. Of course, I accept that the situation may have changed since 2010.
-To me, this seems very well until the dimension of polypharmacy is considered. Here, i should make clear my own situation. While a social scientist and not a health professional, this theme was brought to my notice several years ago by a health professional. Aware of my advocacy activities, he suggested that i should carry our research into “polypharmacy” and “treatment and recovery”. Having done this, i wonder whether the biographical (in vivo?) aspect is accounted for in the same way as the statistical aspect.
-In many ways, this awareness of boundaries would also suggest agreement upon limitations. For example in England-UK, media coverage of a recent NICE decision sparked some interest. By removing recognition of exercise from its remit, it was seen as acting out of harmony with general opinion. Yet, accepting the above method, the decision is quite consistent. While not qualified to say so as David Clark, this does not seem in any way to be “improbable science”.
-Yet, i can still hear the TV announcer say “But what happens next?” A great deal of discipline and rigour have been dedicated towards ensuring the effectiveness and safety of medicines. Clearly, one can only be pleased that such endeavours continue. Yet some vulnerable people have a complex biographical and product history in this area. From experience, i know that they struggle in many ways, some in long term institutions. Looking in from outside, i reckon exercise and fresh air in various forms may enliven. Sometimes, i’m saddened that justified recognition of clinical standards may be accompanied by this more challenging human dimension.
-Sorry, Alicia. i haven’t finished yet. In the circumstances, i’ll get on with other tasks and meet you in the ethereal departure lounge for some parting remarks on gnomes and international relations. Hope you can wait. Bye. </div>
\ No newline at end of file
diff --git a/success-rates/crawler/articles/.gitignore b/success-rates/crawler/articles/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/success-rates/crawler/articles/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/success-rates/crawler/bibcrawl/pipelines/outpropagate.py b/success-rates/crawler/bibcrawl/pipelines/outpropagate.py
deleted file mode 100644
index eb693ad..0000000
--- a/success-rates/crawler/bibcrawl/pipelines/outpropagate.py
+++ /dev/null
@@ -1,29 +0,0 @@
-"""OutPropagate"""
-from bibcrawl.utils.fixbadunicode import fix_bad_unicode
-from bibcrawl.utils.stringsimilarity import cleanTags
-
-class OutPropagate(object):
-  """
-  @type  item: bibcrawl.model.postitem.PostItem
-  @param item: the item to process
-  @type  spider: scrapy.spider.BaseSpider
-  @param spider: the spider that emitted this item
-  @rtype: bibcrawl.model.postitem.PostItem
-  @return: the processed item
-  """
-  def process_item(self, item, spider):
-    import codecs
-
-    path = "titles/" + item.url.replace("/", "{")
-    spider.logInfo(path)
-    nicecontent = fix_bad_unicode(cleanTags(item.title))
-    with codecs.open(path , "w", encoding="utf-8") as out:
-      out.write(nicecontent)
-
-    path = "articles/" + item.url.replace("/", "{")
-    spider.logInfo(path)
-    nicecontent = fix_bad_unicode(cleanTags(item.content))
-    with codecs.open(path , "w", encoding="utf-8") as out:
-      out.write(nicecontent)
-
-    spider.logInfo("DONE:" + item.url)
diff --git a/success-rates/crawler/bibcrawl/run.py b/success-rates/crawler/bibcrawl/run.py
deleted file mode 100644
index faceee8..0000000
--- a/success-rates/crawler/bibcrawl/run.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""main"""
-
-from bibcrawl.spiders.newcrawl import NewCrawl
-from bibcrawl.spiders.updatecrawl import UpdateCrawl
-from bibcrawl.spiders.evalcrawl import EvalCrawl
-from scrapy import signals
-from scrapy.crawler import Crawler
-from scrapy.settings import Settings
-from twisted.internet import reactor
-from datetime import date, timedelta, datetime
-from scrapy import log
-import sys
-
-def stop_reactor():
-  """Stops the twistedreactor."""
-  reactor.stop()
-
-def startSpider(spider):
-  pass
-
-def main():
-  """Crawler entry point."""
-  settings = Settings({
-      "ITEM_PIPELINES": [
-          # 'bibcrawl.pipelines.renderjavascript.RenderJavascript',
-          'bibcrawl.pipelines.processhtml.ProcessHtml',
-          # 'bibcrawl.pipelines.timeextrator.TimeExtrator',
-          # 'bibcrawl.pipelines.downloadimages.DownloadImages',
-          # 'bibcrawl.pipelines.downloadfeeds.DownloadFeeds',
-          # 'bibcrawl.pipelines.extractcomments.ExtractComments',
-          # 'bibcrawl.pipelines.backendpropagate.BackendPropagate',
-          'bibcrawl.pipelines.outpropagate.OutPropagate',
-      ],
-      "HTTPCACHE_POLICY": "scrapy.contrib.httpcache.DummyPolicy",
-      "HTTPCACHE_STORAGE": "scrapy.contrib.httpcache.FilesystemCacheStorage",
-      "HTTPCACHE_ENABLED": True,
-      "FILES_STORE": "img",
-
-      # "CONCURRENT_ITEMS": 1,
-      "STATS_DUMP": False,
-      "LOG_LEVEL": "DEBUG",
-      # "CONCURRENT_REQUESTS": 1,
-      # "CONCURRENT_REQUESTS_PER_DOMAIN": 1,
-      # "CONCURRENT_REQUESTS_PER_IP": 1
-  })
-
-  # Need test cases for this one: letitcrash.com
-  # techcrunch.com
-  # keikolynn.com
-
-  # spider = NewCrawl(domain="korben.info", maxDownloads=500)
-  # spider = UpdateCrawl(
-  #   startAt="http://korben.info/feed",
-  #   domain="korben.info",
-  #   since=datetime.now() - timedelta(days=1))
-
-  spider = EvalCrawl(startAt="http://" + sys.argv[1])
-  # spider = NewCrawl(startAt="http://www.quantumdiaries.org/", maxDownloads=5000)
-
-  crawler = Crawler(settings)
-
-  crawler.signals.connect(reactor.stop, signals.spider_closed)
-  crawler.signals.connect(reactor.getThreadPool().stop, signals.spider_closed)
-  crawler.configure()
-  crawler.crawl(spider)
-  crawler.start()
-  log.start()
-  reactor.run()
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/crawler/bibcrawl/spiders/evalcrawl.py b/success-rates/crawler/bibcrawl/spiders/evalcrawl.py
deleted file mode 100644
index 8e093e5..0000000
--- a/success-rates/crawler/bibcrawl/spiders/evalcrawl.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""EvalCrawl"""
-
-from bibcrawl.model.postitem import PostItem
-from bibcrawl.utils.priorityheuristic import PriorityHeuristic
-from bibcrawl.utils.ohpython import *
-from bibcrawl.utils.parsing import buildUrlFilter, parseHTML
-from bibcrawl.utils.parsing import extractLinks
-from scrapy.http import Request
-from bibcrawl.spiders.rsscrawl import RssCrawl
-from twisted.internet import reactor
-from os import listdir
-
-class EvalCrawl(RssCrawl):
-  """EvalCrawl"""
-
-  def __init__(self, startAt):
-    super(self.__class__, self).__init__(startAt)
-
-  def handleRssEntries(self, posts):
-    return imap(
-      lambda _: Request(
-        url=_.replace("{", "/"),
-        meta={ "u": _.replace("{", "/") },
-        dont_filter=True,
-        errback=self.error,
-        callback=self.crawl),
-      ifilter(
-        lambda _: self.allowed_domains[0] in _,
-        listdir("../blogforever-crawler-publication/dataset/contents/")))
-
-  def crawl(self, response):
-    self.logInfo("START:" + response.meta["u"])
-    parsedBody = parseHTML(response.body)
-    return PostItem(url=response.meta["u"], parsedBodies=(parsedBody,))
-
-  def error(self, failure):
-    self.logInfo("ERROR:" + str(failure))
-    from scrapy.contrib.spidermiddleware.httperror import HttpError
-    if isinstance(failure.value, HttpError):
-      response = failure.value.response
-      return self.crawl(response)
diff --git a/success-rates/crawler/bibcrawl/utils/fixbadunicode.py b/success-rates/crawler/bibcrawl/utils/fixbadunicode.py
deleted file mode 100644
index 95ef8b5..0000000
--- a/success-rates/crawler/bibcrawl/utils/fixbadunicode.py
+++ /dev/null
@@ -1,326 +0,0 @@
-# Source; http://blog.luminoso.com/2012/08/20/fix-unicode-mistakes-with-python/
-# -*- coding: utf-8 -*-
-
-import unicodedata
-
-def fix_bad_unicode(text):
-    u"""
-    Something you will find all over the place, in real-world text, is text
-    that's mistakenly encoded as utf-8, decoded in some ugly format like
-    latin-1 or even Windows codepage 1252, and encoded as utf-8 again.
-
-    This causes your perfectly good Unicode-aware code to end up with garbage
-    text because someone else (or maybe "someone else") made a mistake.
-
-    This function looks for the evidence of that having happened and fixes it.
-    It determines whether it should replace nonsense sequences of single-byte
-    characters that were really meant to be UTF-8 characters, and if so, turns
-    them into the correctly-encoded Unicode character that they were meant to
-    represent.
-
-    The input to the function must be Unicode. It's not going to try to
-    auto-decode bytes for you -- then it would just create the problems it's
-    supposed to fix.
-
-        >>> print fix_bad_unicode(u'Ãºnico')
-        único
-
-        >>> print fix_bad_unicode(u'This text is fine already :þ')
-        This text is fine already :þ
-
-    Because these characters often come from Microsoft products, we allow
-    for the possibility that we get not just Unicode characters 128-255, but
-    also Windows's conflicting idea of what characters 128-160 are.
-
-        >>> print fix_bad_unicode(u'This â€” should be an em dash')
-        This — should be an em dash
-
-    We might have to deal with both Windows characters and raw control
-    characters at the same time, especially when dealing with characters like
-    \x81 that have no mapping in Windows.
-
-        >>> print fix_bad_unicode(u'This text is sad .â\x81”.')
-        This text is sad .⁔.
-
-    This function even fixes multiple levels of badness:
-
-        >>> wtf = u'\xc3\xa0\xc2\xb2\xc2\xa0_\xc3\xa0\xc2\xb2\xc2\xa0'
-        >>> print fix_bad_unicode(wtf)
-        ಠ_ಠ
-
-    However, it has safeguards against fixing sequences of letters and
-    punctuation that can occur in valid text:
-
-        >>> print fix_bad_unicode(u'not such a fan of Charlotte Brontë…”')
-        not such a fan of Charlotte Brontë…”
-
-    Cases of genuine ambiguity can sometimes be addressed by finding other
-    characters that are not double-encoding, and expecting the encoding to
-    be consistent:
-
-        >>> print fix_bad_unicode(u'AHÅ™, the new sofa from IKEA®')
-        AHÅ™, the new sofa from IKEA®
-
-    Finally, we handle the case where the text is in a single-byte encoding
-    that was intended as Windows-1252 all along but read as Latin-1:
-
-        >>> print fix_bad_unicode(u'This text was never Unicode at all\x85')
-        This text was never Unicode at all…
-    """
-    if not isinstance(text, unicode):
-        raise TypeError("This isn't even decoded into Unicode yet. "
-                        "Decode it first.")
-    if len(text) == 0:
-        return text
-
-    maxord = max(ord(char) for char in text)
-    tried_fixing = []
-    if maxord < 128:
-        # Hooray! It's ASCII!
-        return text
-    else:
-        attempts = [(text, text_badness(text) + len(text))]
-        if maxord < 256:
-            tried_fixing = reinterpret_latin1_as_utf8(text)
-            tried_fixing2 = reinterpret_latin1_as_windows1252(text)
-            attempts.append((tried_fixing, text_cost(tried_fixing)))
-            attempts.append((tried_fixing2, text_cost(tried_fixing2)))
-        elif all(ord(char) in WINDOWS_1252_CODEPOINTS for char in text):
-            tried_fixing = reinterpret_windows1252_as_utf8(text)
-            attempts.append((tried_fixing, text_cost(tried_fixing)))
-        else:
-            # We can't imagine how this would be anything but valid text.
-            return text
-
-        # Sort the results by badness
-        attempts.sort(key=lambda x: x[1])
-        #print attempts
-        goodtext = attempts[0][0]
-        if goodtext == text:
-            return goodtext
-        else:
-            return fix_bad_unicode(goodtext)
-
-
-def reinterpret_latin1_as_utf8(wrongtext):
-    newbytes = wrongtext.encode('latin-1', 'replace')
-    return newbytes.decode('utf-8', 'replace')
-
-
-def reinterpret_windows1252_as_utf8(wrongtext):
-    altered_bytes = []
-    for char in wrongtext:
-        if ord(char) in WINDOWS_1252_GREMLINS:
-            altered_bytes.append(char.encode('WINDOWS_1252'))
-        else:
-            altered_bytes.append(char.encode('latin-1', 'replace'))
-    return ''.join(altered_bytes).decode('utf-8', 'replace')
-
-
-def reinterpret_latin1_as_windows1252(wrongtext):
-    """
-    Maybe this was always meant to be in a single-byte encoding, and it
-    makes the most sense in Windows-1252.
-    """
-    return wrongtext.encode('latin-1').decode('WINDOWS_1252', 'replace')
-
-
-def text_badness(text):
-    u'''
-    Look for red flags that text is encoded incorrectly:
-
-    Obvious problems:
-    - The replacement character \ufffd, indicating a decoding error
-    - Unassigned or private-use Unicode characters
-
-    Very weird things:
-    - Adjacent letters from two different scripts
-    - Letters in scripts that are very rarely used on computers (and
-      therefore, someone who is using them will probably get Unicode right)
-    - Improbable control characters, such as 0x81
-
-    Moderately weird things:
-    - Improbable single-byte characters, such as ƒ or ¬
-    - Letters in somewhat rare scripts
-    '''
-    assert isinstance(text, unicode)
-    errors = 0
-    very_weird_things = 0
-    weird_things = 0
-    prev_letter_script = None
-    for pos in xrange(len(text)):
-        char = text[pos]
-        index = ord(char)
-        if index < 256:
-            # Deal quickly with the first 256 characters.
-            weird_things += SINGLE_BYTE_WEIRDNESS[index]
-            if SINGLE_BYTE_LETTERS[index]:
-                prev_letter_script = 'latin'
-            else:
-                prev_letter_script = None
-        else:
-            category = unicodedata.category(char)
-            if category == 'Co':
-                # Unassigned or private use
-                errors += 1
-            elif index == 0xfffd:
-                # Replacement character
-                errors += 1
-            elif index in WINDOWS_1252_GREMLINS:
-                lowchar = char.encode('WINDOWS_1252').decode('latin-1')
-                weird_things += SINGLE_BYTE_WEIRDNESS[ord(lowchar)] - 0.5
-
-            if category.startswith('L'):
-                # It's a letter. What kind of letter? This is typically found
-                # in the first word of the letter's Unicode name.
-                name = unicodedata.name(char)
-                scriptname = name.split()[0]
-                freq, script = SCRIPT_TABLE.get(scriptname, (0, 'other'))
-                if prev_letter_script:
-                    if script != prev_letter_script:
-                        very_weird_things += 1
-                    if freq == 1:
-                        weird_things += 2
-                    elif freq == 0:
-                        very_weird_things += 1
-                prev_letter_script = script
-            else:
-                prev_letter_script = None
-
-    return 100 * errors + 10 * very_weird_things + weird_things
-
-
-def text_cost(text):
-    """
-    Assign a cost function to the length plus weirdness of a text string.
-    """
-    return text_badness(text) + len(text)
-
-#######################################################################
-# The rest of this file is esoteric info about characters, scripts, and their
-# frequencies.
-#
-# Start with an inventory of "gremlins", which are characters from all over
-# Unicode that Windows has instead assigned to the control characters
-# 0x80-0x9F. We might encounter them in their Unicode forms and have to figure
-# out what they were originally.
-
-WINDOWS_1252_GREMLINS = [
-    # adapted from http://effbot.org/zone/unicode-gremlins.htm
-    0x0152,  # LATIN CAPITAL LIGATURE OE
-    0x0153,  # LATIN SMALL LIGATURE OE
-    0x0160,  # LATIN CAPITAL LETTER S WITH CARON
-    0x0161,  # LATIN SMALL LETTER S WITH CARON
-    0x0178,  # LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017E,  # LATIN SMALL LETTER Z WITH CARON
-    0x017D,  # LATIN CAPITAL LETTER Z WITH CARON
-    0x0192,  # LATIN SMALL LETTER F WITH HOOK
-    0x02C6,  # MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC,  # SMALL TILDE
-    0x2013,  # EN DASH
-    0x2014,  # EM DASH
-    0x201A,  # SINGLE LOW-9 QUOTATION MARK
-    0x201C,  # LEFT DOUBLE QUOTATION MARK
-    0x201D,  # RIGHT DOUBLE QUOTATION MARK
-    0x201E,  # DOUBLE LOW-9 QUOTATION MARK
-    0x2018,  # LEFT SINGLE QUOTATION MARK
-    0x2019,  # RIGHT SINGLE QUOTATION MARK
-    0x2020,  # DAGGER
-    0x2021,  # DOUBLE DAGGER
-    0x2022,  # BULLET
-    0x2026,  # HORIZONTAL ELLIPSIS
-    0x2030,  # PER MILLE SIGN
-    0x2039,  # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A,  # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC,  # EURO SIGN
-    0x2122,  # TRADE MARK SIGN
-]
-
-# a list of Unicode characters that might appear in Windows-1252 text
-WINDOWS_1252_CODEPOINTS = range(256) + WINDOWS_1252_GREMLINS
-
-# Rank the characters typically represented by a single byte -- that is, in
-# Latin-1 or Windows-1252 -- by how weird it would be to see them in running
-# text.
-#
-#   0 = not weird at all
-#   1 = rare punctuation or rare letter that someone could certainly
-#       have a good reason to use. All Windows-1252 gremlins are at least
-#       weirdness 1.
-#   2 = things that probably don't appear next to letters or other
-#       symbols, such as math or currency symbols
-#   3 = obscure symbols that nobody would go out of their way to use
-#       (includes symbols that were replaced in ISO-8859-15)
-#   4 = why would you use this?
-#   5 = unprintable control character
-#
-# The Portuguese letter Ã (0xc3) is marked as weird because it would usually
-# appear in the middle of a word in actual Portuguese, and meanwhile it
-# appears in the mis-encodings of many common characters.
-
-SINGLE_BYTE_WEIRDNESS = (
-#   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5,  # 0x00
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,  # 0x10
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x20
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x30
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x40
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x50
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0x60
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,  # 0x70
-    2, 5, 1, 4, 1, 1, 3, 3, 4, 3, 1, 1, 1, 5, 1, 5,  # 0x80
-    5, 1, 1, 1, 1, 3, 1, 1, 4, 1, 1, 1, 1, 5, 1, 1,  # 0x90
-    1, 0, 2, 2, 3, 2, 4, 2, 4, 2, 2, 0, 3, 1, 1, 4,  # 0xa0
-    2, 2, 3, 3, 4, 3, 3, 2, 4, 4, 4, 0, 3, 3, 3, 0,  # 0xb0
-    0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xc0
-    1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xd0
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xe0
-    1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  # 0xf0
-)
-
-# Pre-cache the Unicode data saying which of these first 256 characters are
-# letters. We'll need it often.
-SINGLE_BYTE_LETTERS = [
-    unicodedata.category(unichr(i)).startswith('L')
-    for i in xrange(256)
-]
-
-# A table telling us how to interpret the first word of a letter's Unicode
-# name. The number indicates how frequently we expect this script to be used
-# on computers. Many scripts not included here are assumed to have a frequency
-# of "0" -- if you're going to write in Linear B using Unicode, you're
-# you're probably aware enough of encoding issues to get it right.
-#
-# The lowercase name is a general category -- for example, Han characters and
-# Hiragana characters are very frequently adjacent in Japanese, so they all go
-# into category 'cjk'. Letters of different categories are assumed not to
-# appear next to each other often.
-SCRIPT_TABLE = {
-    'LATIN': (3, 'latin'),
-    'CJK': (2, 'cjk'),
-    'ARABIC': (2, 'arabic'),
-    'CYRILLIC': (2, 'cyrillic'),
-    'GREEK': (2, 'greek'),
-    'HEBREW': (2, 'hebrew'),
-    'KATAKANA': (2, 'cjk'),
-    'HIRAGANA': (2, 'cjk'),
-    'HIRAGANA-KATAKANA': (2, 'cjk'),
-    'HANGUL': (2, 'cjk'),
-    'DEVANAGARI': (2, 'devanagari'),
-    'THAI': (2, 'thai'),
-    'FULLWIDTH': (2, 'cjk'),
-    'MODIFIER': (2, None),
-    'HALFWIDTH': (1, 'cjk'),
-    'BENGALI': (1, 'bengali'),
-    'LAO': (1, 'lao'),
-    'KHMER': (1, 'khmer'),
-    'TELUGU': (1, 'telugu'),
-    'MALAYALAM': (1, 'malayalam'),
-    'SINHALA': (1, 'sinhala'),
-    'TAMIL': (1, 'tamil'),
-    'GEORGIAN': (1, 'georgian'),
-    'ARMENIAN': (1, 'armenian'),
-    'KANNADA': (1, 'kannada'),  # mostly used for looks of disapproval
-    'MASCULINE': (1, 'latin'),
-    'FEMININE': (1, 'latin')
-}
diff --git a/success-rates/crawler/gen.sh b/success-rates/crawler/gen.sh
deleted file mode 100644
index c97ba06..0000000
--- a/success-rates/crawler/gen.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-for d in $(cat ../blogforever-crawler-publication/dataset/bloglist.txt); do sudo python -m bibcrawl/run $d; done
diff --git a/success-rates/crawler/titles/.gitignore b/success-rates/crawler/titles/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/success-rates/crawler/titles/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/success-rates/score.py b/success-rates/score.py
deleted file mode 100644
index 60b02f7..0000000
--- a/success-rates/score.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import sys
-import codecs
-from Levenshtein import ratio
-from os import listdir
-
-def bigrams(string):
-  return set(map(lambda i: string[i : i + 2], xrange(len(string) - 1)))
-
-def dicesCoeffSimilarity(string1, string2):
-  bigrams1 = bigrams(string1)
-  bigrams2 = bigrams(string2)
-  intersection = bigrams1.intersection(bigrams2)
-  return (2.0 * len(intersection)) / (len(bigrams1) + len(bigrams2))
-
-def main():
-  first = sys.argv[1]
-  second = sys.argv[2]
-
-  threshold = 0.5
-  total = 0.0
-  count = 0.0
-
-  for page in listdir(first):
-    with codecs.open(first + "/" + page, "r", encoding="utf-8") as f:
-      firstpage = f.read()
-    try:
-      with codecs.open(second + "/" + page, "r", encoding="utf-8") as f:
-        secondpage = f.read()
-    except IOError:
-      secondpage = u""
-    if len(firstpage) > 20:
-      ratio = dicesCoeffSimilarity(firstpage + ".", secondpage + ".")
-      # ratio = ratio(firstpage + ".", secondpage + ".")
-      total = total + 1.0
-      if ratio > threshold:
-        count = count + 1.0
-      elif len(sys.argv) == 4:
-        print page.replace("{", "/")
-
-  print "{}: {}%".format(second, count/total * 100.0)
-
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/scoreArticles.sh b/success-rates/scoreArticles.sh
deleted file mode 100644
index 63be76d..0000000
--- a/success-rates/scoreArticles.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-python score.py ../dataset/articles/ ../../crawler/articles
-python score.py ../dataset/articles/ articles/goose/
-python score.py ../dataset/articles/ articles/readability/
-python score.py ../dataset/articles/ articles/boilerpipe/
diff --git a/success-rates/scoreTitles.sh b/success-rates/scoreTitles.sh
deleted file mode 100644
index 36f8ff9..0000000
--- a/success-rates/scoreTitles.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-python score.py ../dataset/titles/ ../../crawler/titles
-python score.py ../dataset/titles/ titles/goose/
-python score.py ../dataset/titles/ titles/readability/
diff --git a/success-rates/titles/goose/gen.py b/success-rates/titles/goose/gen.py
deleted file mode 100644
index d82e520..0000000
--- a/success-rates/titles/goose/gen.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import sys
-from goose import Goose
-from os import listdir
-import codecs
-
-def main():
-  contents = sys.argv[1]
-  goose = Goose()
-  for url in listdir(contents):
-    print url
-    with codecs.open(url, "w", encoding="utf-8") as out:
-      try:
-        extracted = goose.extract(url=url.replace("{", "/"))
-        out.write(extracted.title)
-      except (IOError, TypeError):
-        out.write("")
-        print "Error"
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/titles/goose/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/success-rates/titles/goose/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index 8a910a0..0000000
--- a/success-rates/titles/goose/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1 +0,0 @@
-lantern festival (st martins)
\ No newline at end of file
diff --git a/success-rates/titles/readability/gen.py b/success-rates/titles/readability/gen.py
deleted file mode 100644
index 2bc5dc5..0000000
--- a/success-rates/titles/readability/gen.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import sys
-from lxml.html.clean import Cleaner
-from os import listdir
-from re import sub as resub
-from readability.readability import Document
-from urllib2 import urlopen, HTTPError
-import codecs
-
-def cleanTags(string):
-  htmlCleaned = Cleaner(allow_tags=[''], remove_unknown_tags=False, style=True
-      ).clean_html(string or u"dummy")
-  return resub(r"\s\s+" , " ", htmlCleaned)
-
-def main():
-  titles = sys.argv[1]
-  for url in listdir(titles):
-    print url
-    with codecs.open(url, "w", encoding="utf-8") as out:
-      try:
-        html = urlopen(url.replace("{", "/")).read()
-        out.write(cleanTags(Document(html).title()))
-      except HTTPError:
-        out.write("")
-
-if __name__ == "__main__":
-  main()
diff --git a/success-rates/titles/readability/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{ b/success-rates/titles/readability/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
deleted file mode 100644
index 1f6a78e..0000000
--- a/success-rates/titles/readability/http:{{zooey.wordpress.com{2012{11{11{lantern-festival-st-martins{
+++ /dev/null
@@ -1 +0,0 @@
-<div>lantern festival (st martins) | the ethereal kiosk</div>
\ No newline at end of file
diff --git a/tex/tables.tex b/tables.tex
similarity index 87%
rename from tex/tables.tex
rename to tables.tex
index ab17ef4..390c35b 100644
--- a/tex/tables.tex
+++ b/tables.tex
@@ -1,6 +1,6 @@
 \newcommand\similarityTable{
   \begin{table}[ht]\centering
-    \caption{Examples of string similarities}\label{similarityTable}
+    \capstart
     \setstretch{1.1}
     \begin{tabular*}{\columnwidth}{
       @{}
@@ -21,12 +21,13 @@
     & 29\% & 31\% \\
     \bottomrule
     \end{tabular*}
+  \caption{Examples of string similarities}\label{similarityTable}
   \end{table}
 }

 \newcommand\precisionTable{
   \begin{table}[ht]\centering
-    \caption{Extraction success rates}\label{precisionTable}
+    \capstart
     \setstretch{1.1}
     \setlength{\tabcolsep}{5pt}
     \begin{tabular*}{\columnwidth}{
@@ -45,5 +46,6 @@
     Title   & 95.0\% & 74.0\% & N/A    & 84.9\% \\
     \bottomrule
     \end{tabular*}
+  \caption{Extraction success rates}\label{precisionTable}
   \end{table}
 }
diff --git a/tex/0-abstract.md b/tex/0-abstract.md
deleted file mode 100644
index 05a5200..0000000
--- a/tex/0-abstract.md
+++ /dev/null
@@ -1 +0,0 @@
-Blogs are a dynamic communication medium which has been widely established on the web. The BlogForever project has developed an innovative system to harvest, preserve, manage and reuse blog content. This paper presents a key component of the BlogForever platform, the web crawler. More precisely, our work concentrates on techniques to automatically extract content such as articles, authors, dates and comments from blog posts. To achieve this goal, we introduce a simple and robust algorithm to generate extraction rules based on string matching using the blog's web feed in conjunction with blog hypertext. This approach leads to a scalable blog data extraction process. Furthermore, we show how we integrate a web browser into the web harvesting process in order to support data extraction from blogs with JavaScript generated content.
diff --git a/tex/1-introduction.md b/tex/1-introduction.md
deleted file mode 100644
index 47a806f..0000000
--- a/tex/1-introduction.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Blogs disappear every day @johnson2008blogs. Losing data is obviously undesirable, but even more so when this data has historic, political or scientific value. In contrast to books, newspapers or centralized web platforms, there is no standard method \phantom{x}
-\ \newline
-or authority to ensure blog archiving and long-term digital preservation. Yet, blogs are an important part of today's web: WordPress reports more than 1 million new posts and 1.5 million new comments each day @wordpress2014. Blogs also showed to be an important resource during the 2011 Egyptian revolution by playing an instrumental role in the organization and implementation of protests @nahedeltantawy2012. The need to preserve this volatile communication medium is nowadays very clear.
-
-Among the challenges in developing a blog archiving software is the design of a web crawler capable of automatically and efficiently traversing blogs to harvest their content. The sheer size of the blogosphere combined with an unpredictable publishing rate of new information call for a highly scalable system, while the lack of programmatic access to the complete blog content makes the use of automatic extraction techniques necessary. The variety of available blog publishing platforms offers a limited common set of properties that a crawler can exploit, further narrowed by the ever-changing structure of blog contents. Finally, an increasing number of blogs heavily rely on dynamically created content to present information, using the latest web technologies, hence invalidating traditional web crawling techniques.
-
-A key characteristic of blogs which differentiates them from regular websites is their association with web feeds\ @lindahl2003weblogs. Their primary use is to provide a uniform subscription mechanism, thereby allowing users to keep track of the latest updates without the need to actually visit blogs. Concretely, a web feed is an XML file containing links to the latest blog posts along with their articles (abstract or full text) and associated metadata @board2007rss. While web feeds essentially solve the question of update monitoring, their limited size makes it necessary to download blog pages in order to harvest previous content.
-
-This paper presents the open-source BlogForever Crawler, a key component of the BlogForever platform @kasioumis2013towards responsible for traversing blogs, extracting their content and monitoring their updates. Our main objective in this work is to design a crawler capable of extracting blog articles, authors, publication dates and comments. Our contributions can be summarized as follows:
-
-  - We present a new algorithm to build extraction rules from web feeds. We then derive an optimized reformulation tied to a particular string similarity metric and show that this reformulated algorithm has a linear time complexity.
-
-  - We show how to use this algorithm for blog article extraction and how it can be adapted to authors, publication dates and comments.
-
-  - We present the overall crawler architecture and the specific components we implemented to efficiently traverse blogs. We explain how our design allows for both modularity and scalability.
-
-  - We show how we make use of a complete web browser to render JavaScript powered web pages before processing them. This step allows our crawler to effectively harvest blogs built with modern technologies, such as the recently popular comment hosting services.
-
-  - We evaluate the quality of extraction and the execution time of our algorithm against three state-of-the-art web article extraction algorithms.
-
-Although our crawler implementation is integrated with the BlogForever platform, the presented techniques and algorithms are relevant for other applications related to Wrapper Generation and Web Data Extraction.
diff --git a/tex/2-algorithms.md b/tex/2-algorithms.md
deleted file mode 100644
index 8dcfdd6..0000000
--- a/tex/2-algorithms.md
+++ /dev/null
@@ -1,91 +0,0 @@
-This section explains in detail the algorithms we developed to extract blog post articles as well as its variations for extracting authors, dates and comments. Our approach uses blog specific characteristics to build *extraction rules* which are applicable throughout a blog. Our focus is on minimising the algorithmic complexity while keeping our approach simple and generic.
-
-
-Motivation
-----------
-\label{motivation}
-Extracting metadata and content from HTML documents is a challenging task. Standards and format recommendations have been around for quite some time, strictly specifying how HTML documents should be organised @w3c2014. For instance the `<h1></h1>` tags have to contain the highest-level heading of the page and must not appear more than once per page @w3c2002. More recently, specifications such as microdata @whatwg2014 define ways to embed semantic information and metadata inside HTML documents, but these still suffer from very low usage: estimated to be used in less than\ 0.5% of websites @andrewrogers2014. In fact, the majority of websites rely on the generic `<span></span>` and `<div></div>` container elements with custom `id` or `class` attributes to organise the structure of pages, and more than 95% of pages do not conform to the HTML standard @brianwilson2008. Under such circumstances, relying on HTML structure to extract content from web pages is not viable and other techniques need to be employed.
-
-Having blogs as our target websites, we made the following observations which play a central role in the extraction process^[Our experiments on a large dataset of blogs showed that failing tests were either due to a violation of one of these observations, or to insufficient amount of text content in posts. This is for instance the case of photoblogs where posts typically contain a picture and a few words. Only looking at the text might then not be sufficient to differentiate the article content from other elements of the page.]:
-
-\begin{enumerate}[label={(\alph*)}]
-  \item\label{havefeedAssum} Blogs provide web feeds: structured and standardized views of the latest posts of a blog,
-  \item\label{similarhtmlAssum} Posts of the same blog share a similar HTML structure.
-\end{enumerate}
-
-Web feeds usually contain about 20 blog posts @oita2010, which is, in most cases, less than the total number of posts in blogs. Consequently, in order to effectively archive the entire content of a blog, it is necessary to download and process pages beyond the ones referenced in the web feed.
-
-
-Content extraction overview
----------------------------
-To extract content from blog posts, we proceed by building *extraction rules* from the data given in the blog's web feed. The idea is to use a set of *training data*, pairs of HTML pages and target content, to build an extraction rule capable of locating the target content on each HTML page.
-
-Observation \ref{havefeedAssum} allows the crawler to obtain input for the extraction rule generation algorithm: each web feed entry contains a link to the corresponding web page as well as the blog post article (either abstract or full text), its title, authors and publication date. We call these fields *targets* as they constitute the data our crawler aims to extract. Observation \ref{similarhtmlAssum} guarantees the existence of an appropriate extraction rule, as well as its applicability to all posts of the\ blog.
-
-#extractionAlgo shows the generic procedure we use to build extraction rules. The idea is quite simple: for each pair of `(`*page, target*`)` input, compute, out of all possible extraction rules, the best one with respect to a certain `ScoreFunction`. The rule which is most frequently the *best rule* is then returned.
-
-\extractionAlgo
-
-One might notice that each *best rule* computation is independent and operates on a different input pair. This implies that #extractionAlgo is *embarrassingly parallel*: iterations of the outer loop can trivially be executed on multiple threads.
-
-Functions in #extractionAlgo are voluntarily abstract at this point and will be explained in detail in the remaining of this section.
-\hyperref[extractionrulesandstringsimilarity]{Subsection \ref*{extractionrulesandstringsimilarity}}
-defines `AllRules`, `Apply` and the `ScoreFunction` we use for article extraction. In #timecomplexityandlinearreformulation we analyse the time complexity of #extractionAlgo and give a linear time reformulation using dynamic programming. Finally, #variationsforauthorsdatesandcomments shows how the `ScoreFunction` can be adapted to extract authors, dates and comments.
-
-Extraction rules and string similarity
---------------------------------------
-\label{extractionrulesandstringsimilarity}
-
-In our implementation, rules are queries in the XML Path Language (XPath). Consequently, standard libraries can be used to parse HTML pages and apply extraction rules, providing the `Apply` function used in #extractionAlgo. We experimented with 3 types of XPath queries: selection over the HTML `id` attribute, selection over the HTML `class` attribute and selection using a relative path in the HTML tree. `id` attributes are expected to be unique, and `class` attributes have showed in our experiments to have better consistency than relative paths over pages of a blog. For these reasons we opt to always favour `id` over `class`, and `class` over path, such that the \coderef{allrulesAlgo} function returns a single rule per node.
-
-\allrulesAlgo
-
-Unsurprisingly, the choice of `ScoreFunction` greatly influences the running time and precision of the extraction process. When targeting articles, extraction rule scores are computed with a string similarity function comparing the extracted strings with the target strings. We chose the Sørensen–Dice coefficient similarity @dice1945, which is, to the best of our knowledge, the only string similarity algorithm fulfilling the following criteria:
-
-  - Has low sensitivity to word ordering,
-  - Has low sensitivity to length variations,
-  - Runs in linear time.
-
-The two first properties are essential when dealing with cases where the blog's web feed only contains an abstract or a subset of the entire post article. #similarityTable gives examples to illustrate how these two properties hold for the Sørensen–Dice coefficient similarity but do not for *edit distance* based similarities such as the Levenshtein @levenshtein1966 similarity.
-
-\similarityTable
-
-The Sørensen–Dice coefficient similarity algorithm operates by first building sets of pairs of adjacent characters, also known as *bigrams*, and then applying the *quotient of similarity* formula:
-
-\similarityAlgo
-
-
-Time complexity and linear reformulation
-----------------------------------------
-\label{timecomplexityandlinearreformulation}
-
-With concrete definitions of the functions \coderef{allrulesAlgo}, `Apply` and \coderef{similarityAlgo} (as the `ScoreFunction`), the definition of #extractionAlgo for article extraction is now complete. We can therefore proceed with a time complexity analysis.
-
-First, let's assume that we have at our disposal a linear time HTML parser that constructs an appropriate data structure, indexing HTML nodes on their `id` and `class` attributes, effectively making `Apply` $\in$ \Oof{1}. As stated before, the outer loop splits the input into independent computations and each call to \coderef{allrulesAlgo} returns (in linear time) at most as many rules as the number of nodes in its *page* argument. Therefore, the body of the inner loop will be executed\ \Oof{n} times, where $n$ is the number of nodes. Because each extraction rule can return any subtree of the queried page, each call to \coderef{similarityAlgo} takes \Oof{n}, leading to an overall quadratic running time.
-
-We now present #linearAlgo, a linear time reformulation of #extractionAlgo for article extraction using dynamic programming.
-
-\linearAlgo
-
-While very intuitive, the original idea of first generating extraction rules and then picking these best rules prevents us from effectively reusing previously computed bigrams (set of pairs of adjacent characters). For instance, when evaluating the extraction rule for the HTML root node, #extractionAlgo will obtain the complete string of the page and pass it to the \coderef{similarityAlgo} function. At this point, the information on where the string could be split into substrings with already computed bigrams is not accessible, and the bigrams of the page have to be computed by linearly traversing the entire string. To overcome this limitation and implement *memoization* over the bigrams computations, #linearAlgo uses a post-order traversal of the HTML tree and computes node bigrams from their children bigrams. This way, we avoid serializing HTML subtrees for each bigrams computation and have the guarantee that each character of the HTML page will be read at most once during the bigrams computation.
-
-With bigrams computed in this dynamic programming manner, the overall time to compute all \coderef{bigramsAlgo}`(`*node.text*`)` is linear. To conclude the proof that #linearAlgo runs in linear time we show that all other computations of the inner loop can be done in constant *amortized* time. As the number of edges in a tree is one less than the number of nodes, the *amortized* number of bigrams unions per inner loop iteration tends to one. Each *quotient of similarity* computation requires one bigrams intersection and three bigrams length computations. Over a finite alphabet (we used printable ASCII), bigrams sizes have bounded size and each of these operations takes constant time.
-
-
-Variations for authors, dates, comments
----------------------------------------
-\label{variationsforauthorsdatesandcomments}
-
-Using string similarity as the only score measurement leads to poor performance on author and date extraction, and is not suitable for comment extraction. This subsection presents variations of the `ScoreFunction` which addresses issues of these other types of content.
-
-The case of authors is problematic because authors' names often appear in multiple places of a page, which results in several rules with maximum \coderef{similarityAlgo} score. The heuristic we use to get around this issue consists of adding a new component in the `ScoreFunction` for author extraction rules: the *tree distance* between the evaluated node and the post content node. This new component takes advantage of the positioning of a post's authors node which often is a direct child or shares its parent with the post content node.
-
-Dates are affected by the same duplication issue, as well as a problem of inconsistency of format between web feeds and web pages. Our solution for date extraction extends the `ScoreFunction` for authors by comparing the *extracted* string to multiple *targets*, each being a different string representation of the original date obtained from the web feed. For instance, if the feed indicates that a post was published at \stringliteral{Thu, 01 Jan 1970 00:00:00}, our algorithm will search for a rule that returns one of \stringliteral{Thursday January 1, 1970}, \stringliteral{1970-01-01}, \stringliteral{43 years ago} and so on. So far we do not support dates in multiple languages, but adding new target formats based on languages detection would be a simple extension of our date extraction algorithm.
-
-Comments are usually available in separate web feeds, one per blog post. Similarly to blog feeds, comment feeds have a limited number of entries, and when the number of comments on a blog post exceeds this limit, comments have to be extracted from web pages. To do so, we use the following `ScoreFunction`:
-
-  - Rules returning fewer HTML nodes than the number of comments on the feed are filtered out with a zero score,
-
-  - The scores of the remaining rules are computed with the value of the *maximum weighted matching* in the *complete bipartite graph* $G = (U, V, E)$, where $U$ is the set of HTML nodes returned by the rule, $V$ is the set of target comment fields from the web feed (such as comment authors) and $E(u, v)$ has weight equal to \coderef{similarityAlgo}`(`*u, v*`)`.
-
-Regarding time complexity, computing the *tree distance* of each node of a graph to a single reference node can be done in linear time, and multiplying the number of targets by a constant factor does not affect the asymptotic computational complexity. Computing scores of comment extraction rules requires a more expensive algorithm. However, this is compensated by the fact that the proportion of candidates left, after filtering out rules not returning enough results, is very low in practice. Analogous reformulations to the one done with #linearAlgo can be applied on each of the presented `ScoreFunction` in order to minimize the time spent in \coderef{similarityAlgo}.
diff --git a/tex/3-architecture.md b/tex/3-architecture.md
deleted file mode 100644
index 723577e..0000000
--- a/tex/3-architecture.md
+++ /dev/null
@@ -1,64 +0,0 @@
-This section provides an overview of the crawler system architecture and the different targeted techniques we used. The overall software architecture is presented and discussed, introducing the Scrapy framework and the enrichments we implemented for our specific usage. Then, we show how we integrated a headless web browser into the harvesting process to support blogs that use JavaScript to display page content. Finally, we talk about the design choices we made in view of a large scale deployment.
-
-\begin{figure}[t]
-  \capstart
-  \centering
-  \includegraphics[width=0.47\textwidth]{./img/scrapy_architecture.eps}
-  \caption{Overview of the crawler architecture.\\(Credit: Pablo Hoffman, Daniel Graña, Scrapy)}
-  \label{scrapyarchitecture}
-\end{figure}
-
-Overview
---------
-Our crawler is built on top of Scrapy^[<http://scrapy.org/>], an open-source framework for web crawling. Scrapy provides an elegant and modular architecture illustrated in #scrapyarchitecture. Several components can be plugged into the Scrapy core infrastructure: *Spiders*, *Item Pipeline*, *Downloader Middlewares* and *Spider Middlewares*; each allowing to implement a different type of functionality.
-
-Our use case has two types of spiders: *NewCrawl* and *UpdateCrawl*, which implement the logic to respectively crawl a new blog and get updates from a previously crawled blog. After being downloaded and identified as blog posts, pages are packed into *Items* and sent through the following pipeline of operations:
-
-  #. Render JavaScript
-  #. Extract content
-  #. Extract comments
-  #. Download multimedia files
-  #. Propagate resulting records to the back-end
-
-This pipeline design provides great modularity. For example, disabling JavaScript rendering or plugging in an alternative back-end can be done by editing a single line of Scrapy's configuration file.
-
-
-Enriching Scrapy
-----------------
-\label{enrichingscrapy}
-
-In order to identify web pages as blog posts, our implementation enriches Scrapy with two components to restrict the extraction process to the subsets of pages which are blog posts: *blog post identification* and *download priority heuristic*.
-
-Given a URL entry point to a website, the default Scrapy behaviour traverses all the pages of the same domain in a *last-in-first-out* manner. The *blog post identification* function is able to identify whether a URL points to a blog post. Internally, for each blog, this function automatically builds a minimal regular expression that matches all the blog post URLs found in the feed, and later uses this regular expression to classify URLs. Our implementation does not operate at a granularity level of single characters, but instead restricts the building blocks of these regular expressions to sequences of digits, sequences of alphanumeric characters and special characters. That way we avoid producing overly precise regular expressions which might not be valid for all posts of a blog. For example, when the publication year forms part of the URLs, it is considered a sequence of digits rather than a fixed numeric value. This simple approach requires that blogs use the same URL pattern for all their posts (or false negatives will occur) which has to be distinct for pages that are not posts (or false positives will occur). In practice, this assumption holds for all blog platforms we encountered and seems to be a common practice among web developers.
-
-In order to efficiently deal with blogs that have a large number of pages which are not posts, the *blog post identification* mechanism is not sufficient. Indeed, after all pages identified as blog posts are processed, the crawler needs to download other pages in order to find additional blog posts. To replace the naive *random walk*, *depth first search* or *breadth first search* web site traversals, we use a priority queue where priorities of new URLs are determined by a machine learning system. This mechanism has shown to be useful for blogs hosted on a single domain alongside large number of other types of web pages, such as those of a forum or a wiki. It also allows the crawler to extract data in presence of *spider traps*, where the naive traversals could miss the actual content.
-
-The idea is to give high priority to URLs that are believed to point to pages with links to blog posts. These predictions are done using an active *Distance-Weighted k-Nearest-Neighbour* classifier @dudani1976. Let $L(u)$ be the number of links to blog posts contained in a page with URL $u$. Whenever a page is downloaded, its URL $u$ and $L(u)$ are given to the machine learning system as training data. When the crawler encounters a new URL $v$, it will ask the machine learning system for an estimation of $L(v)$, and use this value as the download priority of $v$. $L(v)$ is estimated by calculating a weighted average of the values of the $k$ URLs most similar to $v$.
-
-This priority mechanism allows to stop a blog crawl before all of its pages have been visited while maximizing the proportion of blog posts out of all the downloaded pages. While a simple termination condition such as an upper bound on the number of pages downloaded is mandatory to avoid infinite loops, it is also possible to add termination heuristics such as *stop if the last 1000 downloaded pages contain less than 1\% blog posts*.
-
-JavaScript rendering
---------------------
-JavaScript is a widely used language for client-side scripting. While some applications simply use it for aesthetics, an increasing number of websites use JavaScript to download and display content. In such cases, traditional HTML based crawlers do not see web pages as they are presented to a human visitor by a web browser, and might therefore be obsolete for data extraction.
-
-In our experiments whilst crawling the blogosphere, we encountered several blogs where crawled data was incomplete because of the lack of JavaScript interpretation. The most frequent cases were blogs using the Disqus^[<http://disqus.com/websites>] and LiveFyre^[<http://web.livefyre.com>] comment hosting services. For webmasters, these tools are very handy because the entire commenting infrastructure is externalized and setting them up essentially comes down to including a JavaScript snippet in each page. Both of these services heavily rely on JavaScript to download and display the comments, even providing functionalities such as real-time updates for edits and newly written comments. Less commonly, some blogs are fully rendered using JavaScript. When loading such websites, the web browser will not receive the page content as an HTML document, but will instead have to execute JavaScript code to download and display the page content. The Blogger platform provides the *Dynamic Views* as a default template, which uses this mechanism @antinharasymiv2011.
-
-To support blogs with JavaScript-generated content, we embed a full web browser into the crawler. After considering multiple options, we opted for PhantomJS^[<http://phantomjs.org>], a headless web browser with great performance and scripting capabilities. The JavaScript rendering is the very first step of web page processing. Therefore, extracting blog post articles or comments works equally well on blogs with JavaScript-generated content and on traditional HTML-only blogs.
-
-When the number of comments on a page exceeds a certain threshold, both Disqus and LiveFyre will only load the most recent ones and the stream of comments will end with a *Show More Comments* button. As part of the page loading process, we instruct PhantomJS to repeatedly click on these buttons until all comments are loaded. Paths to Disqus and LiveFyre *Show More* buttons were manually obtained and constitute the only non-generic elements of our extraction stack which require human intervention to maintain and extend to other commenting platforms.
-
-
-Scalability
------------
-When aiming to work with a large amount of input, it is crucial to build every layer of a system with scalability in mind @thereactivemanifesto2013. The BlogForever Crawler, and in particular the two core procedures *NewCrawl* and *UpdateCrawl*, are designed to be usable as part of a scalable and fault-resilient distributed system.
-
-Heading in this direction, we made the key design choice to have both *NewCrawl* and *UpdateCrawl* as stateless components. From a high-level point of view, these two components are *purely functional*:
-
-\begin{equation*}
-  \begin{split}
-    NewCrawl:~    &  \text{URL} \rightarrow \mathcal{P}(\text{RECORD})\\
-    UpdateCrawl:~ &  \text{URL} \times \text{DATE} \rightarrow \mathcal{P}(\text{RECORD})
-  \end{split}
-\end{equation*}
-\noop{\vspace{3px}\\
-where $\text{URL}$, $\text{DATE}$ and $\text{RECORD}$ are respectively the set of all URLs, dates and records, and $\mathcal{P}$ designates the power set operator. By delegating all shared mutable state to the back-end system, web crawler instances can be added, removed and used interchangeably.}
diff --git a/tex/4-evaluation.md b/tex/4-evaluation.md
deleted file mode 100644
index bb43436..0000000
--- a/tex/4-evaluation.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Our evaluation is articulated in two parts. First, we compare the article extraction procedure presented in #algorithms with three open-source projects capable of extracting articles and titles from web pages. The comparison will show that our blog-targeted solution has better performance both in terms of success rate and running time. Extraction of authors, dates and comments is not part of this evaluation because of the lack of publicly available competing projects and reference data sets.
-
-Our experiments were run using *Debian GNU/Linux 7.2*, *Python 2.7* and an *Intel Core i7-3770 3.4 GHz* processor. Timing measurements were made on a single dedicated core with garbage collection disabled. The Git repository for this paper^[<https://github.com/OlivierBlanvillain/bfc-paper>] contains the necessary scripts and instructions to reproduce all the evaluation experiments presented in this section. The crawler source code is available under the MIT license from the project's website^[<https://github.com/BlogForever/crawler>].
-
-
-Extraction success rates
-------------------------
-To evaluate article and title extraction from blog posts we compare our approach to three open source projects: Readability^[<https://github.com/gfxmonk/python-readability>], Boilerpipe @kohlschuetter2010 and Goose^[<https://github.com/GravityLabs/goose>], which are implemented in JavaScript, Java and Scala respectively. These projects are more generic than our blog-specific approach in the sense that they are able to identify and extract data directly from HTML source code, and do not make use of web feeds or structural similarities between pages of the same blog (observations \ref{havefeedAssum} and \ref{similarhtmlAssum}, #motivation). #precisionTable shows the extraction success rates for article and title on a test sample of 2300 blog posts from 230 blogs obtained from the Spinn3r dataset @burton2011.
-
-\precisionTable
-
-\input{runningtimeFigure.tex}
-
-On our test dataset, #extractionAlgo outperformed the competition by 4.9% on article extraction and 10.1% on title extraction. It is important to stress that Readability, Boilerpipe and Goose rely on generic techniques such as word density, paragraph clustering and heuristics on HTML tagging conventions, which are designed to work for any type of web page. On the contrary, our algorithm is only suitable for pages providing web feeds, as they constitute the reference data used to build extraction rules. Therefore, results shown in #precisionTable should not be interpreted as a general quality evaluation of the different projects, but simply as evidence that our approach is more suitable when working with blogs.
-
-Article extraction running times
---------------------------------
-In addition to the quality of the extracted data we also evaluated the running time of the extraction procedure. The main point of interest is the ability of the extraction procedure to scale as the number of posts in the processed blog increases. This corresponds to the evaluation of a *NewCrawl* task, which is in charge of harvesting all published content on a blog.
-
-#runningtime shows the cumulated time spent for each article extraction system (this excludes common tasks such as downloading pages and storing results) as a function of the number of blog posts processed. We used the Quantum Diaries^[<http://www.quantumdiaries.org>] blog for this experiment.
-
-Data presented in this graph was obtained by taking the arithmetic mean over 10 measurements. These results are believed to be significant given that standard deviations are of the order of 2 milliseconds.
-
-As illustrated in #runningtime, our approach spends the majority of its total running time between the initialisation and the processing of the first blog post. This initial increase of about 0.4 seconds corresponds to cost of executing #linearAlgo to compute extraction rule for articles. As already mentioned, this consists of computing the *best extraction rule* of each page referenced by the web feed and picking the most appropriate one. Once this extraction rule is computed, processing subsequent blog posts only requires parsing and applying the rule, which takes about 3 milliseconds per page and is barely visible on the scale of #runningtime. The other evaluated solutions do not function this way: each blog post is processed as new and independent input, leading to approximately linear running times.
-
-\vspace{1pt}
-
-The vertical dashed line at 15 processed blog posts represents a suitable point of comparison of the processing time per blog post. Indeed, as the web feed of our test blog contains\ 15 blog posts, the extraction rule computation performed by our approach includes the cost of entirely processing these 15 entries. That being said, comparing raw performance of algorithms implemented in different programming languages is not very informative given the high variation of running times observed across different programming languages @hundt2011.
diff --git a/tex/5-related-work.md b/tex/5-related-work.md
deleted file mode 100644
index 2e0a884..0000000
--- a/tex/5-related-work.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Our crawler combines ideas from previous work on general web crawlers and *wrapper* generation algorithms. The word *wrapper* is commonly used to designate procedures to extract structured data from unstructured documents. We did not use this word in the present paper in favour of the term *extraction rule*, which better reflects our implementation and is decoupled from the XPath engine that concretely performs the extraction.
-
-Web crawling has been a well-studied topic over the past decade. One interesting research direction is the one of large scale distributed crawlers. Mercator @heydon99mercator, UbiCrawler @boldi2003 and the crawler discussed in @shkapenyuk2002 are examples of successful distributed crawlers. The associated articles provide useful information regarding the challenges encountered when working on a distributed architecture. One of the core issues when scaling out seems to be in sharing the list of URLs that have already been visited and those that need to be visited next. While @heydon99mercator and @shkapenyuk2002 rely on a central node to hold this information, @boldi2003 uses a fully distributed architecture where URLs are divided among nodes using consistent hashing. Both of these approaches require the crawlers to implement complex mechanisms to achieve fault tolerance. The BlogForever Crawler circumvents this problem by delegating all shared mutable state to the back-end system. In addition, since we process web pages on the fly and directly emit the extracted content to the back-end, there is no need for persistent storage on the crawler side. This removes one layer of complexity when compared to general crawlers which need to use a distributed file system (@shkapenyuk2002 uses NFS, @berger2011 uses HDFS) or implement an aggregation mechanism in order to further exploit the collected data. Our design is similar to the distributed active object pattern presented in\ @activeobject1996, which is further simplified by the fact that the state of the crawler instances is not kept between crawls.
-
-A common approach in web content extraction is to manually build wrappers for the targeted websites. This approach has been proposed in the crawler discussed in @faheem2012intelligent which automatically assigns web sites to predefined categories and gets the appropriate wrapper from a static knowledge base. The limiting factor in this type of approach is the substantial amount of manual work needed to write and maintain the wrappers, which is not compatible with the increasing size and diversity of the web. Several projects try to simplify this process and provide various degrees of automation. This is the case of the Stalker algorithm @stalker which generates wrappers based on user-labelled training examples. Some commercial solutions such as the Lixto project @lixto simplify the task of building wrappers by offering a complete integrated development environment where the training data set is obtained via a graphical user interface.
-
-Automated solutions use other techniques to identify and extract information directly from the structure and content of the web page. The Boilerpipe project @kohlschuetter2010 (mentioned in our evaluation) uses text density analysis to extract the main article of a web page. The approach presented in @treeedit is based on a tree structure analysis of pages with similar templates, such as news web sites or blogs. Automatic solutions have also been designed specifically for blogs. Similarly to our approach, Oita and Senellart @oita2010 describe a procedure to automatically build wrappers by matching web feed articles with HTML pages. This work was further extended by Gkotsis, Stepanyan, Cristea and Joy @gkotsis2013 with a focus on extracting content anterior to the one indexed in web feeds. @gkotsis2013 also reports to have successfully extracted blog post titles, publication dates and authors, but their approach is less generic than the one for the extraction of articles. Finally, neither @oita2010 nor @gkotsis2013 provide complexity analysis which we believe to be essential before using an algorithm in production.
diff --git a/tex/6-conclusion-and-future-work.md b/tex/6-conclusion-and-future-work.md
deleted file mode 100644
index 9408502..0000000
--- a/tex/6-conclusion-and-future-work.md
+++ /dev/null
@@ -1,7 +0,0 @@
-In this paper, we presented the internals of the BlogForever Crawler. Its central article extraction procedure based on extraction rules generation was introduced along with theoretical and empirical evidence validating the approach. Simple adaptations of this procedure that allow to extract different types of content, including authors, dates and comments were then introduced. In order to support rapidly evolving web technologies such as JavaScript-generated content, the crawler uses a web browser to render pages before processing them. We also discussed the overall software architecture, highlighting the design choices made to achieve both modularity and scalability. Finally, we evaluated our content extraction algorithm against three state-of-the-art web article extraction algorithms.
-
-Future work could investigate *hybrid* content extraction algorithms to try and achieve near 100\% success rates. Indeed, we have observed[^1] that the primary causes of failure of our approach were the insufficient quality of web feeds or the high amount of structural variations of blog pages. This suggests that combining our approach with other techniques such as word density or spacial reasoning could lead to better performance given that these techniques are not affected by the above issues.
-
-Another possible research direction would be the deployment of the BlogForever Crawler on a large scale distributed system. This is particularly relevant in the domain of web crawling given that intensive network operations are a serious bottleneck. Crawlers greatly benefit from the use of multiple Internet access points which makes them natural candidates for distributed computing. We intend to explore these opportunities in our future work.
-
-[^1]: An in-depth analysis of causes of failure was not included in this paper given the high amount of manual work required to identify failure causes on problematic pages.
diff --git a/tex/7-acknowledgments.md b/tex/7-acknowledgments.md
deleted file mode 100644
index d74ef20..0000000
--- a/tex/7-acknowledgments.md
+++ /dev/null
@@ -1 +0,0 @@
-Acknowledgments to our colleagues and friends from the CERN, J. Cowton, M. Hobbs and A. Oviedo, for their careful reading and helpful comments that improved the quality of this paper. We are also very grateful to G. Gkotsis from the University of Warwick for generously sharing his research material, time, and ideas with us.
diff --git a/tex/README.md b/tex/README.md
deleted file mode 100644
index 5c12f83..0000000
--- a/tex/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Install:
-
-    sudo apt-get install latexmk gnuplot texlive-latex-base texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra texlive-science diffpdf pandoc
-
-Compile:
-
-    latexmk
-
-To enable visual PDF diffs:
-
-    git config --global diff.diffpdf.command diffpdf
diff --git a/tex/answers-to-reviewers-comments.txt b/tex/answers-to-reviewers-comments.txt
deleted file mode 100644
index 0b259c8..0000000
--- a/tex/answers-to-reviewers-comments.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-> ----------------------- REVIEW 1 ---------------------
-> page 2, footnote 1:
-> The term "insufficient amount of text" needs a couple of lines more
-> explanation. Why does this lead to a failure?
-We added two sentences to clarify this, but I would also like to give a
-concrete example. On this blog post [1], the textual content of the post is "A
-floral embroidered coat seems to be all the rage on chic girls this Winter".
-Now suppose that the layout adds some noise, for instance by also containing
-in deepest div containing with the article the text "facebook twitter email 27
-comments Posted in Women Tags: Coats, If You're Thinking About....". Then the
-div containing the title of the post, "If You’re Thinking About... Floral
-Embroidered Coats", or even the div of one of the comment, might be the more
-similar to the text provided than the actual article div.
-
-[1]: <http://www.thesartorialist.com/photos/if-youre-thinking-about-floral-embroidered-coats/>
-
-> section 2.4, 2nd paragraph:
-> A definition of n is missing (although it can be guessed).
-We added it.
-
-> section 2.5, 7th paragraph:
-> This paragraph is hard to follow! What is "an overflow on its comment feed"?
-> Do you mean comments content arriving by means of AJAX calls? Please
-> explain. The second sentence of the paragraph is also not clear ("..narrow
-> down ...fixint a target..."). Please rewrite this paragraph.
-Indeed this paragraph was not very clear. The information it contained was
-also really not important so we decided to remove it all together. The first
-sentence was a repetition of the "Similarly to blog feeds..." sentence in the
-paragraph before the bullet points: if the comment feed is not full there is
-no need to extract comments from the page. Regarding the "comment content is
-extracted first", this is a small optimization I did to first get the exact
-number of comments by matching the comment content (which is usually more
-unique and accurate that doing a matching on author/date), and use this number
-to then accurately get the other fields.
-
-> section 3.1, 3rd paragraph: Is the modularity mentioned available in the
-> current system implementation? For example, can you "sense" somehow the
-> presence of JavaScript content so as to exclude the "Render JavaScript" step
-> in the pipeline?
-Not this modularity is only "at source code level", but the pipeline is not
-dynamically modified at runtime. We added some clarifications on this.
-
-> section 3.2, 2nd paragraph:
-> who is building the regular expressions out of the blog post URLs? Is it
-> done manually or automatically? Please clarify. Additionally, what if the
-> blog does not use friendly URLs (which they do support well the idea of
-> constructing regular expressions out of the URLs)? Consider for example a
-> WordPress based blog with URLs of the form http://<domain>/?p=234. How such
-> a non informative URL affects your approach?
-We included precisions on this (automatic) process. For a blog with URLs on
-the format of "http://example.com/?p=234", the generated regular expression
-will be something like ^http://example.com/?[a-zA-Z0-9]+=[0-9]+$.
-
-> section 3.2, 4th paragraph:
-> The priority queue used, prioritizes the URLs based on a machine learning
-> algorithm trained on the basis of the URL and the number of links it
-> contains.
-> a) Is there any assumption here that the links of the page lead to plog
->    posts? Why do URLs with more links are preferred?
-> b) What is the aim here? To prioritize or to prune? The former makes no
->    sense (at the end you will have to deal with all the pages). The latter,
->    if it holds, is not clear - I was expecting to read about some threshold
->    value under which pages are dropped out of the queue.
-> Please clarify both the above.
-a) The "blog post identification function" described before serves this
-   purpose.
-b) The aim is to prune uninteresting pages, we wrote an additional paragraph
-   to make this clear. It explains that this mechanism allows to add
-   "termination conditions" in order to save some resources. Studying this
-   kind or engineering coefficient/heuristic requires to experiment with a
-   large amount of blogs, which was out of the scope of this paper.
-
-
-> ----------------------- REVIEW 2 ---------------------
-> The only comment is that the authors could have used some of the non-used
-> space (8 out of 12 pages) to further discuss some of the pointed directions
-> for future work.
-We extensively discussed this point at the beginning of our work on the
-crawler, and we decided to split the work into two parts. We originally aimed
-for the "short paper" format, and planned our work to have it ready for the
-first deadline (09/12/13), but we did not evaluated the length properly and
-finally switched to the "full paper" format.
diff --git a/tex/latexmkrc b/tex/latexmkrc
deleted file mode 100644
index b996fdb..0000000
--- a/tex/latexmkrc
+++ /dev/null
@@ -1,21 +0,0 @@
-$pdflatex = 'pdflatex --file-line-error --shell-escape -interaction=nonstopmode  %O %S';
-$pdf_previewer = "start evince %O %S";
-$pdf_update_method = 0;
-$pdf_mode = 1;
-$bibtex_use = 1;
-$preview_continuous_mode = 1;
-
-@default_files = ('main.tex');
-
-add_cus_dep('md', 'mdtex', 0, 'md2tex');
-sub md2tex {
-  return system("
-    cat $_[0].md | sed -r '
-    s/@@/@@ /g
-    s/##/## /g
-    s/@([A-Za-z0-9]+)/\\\\cite{\\1}/g
-    s/#([A-Za-z0-9]+)/\\\\autoref{\\1}/g
-    s/@@ /@/g
-    s/## /#/g
-    ' | pandoc -f markdown -t latex -o $_[0].mdtex");
-};
diff --git a/tex/main.pdf b/tex/main.pdf
deleted file mode 100644
index 62ae775..0000000
Binary files a/tex/main.pdf and /dev/null differ
diff --git a/tex/main.tex b/tex/main.tex
deleted file mode 100644
index 819b129..0000000
--- a/tex/main.tex
+++ /dev/null
@@ -1,145 +0,0 @@
-% \documentclass[draft]{sig-alternate}
-\documentclass{sig-alternate}
-
-\parindent 0pt
-\usepackage[ruled, vlined]{algorithm2e}
-\parindent 10pt
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage[autostyle=false, style=english]{csquotes}
-\usepackage[usenames,dvipsnames]{color}
-\usepackage[nodayofweek]{datetime}
-\usepackage{amssymb}
-\usepackage{booktabs}
-\usepackage[tableposition=top, font=bf]{caption}
-\usepackage{balance}
-\usepackage{enumitem}
-\usepackage{graphicx}
-\usepackage{gnuplottex}
-\usepackage{ifthen}
-\usepackage{quoting}
-\usepackage{sepfootnotes}
-\usepackage{setspace}
-\usepackage{xcolor}
-\usepackage[hyphens]{url}
-\usepackage[pdfpagelabels=false,draft=true]{hyperref}
-\usepackage{hypcap}
-
-\MakeOuterQuote{"}
-\def\algorithmautorefname{Algorithm}
-
-\newdateformat{lv}{\THEDAY{ }\monthname[\THEMONTH] \THEYEAR}
-\newcommand{\lastvisited}{Last visited \lv\today}
-\newcommand\TODO[1]{\emph{\color{Red} TODO: #1}}
-\newcommand\noop[1]{\emph{\emph{#1}}}
-\newcommand\edit[1]{\emph{\color{Green}#1}}
-\newcommand\code[1]{\texttt{#1}}
-\newcommand\coderef[1]{\texttt{\ref{#1}}}
-\newcommand\stringliteral[1]{\texttt{\char`\"#1\char`\"}}
-\newcommand\len[1]{|#1|}
-\newcommand\set[1]{\{#1\}}
-\newcommand\surl[1]{\urlstyle{ff}\url{#1}}
-\newcommand\Oof[1]{$\mathcal{O}(#1)$}
-\newboolean{fref}
-
-\begin{document}
-
-  \title{BlogForever Crawler: Techniques and Algorithms\\to Harvest Modern Weblogs}
-
-  \numberofauthors{3}
-
-  \author{
-  \alignauthor
-  Olivier Blanvillain\\
-         \affaddr{École Polytechnique Fédérale de Lausanne (EPFL)}\\
-         \affaddr{1015 Lausanne, Switzerland}\\
-         \email{\href{mailto:olivier.blanvillain@epfl.ch}{olivier.blanvillain@epfl.ch}}
-  \alignauthor
-  Nikos Kasioumis\\
-         \affaddr{European Organization for Nuclear Research (CERN)}\\
-         \affaddr{1211 Geneva 23, Switzerland}\\
-         \email{\href{mailto:nikos.kasioumis@cern.ch}{nikos.kasioumis@cern.ch}}
-  \alignauthor
-  Vangelis Banos\\
-         \affaddr{Department of Informatics}\\
-         \affaddr{Aristotle University of Thessaloniki, Greece}\\
-         \email{\href{mailto:vbanos@gmail.com}{vbanos@gmail.com}}
-  }
-
-  \permission{Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Permissions@acm.org.}
-
-  \conferenceinfo{WIMS'14,}{June 02-04, 2014 Thessaloniki, Greece}
-  \crdata{978-1-4503-2538-7/14/06}
-  \newcommand{\doi}{http://dx.doi.org/10.1145/2611040.2611067}
-
-  \global\copyrightetc{Copyright is held by the owner/authors. Publication rights licensed to ACM. ACM \the\acmcopyr\$15.00.\\\doi}
-
-  \maketitle
-
-  \begin{abstract}
-    \input{0-abstract.mdtex}
-  \end{abstract}
-
-  \category{H.3.3}{Information Storage and Retrieval}{Information Search and Retrieval}[Information filtering, Query formulation, Selection process]
-  \category{\\D.2.8}{Software Engineering}{Metrics}[Complexity measures, Performance measures]
-  \terms{Design, Algorithms, Performance, Experimentation}
-  \keywords{Blog crawler, web data extraction, wrapper generation}
-
-  \input{algos.tex}
-  \input{tables.tex}
-
-  \section{Introduction}
-  \label{introduction}
-  \input{1-introduction.mdtex}
-
-  \section{Algorithms}
-  \label{algorithms}
-  \input{2-algorithms.mdtex}
-
-  \section{Architecture}
-  \label{architecture}
-  \input{3-architecture.mdtex}
-
-  \section{Evaluation}
-  \label{evaluation}
-  \input{4-evaluation.mdtex}
-
-  \section{Related Work}
-  \label{relatedwork}
-  \input{5-related-work.mdtex}
-
-  \section{Conclusion and Future Work}
-  \label{conclusionandfuturework}
-  \input{6-conclusion-and-future-work.mdtex}
-
-  \section{Acknowledgments}
-  \label{acknowledgments}
-  \input{7-acknowledgments.mdtex}
-
-  \vspace{3pt}
-
-  \balance
-
-  \def\changemargin{\list{}{\leftmargin3pt}\item[]}
-  \let\endchangemargin=\endlist
-  \let\oldbibitem\bibitem
-
-  \setboolean{fref}{true}
-  \renewcommand\bibitem[1]{
-    \ifthenelse{\boolean{fref}}{
-      \setboolean{fref}{false}
-      \vspace{4pt}
-      \oldbibitem{#1}
-      \begin{changemargin}
-    }{
-      \end{changemargin}
-      \oldbibitem{#1}
-      \begin{changemargin}
-    }
-  }
-
-  \bibliographystyle{abbrv}
-  \input{hardcoded.bbl}
-  % \bibliography{short}
-
-\end{document}
diff --git a/ws-ijait.cls b/ws-ijait.cls
new file mode 100644
index 0000000..3c13497
--- /dev/null
+++ b/ws-ijait.cls
@@ -0,0 +1,1050 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Trim Size: 9.75in x 6.5in
+%% Text Area: 8in (include Runningheads) x 5in
+%% ws-ijait.cls   :   29-3-2004
+%% Class file to use with ws-ijait.tex written in Latex2E.
+%% The content, structure, format and layout of this style file is the
+%% property of World Scientific Publishing Co. Pte. Ltd.
+%% Copyright 1995, 2002 by World Scientific Publishing Co.
+%% All rights are reserved.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{ws-ijait}[1994/07/13 v1.2u Standard LaTeX document class]
+%Sankaran dd 21/1/2000 for special issue and status of proofs
+\@twosidetrue\@mparswitchtrue\@twocolumnfalse
+\newif\if@openright
+\@openrighttrue
+\newif\if@restonecol
+%
+\newif\if@draft
+%
+\newdimen\draftrule
+\draftrule=0pt
+%
+%
+\DeclareOption{splissue}{\@splissuetrue}
+\DeclareOption{draft}{\@drafttrue\setlength\overfullrule{5pt}\draftrule0.01pt}%
+
+%
+%\hoffset=-1.5cm
+%\voffset=-0.5cm
+%
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+%
+\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final}
+\ProcessOptions
+%
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+\newcommand\bibname{References}%
+%
+\newcommand\today{\ifcase\month\or
+  January\or February\or March\or April\or May\or June\or
+  July\or August\or September\or October\or November\or December\fi
+	\space\number\day, \number\year}
+\newcount\minute
+\newcount\hour
+\def\currenttime{%
+	\minute\time
+	\hour\minute
+	\divide\hour60
+	\the\hour:\multiply\hour60\advance\minute-\hour\the\minute}
+%
+\newdimen\trimheight
+\newdimen\trimwidth
+\newdimen\typeheight
+\newdimen\typewidth
+\newdimen\tempdimen
+\newdimen\tablewidth
+\newdimen\normaltextheight
+\newbox\tempbox
+\newdimen\tablewd
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fonts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\foliofont{\fontsize{8}{10}\selectfont}
+\def\foliocontfont{\fontsize{10}{13}\selectfont}
+\def\bibfont{\fontsize{9}{11}\selectfont}
+\def\rhfont{\footnotesize\itshape{}}
+\def\catchlinefont{\footnotesize}
+\def\titlefont{\fontsize{10}{13}\bfseries\boldmath\selectfont\centering{}}
+\def\authorfont{\footnotesize}
+\def\abstractfont{\footnotesize}
+\let\affiliationfont\rhfont
+\def\datefont{\footnotesize}
+\def\sectionfont{\bfseries\boldmath\rightskip2pc plus1fill{}}
+\def\subsectionfont{\bfseries\boldmath\itshape\rightskip2pc plus1fill{}}
+\def\subsubsectionfont{\itshape\rightskip2pc plus1fill{}}
+\def\paragraphfont{\bfseries\boldmath}
+\def\subparagraphfont{\itshape}
+\def\figurecaptionfont{\footnotesize}
+\def\tablefont{\footnotesize}
+\def\tablecaptionfont{\footnotesize}
+%
+\renewcommand\normalsize{%
+   \@setfontsize\normalsize\@xpt{13}%\@xiiipt
+   \abovedisplayskip6\p@\@plus4\p@\@minus2\p@
+   \abovedisplayshortskip\abovedisplayskip
+   \belowdisplayshortskip\abovedisplayshortskip
+   \belowdisplayskip\abovedisplayskip
+   \let\@listi\@listI}
+\normalsize
+%
+\newcommand\small{%
+   \@setfontsize\small\@ixpt{11}%
+   \abovedisplayskip 8\p@ \@plus3\p@ \@minus4\p@
+   \abovedisplayshortskip \z@ \@plus2\p@
+   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+   \def\@listi{\leftmargin\leftmargini
+               \topsep 4\p@ \@plus2\p@ \@minus2\p@
+               \parsep 2\p@ \@plus\p@ \@minus\p@
+               \itemsep \parsep}%
+   \belowdisplayskip \abovedisplayskip}
+%
+\newcommand\footnotesize{%
+   \@setfontsize\footnotesize\@viiipt{10}%
+   \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+   \abovedisplayshortskip \z@ \@plus\p@
+   \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+   \def\@listi{\leftmargin\leftmargini
+               \topsep 3\p@ \@plus\p@ \@minus\p@
+               \parsep 2\p@ \@plus\p@ \@minus\p@
+               \itemsep \parsep}%
+   \belowdisplayskip \abovedisplayskip}
+%
+\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand\large{\@setfontsize\large\@xiipt{14}}%
+\newcommand\Large{\@setfontsize\Large\@xivpt{16}}%%
+\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
+\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
+%
+\DeclareOldFontCommand{\rm}{\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\scshape}{\@nomath\sc}
+\DeclareOldFontCommand{\bi}{\bfseries\itshape}{\bfseries\itshape}
+\renewcommand{\rmdefault}{cmr}%
+%
+\DeclareMathSizes{28}{28}{25}{20}
+\DeclareMathSizes{24}{24}{21}{18}
+\DeclareMathSizes{22}{22}{19}{17}
+\DeclareMathSizes{20}{20}{17}{15}
+\DeclareMathSizes{18}{18}{15}{10}
+\DeclareMathSizes{12}{11}{8}{5}
+\DeclareMathSizes{11}{11}{8}{5}
+\DeclareMathSizes{10}{10}{7}{5}
+\DeclareMathSizes{9.5}{9}{7}{5}
+\DeclareMathSizes{9}{9}{7}{5}
+\DeclareMathSizes{8}{8}{6}{5}
+\DeclareMathSizes{7}{7}{5}{5}
+\DeclareMathSizes{6}{6}{5}{5}
+\DeclareMathSizes{5}{5}{5}{5}
+\def\bm#1{\mathchoice
+	{\mbox{\boldmath$#1$}}%
+          {\mbox{\boldmath$#1$}}%
+          {\mbox{\boldmath$\scriptstyle#1$}}%
+          {\mbox{\boldmath$\scriptscriptstyle#1$}}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Initializations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\newdimen\trimheight \trimheight9.71truein   %measure is 9.75truein
+\newdimen\trimwidth \trimwidth6.48truein     %measure is 6.50truein
+\typeheight48.1pc
+\typewidth5truein
+%
+\setlength\parindent{1.5em}%10\p@
+\setlength\headheight{5\p@}
+\setlength\headsep   {19pt}%15
+\setlength\topskip   {7\p@}%{10\p@}
+\setlength\footskip{10pt}%18pt
+\setlength\maxdepth{4\p@}
+\setlength\@maxdepth\maxdepth
+\setlength\textwidth{5truein}
+\setlength\textheight\typeheight
+\advance\textheight-\headheight
+\advance\textheight-\headsep
+\setlength\normaltextheight{\textheight}
+\setlength\oddsidemargin{21mm}%.625in%
+\setlength\evensidemargin{\trimwidth}
+\addtolength\evensidemargin{-\textwidth}
+\addtolength\evensidemargin{-\oddsidemargin}
+\setlength\marginparwidth{.75in}
+\setlength\marginparsep{7\p@}
+\setlength\marginparpush{5\p@}
+\setlength\topmargin{.85926in}%
+\setlength\footnotesep{6\p@}%6pt
+\setlength{\skip\footins}{18\p@ \@plus 5\p@ \@minus 2\p@}
+\setlength\floatsep    {18\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{18\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep   {18\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dblfloatsep    {18\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{18\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\@fptop{0\p@}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+\setlength\partopsep{0\p@}
+%
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}%
+\renewcommand\baselinestretch{}%{}
+\setlength\parskip{0\p@}
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty   -\@lowpenalty
+\@itempenalty     -\@lowpenalty
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%Title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\title#1{\gdef\@title{{#1}}}
+\newcommand\maketitle{\par
+  \begingroup
+   \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+    \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+    \long\def\@makefntext##1{\noindent
+	\@textsuperscript{\normalfont\@thefnmark}{{##1}}}%
+      \newpage
+      \global\@topnum\z@
+      \@maketitle
+    \thispagestyle{plain}\@thanks
+  \endgroup
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  \global\let\@maketitle\relax
+  \global\let\@thanks\@empty
+  \global\let\@author\@empty
+  \global\let\@title\@empty
+  \global\let\title\relax
+  \global\let\author\relax
+}
+\def\@maketitle{%
+  \newpage
+  \null
+  \vspace*{-10pt}
+   \vspace*{-25pt}% to have the bylines on the beginning of the page
+  \@clinebuf
+%  \vspace*{52pt}
+  \vspace*{49pt}
+  \begin{center}%
+  \let\footnote \thanks
+  {\titlefont\@title \par}%
+  \vspace*{28pt}
+  \@aabuffer\par
+  \end{center}%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End Title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%For contents pages %%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\journalname{\uppercase{ International Journal on\\
+Artificial Intelligence Tools}}
+\def\chead#1#2#3{\par
+\thispagestyle{empty}
+{\centering{%
+{\titlefont\journalname}\par
+{\sl Vol.~#1, No.~#2 (#3)}\par
+\vspace*{34pt}
+\noindent CONTENTS\par}}
+\vspace*{18pt}}
+%
+\def\leaderfill{\leaders\hbox to 1em{\hss.\hss}\hfill}
+
+\def\centry#1#2#3{\par{\foliocontfont
+	{\rightskip3pc plus1fil
+	\noindent{{#1}\par}\par
+	\vskip-\lastskip\vskip-\baselineskip
+	\hbox to \hsize{\hfill{#3}}\par}
+	\noindent\ignorespaces\hspace*{18pt}{\itshape #2}\par}\par
+	\addvspace{8pt plus1pt minus1pt}\par
+}
+
+%
+\def\ehead#1#2#3{\par
+	\addvspace{12pt plus1pt minus1pt}
+	{\foliocontfont\rightskip4pc plus1fil
+	\noindent{\bf #1{#2}{#3}\par}
+	\vspace*{4pt}}\par}
+\def\eehead#1#2#3{\par
+	\addvspace{6pt plus1pt minus1pt}
+	{\foliocontfont\rightskip4pc plus1fil
+	\noindent{\bf #1{#2}{#3}\par}
+	\vspace*{4pt}}\par}
+%
+\def\cent#1#2#3{\par\bibfont\addvspace{10pt plus2pt minus2pt}
+	{\rightskip4pc plus1fil
+	\noindent#1\par}\par
+	\vskip-\lastskip\vskip-\baselineskip
+	\hbox to \hsize{\hfill#3}\par
+	{\noindent\leftskip15pt{\rightskip4pc plus1fil{\it #2}\par}}\par}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Local Definitions %%%%%%%%%%%%%%%%%%%%%%
+%
+%\def\u#1{\uppercase{#1}}
+\def\uc#1{\uppercase{#1}}
+\newcommand{\cal}{\protect\pcal}
+\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
+%
+\def\mtb{\fboxsep=0pt\fbox{\phantom{e}}}
+\def\breakhere{\par\vskip-\lastskip
+			\pagebreak}
+\def\forcebreak{\vadjust{\pagebreak}}
+%
+\def\thebepage{\thepage}
+\def\theeepage{\pageref{eof}}
+
+\newenvironment{history}{%
+	\addvspace{-2pt plus-2pt minus-2pt}
+   \authorfont\begin{center}\vskip-\lastskip
+}{%
+   \end{center}
+	\addvspace{15pt plus2pt minus2pt}
+}
+%
+\def\email#1{\it #1\par}
+\def\http#1{\it http://#1\par}
+\def\url#1{\it #1\par}
+\def\received#1{Received~#1\par}
+\def\revised#1{Revised~#1\par}
+\def\accepted#1{Accepted~#1\par}
+\def\comby#1{\par\addvspace{1\baselineskip}Communicated\ by~#1\par}
+%
+
+\def\@clinebuf{}
+\def\catchline#1#2#3{\expandafter\def\expandafter\@clinebuf\expandafter
+	{\@clinebuf\catchlinefont
+	\noindent  International Journal on Artificial Intelligence
+Tools\par
+%	\noindent Vol.\ {#1}, \No\ {#2} (#3)\ \thebepage--\theeepage\par
+	\noindent \copyright\ World Scientific Publishing Company\par
+	}\relax\par
+	}%
+\def\No{No.}
+%
+%\def\and{\hbox{\lowercase{ and }}}
+\def\and{\hbox{\lowercase{and }}} %elsie 14/5/98
+\def\aand{\\[10pt]{\upshape{and}}\\[-3pt]}
+\def\@aabuffer{}
+\def\author#1{\expandafter\def\expandafter\@aabuffer\expandafter
+	{\@aabuffer{\authorfont{{{#1}}}}\relax\par
+	\vspace*{3pt}}}
+%
+\def\address#1{\expandafter\def\expandafter\@aabuffer\expandafter
+	{\@aabuffer{\affiliationfont{#1}}\relax\par
+	\vspace*{13pt}}}
+%
+\def\keywords#1{\par
+	\vspace*{8pt}
+	{\authorfont{\leftskip18pt\rightskip\leftskip
+	\noindent{\it Keywords}\/:\ #1\par}}\par}
+%
+\def\category#1#2{\par
+	\vspace*{8pt}
+	{\authorfont{\leftskip18pt\rightskip\leftskip
+	\noindent{\it Categories}\/:\ #1:\ #2\par}}\par}
+%
+\newenvironment{abstract}{\par%
+	\abstractfont
+  	\noindent\leftskip18pt\rightskip18pt
+}{%
+  \par}
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%% SUPERSCRIPT CITATIONS %%%%%%%%%%%%%%%%%%%%%%%%
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout
+	{\string\citation{#2}}\fi
+\def\@citea{}\@cite{\@for\@citeb:=#2\do
+	{\@citea\def\@citea{,}\@ifundefined
+	{b@\@citeb}{{\bf ?}\@warning
+	{Citation `\@citeb' on page \thepage \space undefined}}
+	{\csname b@\@citeb\endcsname}}}{#1}}
+ \newif\if@cghi
+\def\cite{\@cghitrue\@ifnextchar [{\@tempswatrue
+	\@citex}{\@tempswafalse\@citex[]}}
+\def\citelow{\@cghifalse\@ifnextchar [{\@tempswatrue
+	\@citex}{\@tempswafalse\@citex[]}}
+\def\@cite#1#2{{$\null^{#1}$\if@tempswa\typeout
+	{WSPC warning: optional citation argument
+	ignored: `#2'} \fi}}
+\newcommand{\citeup}{\cite}
+%%%%%%%%%%%%%%%%%%%%%%%% SUPERSCRIPT CITATIONS %%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+\def\@refcitex[#1]#2{\if@filesw\immediate\write\@auxout
+	{\string\citation{#2}}\fi
+\def\@citea{}\@refcite{\@for\@citeb:=#2\do
+	{\@citea\def\@citea{, }\@ifundefined
+	{b@\@citeb}{{\bf ?}\@warning
+	{Citation `\@citeb' on page \thepage \space undefined}}
+	\hbox{\csname b@\@citeb\endcsname}}}{#1}}
+ \def\@refcite#1#2{{#1\if@tempswa\typeout
+        {WSPC warning: optional citation argument
+	ignored: `#2'} \fi}}
+ \def\refcite{\@ifnextchar[{\@tempswatrue
+	\@refcitex}{\@tempswafalse\@refcitex[]}}
+
+\def\dfrac#1#2{{\displaystyle{#1\over#2}}}
+\def\tfrac#1#2{{\textstyle{#1\over#2}}}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Lists %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\@listI{\leftmargin\leftmargini
+            \listparindent\parindent
+            \parsep \z@\labelsep.5em
+            \topsep 6.5\p@ \@plus3\p@% \@minus2\p@
+            \itemsep0\p@}
+%
+\let\@listi\@listI
+\@listi
+%
+\def\@listii {\leftmargin\leftmarginii
+              \labelwidth\leftmarginii
+              \advance\labelwidth-\labelsep
+              \topsep    3.5\p@ \@plus2\p@ \@minus\p@
+              \parsep    \z@
+              \itemsep\z@}
+\def\@listiii{\leftmargin\leftmarginiii
+              \labelwidth\leftmarginiii
+              \advance\labelwidth-\labelsep
+              \topsep 3.5\p@ \@plus\p@\@minus\p@
+              \parsep \z@
+             % \partopsep \p@ \@plus\z@ \@minus\p@
+              \itemsep0\p@}%
+\def\@listiv {\leftmargin\leftmarginiv
+              \labelwidth\leftmarginiv
+              \advance\labelwidth-\labelsep}
+\def\@listv  {\leftmargin\leftmarginv
+              \labelwidth\leftmarginv
+              \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+              \labelwidth\leftmarginvi
+              \advance\labelwidth-\labelsep}
+%
+\setlength\leftmargini{3pc}
+\setlength\leftmarginii{2.2em}
+\setlength\leftmarginiii{1.87em}
+\setlength\leftmarginiv{1.7em}
+\setlength\leftmarginv{1em}
+\setlength\leftmarginvi{1em}
+\setlength\leftmargin{\leftmargini}
+\setlength\listparindent{\parindent}
+\setlength  \labelsep  {.5em}
+\setlength  \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+\renewcommand\theenumi{\arabic{enumi}}
+\renewcommand\theenumii{\alph{enumii}}
+\renewcommand\theenumiii{\roman{enumiii}}
+\renewcommand\theenumiv{\Alph{enumiv}}
+\newcommand\labelenumi{(\theenumi)}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{$\m@th\bullet$}
+\newcommand\labelitemii{\normalfont\bfseries --}
+\newcommand\labelitemiii{$\m@th\ast$}
+\newcommand\labelitemiv{$\m@th\cdot$}
+%
+\def\enummax#1{\setbox\tempbox=\hbox{#1\hskip\labelsep}%
+  \expandafter\global\csname leftmargin\romannumeral\the\@enumdepth\endcsname\wd\tempbox}
+%
+\def\enumerate{\@ifnextchar[{\@enumerate}{\@enumerate[\csname label\@enumctr\endcsname]}}
+%
+\def\@enumerate[#1]{\ifnum \@enumdepth >3 \@toodeep\else
+      \advance\@enumdepth \@ne\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+      \enummax{#1}\list
+      {\csname label\@enumctr\endcsname}{\usecounter
+        {\@enumctr}\def\makelabel##1{\hss\llap{##1}}}\fi}
+%
+\let\Item\item
+\newenvironment{enumeroman}{%
+  \def\theenumi{\roman{enumi}}\def\theenumii{\alph{enumii}}%
+  \def\labelenumi{(\theenumi)}\def\labelenumii{(\theenumii)}%
+		\let\item\Item
+  \begin{enumerate}%
+}{%
+  \end{enumerate}}
+%
+\newenvironment{alphlist}{%
+  \def\theenumi{\alph{enumi}}\def\theenumii{\roman{enumii}}%
+  \def\labelenumi{(\theenumi)}\def\labelenumii{(\theenumii)}%
+		\let\item\Item
+  \begin{enumerate}%
+}{%
+  \end{enumerate}}
+%
+\newenvironment{arabiclist}{%
+	\def\theenumi{\arabic{enumi}}\def\theenumii{\alph{enumii}}
+	\def\labelenumi{(\theenumi)}\def\labelenumii{(\theenumii)}%
+	\let\item\Item
+	\begin{enumerate}
+	}{%
+	\end{enumerate}}
+%
+\newenvironment{romanlist}{%
+	\def\theenumi{\roman{enumi}}\def\theenumii{\alph{enumii}}
+	\def\labelenumi{(\theenumi)}\def\labelenumii{(\theenumii)}%
+	\let\item\Item
+	\begin{enumerate}
+	}{%
+	\end{enumerate}}
+%
+\newenvironment{itemlist}{%
+	\def\labelenumi{\labelitemi}
+	\let\item\Item
+	\begin{enumerate}
+	}{%
+	\end{enumerate}}
+%
+\newenvironment{description}
+               {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+                        \let\makelabel\descriptionlabel}}
+               {\endlist}
+\newcommand*\descriptionlabel[1]{\hspace\labelsep
+                                \normalfont\bfseries #1}
+%
+\newenvironment{unnumlist}{%
+	\let\item\Item
+  	\leftmargini2pc
+   	\ifnum \@enumdepth >3 \@toodeep\else
+      	\advance\@enumdepth \@ne
+      	\list{}{\itemindent-2pc\topsep6pt
+              \def\makelabel##1{\hss\llap{##1}}}%
+   \fi
+}{%
+  \endlist}
+
+\newenvironment{quote}
+               {\list{}{\rightmargin18pt\leftmargin18pt}%
+                \item[]}
+               {\endlist}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\setcounter{secnumdepth}{3}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+\renewcommand\thesection      {\arabic{section}}
+\renewcommand\thesubsection   {\thesection.\arabic{subsection}}
+\renewcommand\thesubsubsection{\thesubsection .\arabic{subsubsection}}
+\renewcommand\theparagraph    {\thesubsubsection.\arabic{paragraph}}
+\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+%
+\newcommand\section{\@startsection{section}{1}{\z@}{-18pt \@plus-3pt minus-6pt}{5pt}{\sectionfont}}
+\newcommand\subsection{\@startsection{subsection}{2}{\z@}{-18pt \@plus-3pt minus-6pt}{5pt}{\subsectionfont}}
+\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-18pt \@plus-3pt minus-3pt}{5pt}{\subsubsectionfont}}
+\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}{12pt \@plus -3pt}{-.5em}{\paragraphfont}}
+\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}{3.25ex \@plus1ex}{-1em}{\subparagraphfont}}
+%
+\def\@seccntformat#1{{\upshape{\csname the#1\endcsname.}}\hskip .5em}
+%
+\gdef\@author{}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Floats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\setcounter{topnumber}{3}
+\def\topfraction{.98}
+\setcounter{bottomnumber}{3}
+\def\bottomfraction{.98}
+\setcounter{totalnumber}{6}%4
+\def\textfraction{.01}
+\def\floatpagefraction{.98100}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.981}
+\def\dblfloatpagefraction{.99}
+%
+%
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{6\p@}% plus3pt minus3pt}
+\setlength\belowcaptionskip{-1\p@}
+%
+\def\FigName{figure}%
+%
+%
+\InputIfFileExists{psfig.sty}{\typeout{^^Jpsfig.sty inputed...ok}}{\typeout{^^JWarning: psfig.sty could be be found.^^J}}
+\InputIfFileExists{epsfsafe.tex}{\typeout{^^Jepsfsafe.tex inputed...ok}}
+			{\typeout{^^JWarning: epsfsafe.tex could not be found.^^J}}
+\InputIfFileExists{epsfig.sty}{\typeout{^^Jepsfig.sty inputed...ok}}{\typeout{^^JWarning: epsfig.sty could not be found.^^J}}
+\InputIfFileExists{epsf.sty}{\typeout{^^Jepsf.sty inputed...ok}}{\typeout{^^JWarning: epsf.sty could not be found.^^J}}%
+%\InputIfFileExists{psfig.sty}{}{}
+%\InputIfFileExists{epsf.sty}{}{}
+%
+\newbox\captionbox
+%
+\long\def\@makecaption#1#2{%
+  \ifx\FigName\@captype
+    	\vskip\abovecaptionskip
+ 	\setbox\captionbox\hbox{%
+	{\figurecaptionfont#1.\unskip\ignorespaces\hskip1em#2\par}}
+	\ifdim\wd\captionbox>\hsize
+	{\figurecaptionfont#1.\unskip\ignorespaces\hskip1em#2\par}\par
+	\else
+	\centerline{\figurecaptionfont#1.\unskip\ignorespaces\hskip1em#2}\par
+	\fi\else\global\setbox\captionbox\hbox{%
+	{\tablecaptionfont#1.\ignorespaces\hskip1em#2\par}}
+	\fi
+}
+%
+\def\figurename{Fig.}
+\newcounter{figure}
+\renewcommand\thefigure{\@arabic\c@figure}
+\def\fps@figure{htbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+\newenvironment{figure}
+               {\@float{figure}}
+               {\end@float}
+\newenvironment{figure*}
+               {\@dblfloat{figure}}
+               {\end@dblfloat}
+%
+\def\ArtDir{\jobname/}
+\def\figurebox#1#2#3{%
+        \def\arg{#3}%
+        \ifx\arg\empty
+        {\hfill\vbox{\hsize#2\hrule\hbox to #2{%
+                \vrule\hfill\vbox to #1{\hsize#2\vfill}\vrule}\hrule}\hfill}%
+        \else
+        \hbox to \hsize{\hfill\epsfbox{\ArtDir#3.eps}\hfill}
+        \fi}
+%
+\def\PSFIG#1#2#3{\par
+  {\hbox to \hsize{%
+	\hfill{\psfig{file=\ArtDir#1.eps,width=#2,angle=#3}}\hfill}\par}}%
+%
+\newcounter{table}
+\def\tablename{Table}
+\renewcommand\thetable{\@arabic\c@table}
+\def\fps@table{htbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+\newenvironment{table}
+               {\@float{table}}
+               {\end@float}
+\newenvironment{table*}
+               {\@dblfloat{table}}
+               {\end@dblfloat}
+%
+\long\def\tbl#1#2{%
+	\parindent\z@\ignorespaces\noindent\tablecaptionfont
+	\caption{#1}%
+  	\par\setbox\tempbox\hbox{\tablefont #2}%
+  	\tablewd\hsize\advance\tablewd-\wd\tempbox\global\divide\tablewd\tw@
+	\ifdim\wd\captionbox<\wd\tempbox\centerline{\unhbox\captionbox}
+	\else\leftskip\tablewd\rightskip\leftskip{\unhbox\captionbox}\par
+	\fi\vskip5pt\centerline{\box\tempbox}
+}%
+%
+\long\def\ttbl#1#2#3{%
+	\parindent\z@
+	\noindent
+  	\tablecaptionfont
+	\caption{#2}%
+	\tablewd\hsize
+	\advance\tablewd-#1
+  	\global\divide\tablewd\tw@
+	\ifdim \wd\captionbox<#1
+	\centerline{\unhbox\captionbox}
+	\else
+  	{\leftskip\tablewd% plus1fill{}
+	\rightskip\tablewd% plus1fill{}
+  	\unhbox\captionbox\par}
+	\fi
+ 	\vskip-8pt
+	\centerline{#3}
+}%
+%
+\newenvironment{InTextTable}{%
+ 	\par\addvspace{16pt plus6pt minus6pt}%
+ 	\begin{center}
+	\tablecaptionfont\noindent\ignorespaces
+}{%
+   	\end{center}\par\addvspace{17pt plus6pt minus6pt}}
+%
+\newenvironment{tabnote}{%
+	\par\vskip5pt\footnotesize%
+	\@ifnextchar[{\@tabnote}{\@tabnote[Note]}}{%
+	\par\vskip-5pt}
+\def\@tabnote[#1]{%
+	\leftskip\tablewd\rightskip\leftskip {\it #1}\/:\ \ignorespaces}
+%
+\def\Hline{%
+  \noalign{\ifnum0=`}\fi\hrule \@height 2\arrayrulewidth \futurelet
+   \@tempa\@xhline}
+%
+
+\def\x{@{\extracolsep{\fill}}}
+\def\toprule{\Hline\\[-6.5pt]}
+\def\colrule{\\[-7pt]\hline\\[-6pt]}
+\def\TMcolrule{\\[-9.5pt]\hline\\[-9.5pt]}
+\def\botrule{\\[-9pt]\Hline}
+\def\crule#1{\\[-10pt]#1\\[-6pt]}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Maths %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\setlength\arraycolsep{1.5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+\skip\@mpfootins = \skip\footins
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+\renewcommand\theequation{\arabic{equation}}
+%
+\setlength\columnsep{10\p@}
+\setlength\columnseprule{0\p@}
+%
+\def\bstrut{\vrule width0pt depth5pt}
+\def\tstrut{\vrule width0pt height10pt}
+\jot=3pt
+%
+%
+\renewcommand{\[}{\relax\ifmmode\@badmath\else\bgroup\let\eqnnum\relax\let\refstepeqcnt\relax\@equation\fi}
+\renewcommand{\]}{\relax\ifmmode\end@equation\egroup\@endparenv\@doendpe\else\@badmath\fi}
+%
+\@namedef{equation*}{\let\eqnnum\relax\let\refstepeqncnt\relax\@equation}
+\@namedef{endequation*}{\end@equation}
+\renewenvironment{equation}{\@equation}{\end@equation}
+%
+\def\refstepeqcnt{\refstepcounter{equation}}
+\def\eqnnum{\displaywidth\linewidth\hbox{\@eqnnum}}
+%
+\def\@equation{\let\topsep\abovedisplayskip\@beginparpenalty\predisplaypenalty\@endparpenalty\postdisplaypenalty
+     \refstepeqcnt
+     \trivlist \item[]\leavevmode
+       \hbox to\linewidth\bgroup\hfill $\m@th% $
+       \displaystyle}%
+\def\end@equation{$\hfill\eqnnum\egroup\endtrivlist}
+%
+\renewenvironment{eqnarray}{%
+   \stepcounter{equation}%
+   \def\@currentlabel{\p@equation\theequation}%
+   \global\@eqnswtrue
+   \m@th
+   \global\@eqcnt\z@
+   \tabskip\@centering
+   \let\\\@eqncr
+   $$\everycr{}\halign to\displaywidth\bgroup
+       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
+      &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
+      &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
+         $\displaystyle{##}$\hfil\tabskip\@centering
+      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+         \tabskip\z@skip
+      \cr}
+        {%
+      \@@eqncr
+      \egroup
+      \global\advance\c@equation\m@ne
+   $$\global\@ignoretrue
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Footnote %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\renewcommand\footnoterule{%
+  \kern-3\p@
+  \hrule depth0pt height0pt \@width.2\columnwidth
+  \kern2.6\p@}
+\newcommand\@makefntext[1]{%
+    \parindent 1em%
+    \noindent
+     \@makefnmark#1}
+%
+\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
+   	\mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
+   	\or \ddagger\ddagger \else\@ctrerr\fi}}
+\def\thefootnote{\alph{footnote}}
+\def\@makefnmark{{$^{\rm \@thefnmark}$}}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Page Style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\mark{{}{}}
+%
+\def\ps@plain{%
+     \let\@mkboth\@gobbletwo
+     \let\@oddhead\@empty
+     \def\@oddfoot{\hfill\mbox{\lower12pt\hbox{\foliofont\thepage}}\hfill}%
+     \let\@evenhead\@empty
+     \let\@evenfoot\@oddfoot}
+%
+\def\RightMark{}
+%
+\def\ps@headings{%
+    \let\@oddfoot\@empty
+    \let\@evenfoot\@empty
+    \def\@evenhead{\rhfont{\upshape{\thepage}}\hskip1em\leftmark\hfill}%
+    \def\@oddhead{\hfill\rhfont\rightmark\hskip1em{\upshape{\thepage}}}%
+    \let\@mkboth\markboth
+    \def\authormark##1{\markboth{##1}{\RightMark}}%
+    \def\chaptermark##1{\gdef\RightMark{##1}\markright{##1}}}%
+    %\def\sectionmark##1{\gdef\RightMark{##1}\markright{##1}}}%
+%
+\def\ps@myheadings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\rlap{\foliofont \thepage}\hfill{\rhfont\leftmark}\hfill}%
+    \def\@oddhead{\hfill{\rhfont\rightmark}\hfill{\foliofont\thepage}}%
+    \let\@mkboth\@gobbletwo
+    \let\chaptermark\@gobble
+    \let\sectionmark\@gobble}
+%
+\def\ps@pblind{%
+	\let\@mkboth\@gobbletwo
+	\def\@evenhead{}%
+	\def\@oddhead{}
+	\def\@oddfoot{\hfill\mbox{\lower8pc\hbox{}}\hfill}
+   \let\@evenfoot\@oddfoot}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% theorem environments %%%%%%%%%%%%%%%%%%%%
+%
+\def\@xthm#1#2{\@begintheorem{#2}{\csname the#1\endcsname}{}\ignorespaces}
+\def\@ythm#1#2[#3]{\@begintheorem{}{\csname the#1\endcsname}{#3}\ignorespaces}
+%
+\let\Definitionfont\upshape%
+\let\Theoremfont\upshape
+\let\Corollaryfont\itshape
+\let\Propositionfont\itshape
+\let\Lemmafont\itshape
+\let\Examplefont\upshape
+\let\Theoremheadfont\bfseries
+\let\Corollaryheadfont\bfseries
+\let\Propositionheadfont\bfseries
+\let\Lemmaheadfont\bfseries
+\let\Definitionheadfont\bfseries
+\let\Remarkfont\upshape
+\def\Exampleheadfont{\bfseries}
+\def\Remarkheadfont{\bfseries}
+%
+\def\@begintheorem#1#2#3{\par\addvspace{8pt plus3pt minus2pt}%
+              \noindent{\csname#1headfont\endcsname#1\ \ignorespaces#3 #2.}%
+              \csname#1font\endcsname\hskip.5em\ignorespaces}
+\def\@endtheorem{\par\addvspace{8pt plus3pt minus2pt}\@endparenv}
+%
+%
+\newcounter{lemma}
+\newcounter{corollary}
+\newcounter{proposition}
+\newcounter{definition}
+\newcounter{example}
+\newcounter{remark}
+\newcounter{question}
+\newcounter{notation}
+%
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{corollary}{Corollary}[section]
+\newtheorem{lemma}{Lemma}[section]
+\newtheorem{proposition}{Proposition}[section]
+\newtheorem{definition}{Definition}[section]
+\newtheorem{example}{Example}[section]
+\newtheorem{remark}{Remark}[section]
+%
+\newif\iflogo
+\def\prbox{\hbox to \hsize{\hfill\fboxsep0pt\fbox{\phantom{\vrule width5pt height5pt depth0pt}}}\global\logofalse}
+%
+\newenvironment{proof}{%
+\par\addvspace{12pt plus3pt minus3pt}\global\logotrue%
+\noindent{\bf Proof.\hskip.5em}\ignorespaces}{%
+	\par\iflogo\vskip-\lastskip
+	\vskip-\baselineskip\prbox\par
+	\addvspace{12pt plus3pt minus3pt}\fi}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\newdimen\bibindent
+\bibindent=2em
+\def\@biblabel#1{#1.}
+\newenvironment{thebibliography}[1]
+     {\section*{\bibname}\bibfont%
+      \list{\@biblabel{\arabic{enumiv}}}%
+           {\settowidth\labelwidth{\@biblabel{#1}}%
+            \leftmargin\labelwidth
+	    \labelsep6pt%.33em
+            \advance\leftmargin\labelsep
+	    \itemsep0pt\parsep0pt
+            \usecounter{enumiv}%
+            \renewcommand\theenumiv{\arabic{enumiv}}}%
+      \sloppy\clubpenalty4000\widowpenalty4000%
+      \sfcode`\.=\@m}
+     {\def\@noitemerr
+       {\@latex@warning{Empty `thebibliography' environment}}%
+      \endlist}
+\newcommand\newblock{}
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Appendix %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\newcounter{appendix}
+\newcommand\appendix{\par %\newpage   %%%% (ss)  %%%%
+  	\refstepcounter{appendix}
+	\setcounter{section}{0}%
+        \setcounter{lemma}{0}
+        \setcounter{theorem}{0}
+	\setcounter{definition}{0}
+        \setcounter{corollary}{0}
+	\setcounter{equation}{0}
+	\@addtoreset{equation}{section}
+  \renewcommand\thesection{\appendixname\ \Alph{section}}%
+  \renewcommand\theequation{\Alph{section}.\arabic{equation}}
+%\def\@seccntformat##1{{\upshape{\csname the##1\endcsname}}\hskip .5em}  %%% (ss) %%%
+%\section{}   %%% (ss) %%%
+}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Trim Marks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\draftnote{\today\quad\currenttime\quad WSPC/INSTRUCTION FILE
+\qquad\jobname}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ss %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\cropmarks{\nointerlineskip%
+     \vbox to 0pt{\vskip-8.6pt
+	\parindent0pt\hspace*{6pt}\draftnote
+     \par\advance\trimheight by 2pc
+     \vbox to \trimheight{\offinterlineskip\parindent0pt\vskip-2pc
+     \hbox to \trimwidth{\raise2.6pc\hbox{\vrule height2pc width0.3pt}\raisebox{2pc}
+   {\hspace*{-2.6pc}\vrule width2pc height0.3pt}\hfill\raisebox{2pc}
+   {\vrule width2pc height0.3pt}\hspace*{-2.6pc}\raise2.6pc\hbox{\vrule height2pc width0.3pt}}\vfill
+     \hbox to \trimwidth{\lower1.2pc\hbox{\vrule height2pc width0.3pt}\raisebox{1.4pc}
+        {\hspace*{-2.6pc}\vrule width2pc height0.3pt}\hfill
+    \lower1.2pc\hbox{\vrule height2pc width0.3pt}\rlap{\hspace*{0.6pc}\raisebox{1.4pc}{\vrule width2pc height0.3pt}}}}}
+     \vbox to 0pt{\offinterlineskip\parindent0pt\vskip\topmargin%\vskip1.3pt
+     \tempdimen\normaltextheight
+     \advance\tempdimen24pt
+     \moveright\@themargin
+     \vbox to \tempdimen{\hrule height\draftrule
+     \vbox to 0pt{\vskip\headheight\vskip\headsep%\vskip3pt
+                \vrule height\draftrule width\textwidth}%
+      \hbox to \textwidth{\vrule width\draftrule \hfill\vrule height\tempdimen width\draftrule}%
+           \hrule height\draftrule}}}%%
+\def\xcropmarks{\nointerlineskip%
+     \vbox to 0pt{\vskip-8.6pt
+	\parindent0pt\hspace*{6pt}\draftnote
+     \par\advance\trimheight by 2pc
+     \vbox to \trimheight{\offinterlineskip\parindent0pt\vskip-2pc
+     \hbox to \trimwidth{\raise2.6pc\hbox{\vrule height2pc width0.3pt}\raisebox{2pc}
+   {\hspace*{-2.6pc}\vrule width2pc height0.3pt}\hfill\raisebox{2pc}
+   {\vrule width2pc height0.3pt}\hspace*{-2.6pc}\raise2.6pc\hbox{\vrule height2pc width0.3pt}}\vfill
+     \hbox to \trimwidth{\lower1.2pc\hbox{\vrule height2pc width0.3pt}\raisebox{1.4pc}
+        {\hspace*{-2.6pc}\vrule width2pc height0.3pt}\hfill
+    \lower1.2pc\hbox{\vrule height2pc width0.3pt}\rlap{\hspace*{0.6pc}\raisebox{1.4pc}{\vrule width2pc height0.3pt}}}}}
+     \vbox to 0pt{\offinterlineskip\parindent0pt\vskip\topmargin%\vskip1.3pt
+     \tempdimen\normaltextheight
+     \advance\tempdimen27pt
+     \moveright\@themargin
+     \vbox to \tempdimen{\hrule height\draftrule
+     \vbox to 0pt{\vskip\headheight\vskip\headsep%\vskip3pt
+                \vrule height\draftrule width\textwidth}%
+      \hbox to \textwidth{\vrule width\draftrule \hfill\vrule height\tempdimen width\draftrule}%
+           \hrule height\draftrule}}}%%
+%
+\let\trimmarks\cropmarks
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ss %%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% Output Routine %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\@outputpage{%
+\begingroup           % the \endgroup is put in by \aftergroup
+  \let \protect \noexpand
+  \@resetactivechars
+  \let\-\@dischyph
+  \let\'\@acci\let\`\@accii\let\=\@acciii
+  \let\\\@normalcr
+  \let\par\@@par
+  \shipout \vbox{%
+    \set@typeset@protect
+    \aftergroup \endgroup
+    \aftergroup \set@typeset@protect
+                                % correct? or just restore by ending
+                                % the group?
+  \if@specialpage
+    \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+  \fi
+  \if@twoside
+    \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+         \let\@themargin\oddsidemargin
+    \else \let\@thehead\@evenhead
+       \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+    \fi
+  \fi
+  \reset@font
+  \normalsize
+  \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+    \@begindvi\trimmarks
+    \vskip \topmargin
+    \moveright\@themargin \vbox {%
+      \setbox\@tempboxa \vbox to\headheight{%
+        \vfil
+        \color@hbox
+          \normalcolor
+          \hb@xt@\textwidth {%
+            \let \label \@gobble
+            \let \index \@gobble
+            \let \glossary \@gobble %% 21 Jun 91
+            \@thehead
+            }%
+        \color@endbox
+        }%                        %% 22 Feb 87
+      \dp\@tempboxa \z@
+      \box\@tempboxa
+      \vskip \headsep
+      \box\@outputbox
+      \baselineskip \footskip
+      \color@hbox
+        \normalcolor
+        \hb@xt@\textwidth{%
+          \let \label \@gobble
+          \let \index \@gobble      %% 22 Feb 87
+          \let \glossary \@gobble   %% 21 Jun 91
+          \@thefoot
+          }%
+      \color@endbox
+      }%
+    }%
+\global \@colht \textheight
+\stepcounter{page}%
+\let\firstmark\botmark
+}
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Process Options %%%%%%%%%%%%%%%%%%%%%%%%
+%
+\pagestyle{headings}
+\pagenumbering{arabic}
+\frenchspacing
+\flushbottom
+\def\sloppy{\tolerance=100000\hfuzz=\maxdimen \vfuzz=\maxdimen}
+\sloppy
+\vbadness=12000
+\hbadness=12000
+\usepackage{amsfonts}
+\usepackage{amssymb}
+\endinput
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%End of file%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+