Mercurial > hg > Papers > 2016 > masa-master
changeset 76:99ddf7f900dc
remove explain in regex
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 17 Feb 2016 20:50:15 +0900 |
parents | c8893a5b53cf |
children | 4947e0eed9d8 |
files | paper/c1.tex paper/c4.tex paper/c5.tex paper/images/image.graffle paper/images/regex/allostate.pdf paper/master_paper.pdf paper/master_paper.tex |
diffstat | 7 files changed, 1337 insertions(+), 1628 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/c1.tex Wed Feb 17 19:43:19 2016 +0900 +++ b/paper/c1.tex Wed Feb 17 20:50:15 2016 +0900 @@ -14,3 +14,6 @@ それぞれの結果を合計する際に、分割された部分に対して各例題工夫をすることによって整合性を取る必要がある。 本論文では文字列処理だけでなくファイルの読み込みまでを含む文字列処理を考慮した並列処理を実装し、処理全体の速度を上げるような実装を行なった。 + + +% hadoop ホストレベル
--- a/paper/c4.tex Wed Feb 17 19:43:19 2016 +0900 +++ b/paper/c4.tex Wed Feb 17 20:50:15 2016 +0900 @@ -1,3 +1,5 @@ +% bitencoding or NFA + \chapter{Cerium による文字列処理の例題} 本項ではファイルを読み込んで文字列処理を並列処理をする流れと例題を記述する。 @@ -96,8 +98,6 @@ } \end{lstlisting} -\newpage - ソースコード\ref{src:Exec}は分割されたファイルに対して何かしらの文字列処理を記述する部分である。 22行目から45行目が Word Count のメインルーチン内で、文字列処理を行なっている部分である。 もし Word Count 以外の文字列処理を記述したいのであれば、メインルーチン内を書き換えてあげればよい。 @@ -155,9 +155,6 @@ } \end{lstlisting} - -\newpage - ソースコード\ref{src:Print}は、それぞれの Task で出力された結果をまとめる処理がまとめられている。 Task それぞれの単語数と行数を集計し、分割された部分に関して整合性をとり単語数を微調整する。 単語数、行数がそれぞれ決定されたのちに結果が print される。 @@ -314,34 +311,7 @@ \label{fig:regexbasic} \end{figure} -本実装でサポートするメタ文字は、正規表現の基本三演算子(連接、繰返し、選択)\cite{regex}に文字クラスとグループを加えている。 - -連接はメタ文字を含まない文字列で構成された正規表現である。 -`word' や `automaton' などの文字列も連接のみの正規表現の一部である。 -正規表現の演算子には必ず何かしらの記号が割り当てられるのだが、連接だけにはメタ文字が割り振られていない。 - -繰返しは `*' の直前の文字または正規表現の繰返しを表現するメタ文字である。 -`*' の直前の文字や正規表現の 0 回以上の繰返しを表している。 -`a*b' という正規表現にマッチする文字列は {b,ab,aab,aaab,aa...b} である。 - -選択 `\textbar' は`\textbar' 前後の文字または正規表現の選択を表すメタ文字である。 -`a\textbar b' という正規表現にマッチする文字列は {a,b} である。 - -文字クラス`['`]' は`['`]'内に記述した文字の範囲から任意の一文字を選択するメタ文字である。 -数字の中から任意の1文字を選択だけの正規表現で表現すると、 - -$`0 \verb||| 1 \verb||| 2 \verb||| 3 \verb||| 4 \verb||| 5 \verb||| 6 \verb||| 7 \verb||| 8 \verb||| 9'$ -となる。 -この正規表現でも正しいのだが、とても煩わしい正規表現である。これを簡潔に表現できるのが文字クラスの強みである。 -文字クラスで数字の中から任意の一文字を表現すると `[0-9]' と表現することができる。 -数字だけではなく、アルファベットの中から任意の一文字も `[A-Za-z]' と表現することができる。 - -グループ`('`)' は `('`)' 内に記述した正規表現を一旦まとめる機能を持つ。 -例えば、word という文字列の 0 回以上の繰返しの正規表現を記述する。 -$ `word*' $ と表現すると、`*' の直前の `d' だけに接続される。この正規表現にマッチする文字列は{wor, word, wordd, worddd, wordd...d} となり、word の繰返しではない文字列がマッチする。 -`word' という文字列の繰返しを表現するときは、`(word)*'と記述することで表現できる。 - -これらのメタ文字をまとめた表が以下の表\ref{table:metachar}である。 +本実装でサポートするメタ文字は、正規表現の基本三演算子(連接、繰返し、選択)\cite{regex}に文字クラスとグループを加えている。 (表\ref{table:metachar}) \begin{tiny} \begin{table}[ht] @@ -396,7 +366,7 @@ \begin{enumerate} \item 与えられた正規表現を構文解析し、正規表現木に変換する。 \item 正規表現木から非決定性オートマトン(以下、NFA)か決定性オートマトン(以下、DFA)に変換する。 -\item NFA に変換された場合、Subset Construction による NFA から DFA への変換をおこなう。 +\item Subset Construction による NFA から DFA への変換をおこなう。 \item DFA を元に文字列検索を行ない結果を返す。 \end{enumerate} @@ -419,13 +389,12 @@ 文字やメタ文字、文字クラスは正規表現木のノードとして表現され、メタ文字が現れた時に親子関係が決定される。 \newpage - 文字または文字クラスが読み込まれた場合はノードを生成する。 それらが連接されたいた場合は `+' ノードを親ノードとして、左ノードに前の文字、右ノードに後ろの文字が接続される。(図\ref{fig:regexseq}) \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.3]{images/regex/regexseq.pdf} + \includegraphics[scale=0.2]{images/regex/regexseq.pdf} \end{center} \caption{文字の連接} \label{fig:regexseq} @@ -437,7 +406,7 @@ \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.3]{images/regex/regexseq2.pdf} + \includegraphics[scale=0.2]{images/regex/regexseq2.pdf} \end{center} \caption{文字列の連接} \label{fig:regexseq2} @@ -452,7 +421,7 @@ \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.3]{images/regex/regexselect.pdf} + \includegraphics[scale=0.2]{images/regex/regexselect.pdf} \end{center} \caption{選択} \label{fig:regexselect} @@ -465,7 +434,7 @@ \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.3]{images/regex/regexasta.pdf} + \includegraphics[scale=0.2]{images/regex/regexasta.pdf} \end{center} \caption{繰返し} \label{fig:regexasta} @@ -479,7 +448,7 @@ \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.3]{images/regex/regexgroup.pdf} + \includegraphics[scale=0.2]{images/regex/regexgroup.pdf} \end{center} \caption{グループ} \label{fig:regexgroup} @@ -490,7 +459,7 @@ \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.3]{images/regex/regexseqregex.pdf} + \includegraphics[scale=0.2]{images/regex/regexseqregex.pdf} \end{center} \caption{正規表現の連接} \label{fig:regexseqregex} @@ -502,49 +471,15 @@ \subsection{正規表現木から DFA・NFA の生成} 次に正規表現木から非決定性有限オートマトン(NFA)、決定性有限オートマトン(DFA)を生成する。 - -オートマトンは、入力に対して状態に対応した処理を行ない結果を出力する仮想的な自動機械である。 -オートマトンの身近な例として、朝起きて学校に行くまでの例を挙げる。 - -図\ref{fig:dfabasic}は、朝起きて学校に向かうまでの状態遷移図である。 -状態遷移図の `S' は初期状態を表し、`AC' は受理状態を表す。 - -私たちの日常でも起床の時間帯によって学校に行くまでの行動が変わる。 -もし早起きをしたならば、時間的にゆとりがあるので身なりをしっかり整えて学校に向かうことができる。 -この時、 $S -> 1 -> 2 -> AC$と状態が遷移する。 - -もし寝坊をしてしまった場合、時間的にゆとりがなく身なりを整える余裕がない。 -その時は身なりを整える暇もなく学校へ向かうことになってしまう。 -この時、 $S -> 3 -> AC$と状態が遷移する。 - -この例の場合、入力に当たるのは`早起きする'、`寝坊する'、`身なりを整える'、`学校に向かう'のそれぞれの行動であり、出力はその行動後に遷移する状態である。 +実際には正規表現木を元にオートマトンを構成していく。その際、深さ優先探索にて木を辿っていき、 +メタ文字のノードが現れた時に一定のルールに沿って文字のノードに状態を割り振っていく。 +ノードに状態を割り振りながら次の状態の遷移先を設定することによって、正規表現木からオートマトンによる状態遷移を表現することができる。 -このように、入力と状態が有限個で、どの状態でもある入力に対して遷移先が一意に決定されるオートマトンを決定性有限オートマトン(Deterministic Finite Automaton: DFA)という。 -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/dfabasic.pdf} - \end{center} - \caption{起きてから学校に行くまでの状態遷移図(DFA)} - \label{fig:dfabasic} -\end{figure} - -図\ref{fig:nfabasic}は、朝起きて学校に向かうまでの状態遷移図であるが、図\ref{fig:dfabasic}と違う点は S の状態で入力されるのは`起きる'という入力だけである。 - -この場合、起きて身なりを整え学校に向かうか起きて学校に向かうかの二択になる。 -S の状態のとき、起きてから次の状態に遷移するのは 1 か 2 のときである。 - -このように入力と状態が有限個で、ある入力に対して複数の遷移先があり一意に決定されないオートマトンを非決定性オートマトン(Non-deterministic Finite Automaton: NFA)という。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/nfabasic.pdf} - \end{center} - \caption{起きてから学校に行くまでの状態遷移図(NFA)} - \label{fig:nfabasic} -\end{figure} - -正規表現はオートマトンで表現することができるので、状態と入力(ここでは正規表現)が判れば次はどのような状態になるのか決定される。 -そのオートマトンの状態を、変換された正規表現木に状態を割り振っていく。 +\begin{itemize} +\item 左子ノードが `*' でない `+' は新しい状態を作る +\item `\textbar'が親ノードの場合、子ノードの最初の状態は同じ状態。 +\item `*' があれば、次の状態は `*' に接続されている木の先頭の状態と同じ。次の状態が受理状態なら先頭の状態と受理状態の組み合わせになる。 +\end{itemize} \begin{figure}[htpb] \begin{center} @@ -554,150 +489,19 @@ \label{fig:allostate} \end{figure} -実際には正規表現木を元にオートマトンを構成していく。その際、深さ優先探索にて木を辿っていき、 -メタ文字のノードが現れた時に一定のルールに沿って文字のノードに状態を割り振っていく。 -ノードに状態を割り振りながら次の状態の遷移先を設定することによって、正規表現木からオートマトンによる状態遷移を表現することができる。 - -それぞれのメタ文字が現れた際、どのような状態を割り振るか以下で紹介する。 -また、番号 1 は初期状態、番号 2 は受理状態を表している。 - -\newpage - -図\ref{fig:stateseq}は連接 `+' で接続されている場合の正規表現である。 -正規表現`ab'で受理される文字列の集合は \{ ab \} である。 -a が入力されれば別の状態になり、その状態で b が入力されれば受理状態に遷移する。 -これより `+' で接続された木の状態割当は、`+' の左ノードの状態とは別の新しい状態を生成して割り当てる。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/stateseq.pdf} - \end{center} - \caption{連接の状態割当} - \label{fig:stateseq} -\end{figure} - -図\ref{fig:stateselect}は選択 `\textbar' で接続されている場合の正規表現である。 -正規表現`a\textbar b'で受理される文字列の集合は \{ a, b \}である。 -この場合は a か b が入力されれば受理状態に遷移する。 -これより `\textbar' で接続された木の状態割当は、`\textbar' の左ノードの先頭と右ノードの先頭が同じ状態となり、新しい状態は生成されない。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/stateselect.pdf} - \end{center} - \caption{選択 `\textbar' で接続されているときの状態割当} - \label{fig:stateselect} -\end{figure} - -\newpage - -図\ref{fig:stateselseq}は連接 `+' と選択 `\textbar' の組み合わせで接続されている場合の正規表現である。 -正規表現`(a \textbar b)c'で受理される文字列の集合は \{ac,bc\} である。 -この場合、初期状態に a か b が入力されると次の状態に遷移し、遷移した状態に c が入力されると受理状態に遷移する。 -連接 `+' と選択 `\textbar' の状態割当方法の組み合わせにて状態を決定することができる。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/stateselseq.pdf} - \end{center} - \caption{選択 `\textbar' と連接の組み合わせの状態割当} - \label{fig:stateselseq} -\end{figure} - - -図\ref{fig:stateasta}は連接 `+' の前の文字に繰返し `*' が接続されている場合の正規表現である。 -正規表現`a*b'で受理される文字列の集合は \{b,ab,aab,aaab,aa...ab\} である。 -この場合、初期状態に a が入力されると自分自身の状態に遷移する。遷移先を自分自身にすることによって、繰返しを表現することができる。 -その次に b が入力されると受理状態に遷移する。 -これより、`+' の左ノードに `*' が接続されていたら、`*' に接続されている木の一番左と `+' の右ノードに同じ状態が割り当てられる。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.18]{images/regex/stateasta.pdf} - \end{center} - \caption{連接の前の文字に `*' が接続されているときの状態割当} - \label{fig:stateasta} -\end{figure} - -\newpage - -図\ref{fig:stateafasta}は連接 `+' の後の文字に繰返し `*' が接続されている場合の正規表現である。 -正規表現`ab*'受理される文字列の集合は \{a,ab,abb,abb,abb...bb\} である。 -この場合、初期状態に a が入力されると受理状態に遷移する。しかし、受理状態でも b がそれ以降に入力されれば、自分自身に状態遷移する。 -これより、`+' の右ノードに `*' が接続されていたら、`+' の左ノードに接続されている木の最後の状態に受理状態を付け加える。また、`*' に接続されている木の最後の状態にも受理状態を付け加える。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.18]{images/regex/stateafasta.pdf} - \end{center} - \caption{連接の後ろの文字に `*' が接続されているときの状態割当} - \label{fig:stateafasta} -\end{figure} - - -図\ref{fig:stateasta3}は連接 `+' が連続しており、連接の途中で繰返し `*' が接続されている場合の正規表現である。 -正規表現`ab*c'受理される文字列の集合は \{ac,abc,abbc,abbbc,abb...bbc\} である。 -この場合、初期状態に a が入力されると次の状態に遷移する。その状態で b が入力されると自分自身に遷移し、c が入力されると受理状態に遷移する。 - -これより、連接中に `*' があれば新しい状態を生成し、その状態を `*' の親ノードのさらに親ノードの右ノードに同じ状態にする。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.15]{images/regex/stateasta3.pdf} - \end{center} - \caption{連接中に `*'が接続されているときの状態割当} - \label{fig:stateasta3} -\end{figure} - -\newpage - -図\ref{fig:stateselectasta}は選択 `\textbar' がグループ化によって一つの正規表現となり、それ自身が繰り返されている場合の正規表現である。 -正規表現`(a \textbar b)*c'受理される文字列の集合は \{c,ac,bc,aabc,abbc,a..ab..bc\} である。 -この場合、初期状態に a か b が入力されると自分自身の状態に遷移する。その状態で c が入力されると受理状態に遷移する。 -これは、選択 `\textbar' と繰返し `*' の状態割当方法の組み合わせにて状態を決定することができる。 -まず `a \textbar b' は同じ状態を割り当て、その親ノードが `*' なので `*' の親の右ノードに同じ状態を割り当てる。 - - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.15]{images/regex/stateselectasta.pdf} - \end{center} - \caption{選択 `\textbar' と繰返し `*' の組み合わせの状態割当} - \label{fig:stateselectasta} -\end{figure} - - -以上の規則で正規表現木を辿った時にノードに対して状態を割り振る。 -まとめると、 - -\begin{itemize} -\item 左子ノードが `*' でない `+' は新しい状態を作る -\item `\textbar'が親ノードの場合、子ノードの最初の状態は同じ状態。 -\item `*' があれば、次の状態は `*' に接続されている木の先頭の状態と同じ。次の状態が受理状態なら先頭の状態と受理状態の組み合わせになる。 -\end{itemize} - これにより、正規表現木に状態の割り振りを行ない、入力を行なったら状態が遷移するようにできた。 現在の状態(current state)と入力(input)によって次の状態(next state)が一意に決まっており、それをテーブル化して正規表現をファイルにかける。(図\ref{fig:dfaregex}) このように、ある状態にある入力を与えると次の状態の遷移先が一意に決まるオートマトンのとこを決定性オートマトンという。 \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.25]{images/regex/dfaregex.pdf} + \includegraphics[scale=0.20]{images/regex/dfaregex.pdf} \end{center} \caption{どの状態もある入力を与えたとしても遷移先は一意に決定される} \label{fig:dfaregex} \end{figure} -しかし、生成された正規表現木によっては、現在の状態と入力による次の状態が一意に決まらない場合もある。 -図\ref{fig:nfaex}はある状態にある文字を入力すると遷移先が複数存在する場合である。状態 4 に `b' が入力されると状態 2 か状態 4 に遷移する。 -このように 1 つの入力に対して遷移先が複数存在すると、どの状態に遷移をしたらよいのかわからくなる。 -このようなオートマトンを非決定性オートマトンという。 - -これを解決する方法として Subset Construction を適用する。 - -\newpage - \begin{figure}[htpb] \begin{center} \includegraphics[scale=0.20]{images/regex/nfaex.pdf} @@ -706,9 +510,20 @@ \label{fig:nfaex} \end{figure} -\newpage +\subsection{Subset Construction による NFA から DFA の変換} + +生成された正規表現木によっては、現在の状態と入力による次の状態が一意に決まらない場合もある。 +図\ref{fig:nfaex}はある状態にある文字を入力すると遷移先が複数存在する場合である。状態 4 に `b' が入力されると状態 2 か状態 4 に遷移する。 +このように 1 つの入力に対して遷移先が複数存在すると、どの状態に遷移をしたらよいのかわからくなる。 +このようなオートマトンを非決定性オートマトンという。 -\subsection{Subset Construction による NFA から DFA の変換} +これを解決する方法として Subset Construction を適用する。 + +ソースコード\ref{src:cc} +\begin{lstlisting}[frame=lrbt,label=src:cc,caption=文字クラスの構造体,numbers=left] + +\end{lstlisting} + Subset Construction は、ある状態から 1 つの入力に対して複数の状態遷移先がある場合、それらの状態 1 つの新しい状態としてまとめ、その新しい状態から新しい遷移先を構成しそれを繰り返す手法である。 図\ref{fig:nfaex}内で入力によって複数の状態に遷移する状態 4 だけに着目する。 @@ -748,44 +563,6 @@ \label{fig:subset} \end{figure} -図\ref{fig:nfaex}で与えられた NFA を Subset Construction にて DFA に変換すると、図\ref{fig:subsetauto}のようになる。 -この図より、一度 a が入力されたあとは、aか[c-z]の入力と b の入力で状態 4,6 を循環することがわかる。このときの受理状態 2 を含んでいる状態 6 に状態遷移したときこのオートマトンは受理される。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/subsetauto.pdf} - \end{center} - \caption{Subset Construction 後のオートマトンの変化} - \label{fig:subsetauto} -\end{figure} - -\newpage - -文字クラスは正規表現木のノード内では二分木として構成されている。 -例えば、文字クラス[A-Za-z0-9]はノード内では図\ref{fig:cctree}のような二分木で構成されている。 -文字クラスの二分木は、左から ASCII 文字コードの小さい文字を並べていく。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/cctree.pdf} - \end{center} - \caption{ノード内での文字クラスの二分木} - \label{fig:cctree} -\end{figure} - -\newpage -Subset Construction 時に文字クラス [a-z] と b が merge されている。 -Subset Construction で文字クラスによって入力と遷移先が変化した場合、ノード内の文字クラスもその入力の文字クラスによって文字クラスの二分木も再構築される。 -(図\ref{fig:cctreeex}) - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/cctreeex.pdf} - \end{center} - \caption{図\ref{fig:nfaex}での Subset Construction 後の文字クラスの二分木の変化} - \label{fig:cctreeex} -\end{figure} - 上の例では文字クラスとある一文字の merge 例になるが、複数の文字クラスを merge するような場面も出てくる。 ある文字クラスに別の文字クラスを merge する場合、図\ref{fig:CharClassMergePattern}のように 13 パターンの場合を考慮しなければならない。 ccRange.Begin は元の文字クラスの先頭、ccRange.End は元の文字クラスの末尾である。元の文字クラスに対して別の文字クラスを merge する。 @@ -799,45 +576,6 @@ \label{fig:CharClassMergePattern} \end{figure} -図\ref{fig:CharClassMergePattern}のパターン 3 の状況を考える。 -ある状態に`[g-k]'が入力されると状態1に、`[c-h]'が入力されると状態4に遷移すると仮定する。 -2つの文字クラスの範囲が`[g-h]'で重複しており、この重複している部分に関しては merge を行う必要がある。 -この2つの文字クラスは`[c-f]'、`[g-h]'、`[i-k]' 3 つの文字クラスに分けることができる。 -なお、重複した文字クラスの状態は状態の組み合わせを取り、新しい状態を作る。 -(図\ref{fig:cctreemergeex}) - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/cctreemergeex.pdf} - \end{center} - \caption{1つの文字クラスに対して文字クラスを merge する} - \label{fig:cctreemergeex} -\end{figure} - -図\ref{fig:cctreemergeex2} は元の文字クラスが複数存在し、それに対して1つの文字クラスを merge する状況である。 -まず、文字クラスの二分木の先頭ノードの文字クラス`[g-k]'に対して`[c-h]'の merge を行う。 -`[c-f]'、`[g-h]'、`[i-k]'それぞれ文字クラスに分けることができた。しかし、merge 元の文字クラス `[a-d]' と先頭の文字クラスの merge 後に生成された `[c-f]' も文字クラスの範囲が重複している。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/cctreemergeex2.pdf} - \end{center} - \caption{merge したが、文字クラスの範囲がまだ重複している} - \label{fig:cctreemergeex2} -\end{figure} - -文字クラスの範囲の重複が無くなるまで merge を繰り返す必要がある。 -この場合、`[a-d]'と`[c-f]' は `[c-d]' で重複しているので、範囲が重複しないように文字クラスを再構築する必要がある。 -(図\ref{fig:cctreemergeex3}) - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.2]{images/regex/cctreemergeex3.pdf} - \end{center} - \caption{文字クラスの範囲の重複がなくなった} - \label{fig:cctreemergeex3} -\end{figure} - \newpage \subsection{並列処理時の整合性の取り方} 正規表現をファイル分割して並列処理をする際、本来マッチングする文章がファイル分割によってマッチングしない場合がある。 @@ -845,6 +583,15 @@ 図\ref{fig:regexdivide}はその一例である。正規表現 ab*c のマッチングする文字列の集合は {ac,abc,abbc,ab..bc} である。 分割される前はこの文字列 abbbbc は問題なく正規表現 ab*c にマッチングする。 + +% bit パターンの実装の話 +% 正規表現の話を 2 ページずつぐらいで + +% charclass 構造体 ソース +% state 構造 bitvector の話 配列を MaxState の分のコードの話 +% はやくなった方法 state bit or 状態 merge に計算できる +% subset construction の速度 O(mlogn) + 並列処理時、分割されたファイルに対してパターンマッチさせるので、分割された1つ目のファイルの末尾の abb 、2つ目のファイルの先頭に bbc はマッチングしない。 本来分割される前はマッチングする文字列だが、この場合見逃してしまう。 それを解決するために、正規表現にマッチングし始めたファイルの場所を覚えておく。 @@ -857,3 +604,4 @@ \caption{分割された部分に正規表現がマッチングする場合の処理} \label{fig:regexdivide} \end{figure} +% Print の分割部分の話追加 最後
--- a/paper/c5.tex Wed Feb 17 19:43:19 2016 +0900 +++ b/paper/c5.tex Wed Feb 17 20:50:15 2016 +0900 @@ -117,7 +117,7 @@ \end{tiny} \section{正規表現} -当実験では、Mac の egrep 、C で実装した逐次に DFA の状態遷移と照らし合わせマッチングをするC実装の Grep、Cerium で並列処理をする CeriumGrep を比較している。 +当実験では、Mac の egrep 、C で実装した逐次に DFA の状態遷移と照らし合わせマッチングをする、Cerium で並列処理をする CeriumGrep を比較している。 表\ref{table:metachar}は500MB(単語数約8500万) のファイルに対して正規表現 `[A-Z][A-Za-z0-9]*s' をマッチングした結果である。 これはファイル読み込みを含めた結果と読み込みを含めていない結果の比較である。
--- a/paper/images/image.graffle Wed Feb 17 19:43:19 2016 +0900 +++ b/paper/images/image.graffle Wed Feb 17 20:50:15 2016 +0900 @@ -26,7 +26,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2016-02-16 06:13:14 +0000</string> + <string>2016-02-17 11:43:32 +0000</string> <key>Modifier</key> <string>MasaKoha</string> <key>NotesVisible</key> @@ -33833,7 +33833,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{562.91407809243435, 25.511811255094571}, {162.99212746310411, 30}}</string> + <string>{{562.91407809243435, 11.338582780042032}, {162.99212746310411, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -33893,7 +33893,7 @@ <array> <dict> <key>Bounds</key> - <string>{{638.18898171468038, 60.944882442725941}, {18, 30}}</string> + <string>{{850.17364281103187, -85.039370850315237}, {18, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -33967,10 +33967,10 @@ <integer>668</integer> <key>Points</key> <array> - <string>{711.48032110751137, 147.81530929287584}</string> - <string>{747.5, 73.700788070273205}</string> - <string>{595.5, 127.09842549262083}</string> - <string>{622.18898171468038, 214.42948312562277}</string> + <string>{923.46498220386286, 1.8310559998346747}</string> + <string>{959.48466109635149, -72.283465222767973}</string> + <string>{807.48466109635149, -18.885827800420344}</string> + <string>{834.17364281103187, 68.44522983258156}</string> </array> <key>Style</key> <dict> @@ -33999,7 +33999,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{735.16107636277127, 219.68504136331433}, {19, 30}}</string> + <string>{{947.14573745912276, 73.70078807027312}, {19, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -34073,8 +34073,8 @@ <integer>670</integer> <key>Points</key> <array> - <string>{711.48032110751137, 283.75949695589031}</string> - <string>{793.68504626281617, 214.42948312562277}</string> + <string>{923.46498220386286, 137.77524366284888}</string> + <string>{1005.6697073591677, 68.44522983258156}</string> </array> <key>Style</key> <dict> @@ -34103,7 +34103,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{661.46028829249803, 219.68504136331433}, {19, 30}}</string> + <string>{{873.44494938884952, 73.70078807027312}, {19, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -34177,8 +34177,8 @@ <integer>672</integer> <key>Points</key> <array> - <string>{622.18898171468038, 214.42948312562277}</string> - <string>{711.48032110751137, 283.75949695589031}</string> + <string>{834.17364281103187, 68.44522983258156}</string> + <string>{923.46498220386286, 137.77524366284888}</string> </array> <key>Style</key> <dict> @@ -34207,7 +34207,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{691.2240680901084, 263.50324393848729}, {40.512506034806016, 40.512506034806023}}</string> + <string>{{903.20872918645989, 117.51899064544588}, {40.512506034806016, 40.512506034806023}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -34249,7 +34249,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{701.48032110751137, 73.700788070273205}, {20, 30}}</string> + <string>{{913.46498220386286, -72.283465222767973}, {20, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -34323,10 +34323,10 @@ <integer>675</integer> <key>Points</key> <array> - <string>{711.48032110751137, 147.81530929287584}</string> - <string>{733.73657412491445, 110.05757946029419}</string> - <string>{691.2240680901084, 108.37007946029419}</string> - <string>{711.48032110751137, 147.81530929287584}</string> + <string>{923.46498220386286, 1.8310559998346747}</string> + <string>{945.72123522126594, -35.926673832746978}</string> + <string>{903.20872918645989, -37.614173832746978}</string> + <string>{923.46498220386286, 1.8310559998346747}</string> </array> <key>Style</key> <dict> @@ -34355,7 +34355,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{656.18898171468038, 151.65354468306214}, {19, 30}}</string> + <string>{{868.17364281103187, 5.6692913900209589}, {19, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -34429,8 +34429,8 @@ <integer>677</integer> <key>Points</key> <array> - <string>{622.18898171468038, 214.42948312562277}</string> - <string>{711.48032110751137, 147.81530929287584}</string> + <string>{834.17364281103187, 68.44522983258156}</string> + <string>{923.46498220386286, 1.8310559998346747}</string> </array> <key>Style</key> <dict> @@ -34459,7 +34459,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{588.18898171468038, 127.55905627547284}, {68, 30}}</string> + <string>{{800.17364281103187, -18.425197017568337}, {68, 30}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FitText</key> @@ -34533,10 +34533,10 @@ <integer>679</integer> <key>Points</key> <array> - <string>{622.18898171468038, 214.42948312562277}</string> - <string>{642.44523473208346, 169.30757946029422}</string> - <string>{601.93272869727741, 168.37007946029422}</string> - <string>{622.18898171468038, 214.42948312562277}</string> + <string>{834.17364281103187, 68.44522983258156}</string> + <string>{854.42989582843495, 23.323326167253043}</string> + <string>{813.9173897936289, 22.385826167253043}</string> + <string>{834.17364281103187, 68.44522983258156}</string> </array> <key>Style</key> <dict> @@ -34565,7 +34565,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{691.2240680901084, 127.55905627547284}, {40.512506034806016, 40.512506034806023}}</string> + <string>{{903.20872918645989, -18.425197017568337}, {40.512506034806016, 40.512506034806023}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -34607,7 +34607,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{773.4287932454132, 194.17323010821974}, {40.512506034806016, 40.512506034806023}}</string> + <string>{{985.41345434176469, 48.188976815178549}, {40.512506034806016, 40.512506034806023}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -34649,7 +34649,7 @@ </dict> <dict> <key>Bounds</key> - <string>{{601.93272869727741, 194.17323010821974}, {40.512506034806016, 40.512506034806023}}</string> + <string>{{813.9173897936289, 48.188976815178549}, {40.512506034806016, 40.512506034806023}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -36372,35 +36372,55 @@ <array> <dict> <key>Bounds</key> - <string>{{1060.3943975667785, 347.53864784090558}, {41.954844218258067, 41.954844218258074}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>485</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <real>0.0</real> + <string>{{1054.7251061767574, 392.89297896107371}, {59.360815730808326, 30}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.109804</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0.694118</string> + </dict> + </dict> + <key>ID</key> + <integer>487</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;\red177\green0\blue28;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs32 \cf2 2}</string> </dict> </dict> <dict> @@ -36409,35 +36429,29 @@ <key>Graphics</key> <array> <dict> - <key>Bounds</key> - <string>{{1054.7251061767574, 392.89297896107371}, {59.360815730808326, 30}}</string> <key>Class</key> - <string>ShapedGraphic</string> - <key>FitText</key> - <string>Vertical</string> - <key>Flow</key> - <string>Resize</string> + <string>LineGraphic</string> <key>FontInfo</key> <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0.109804</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0.694118</string> - </dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>490</integer> </dict> <key>ID</key> - <integer>487</integer> + <integer>489</integer> + <key>Points</key> + <array> + <string>{1017.2690100623495, 316.04555760931783}</string> + <string>{1081.7571996238382, 368.95064077762174}</string> + </array> <key>Style</key> <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> <key>shadow</key> <dict> <key>Draws</key> @@ -36445,6 +36459,40 @@ </dict> <key>stroke</key> <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>493</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{1054.7446935890323, 341.93813474281569}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>9</real> + </dict> + <key>ID</key> + <integer>490</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> <key>Draws</key> <string>NO</string> </dict> @@ -36454,11 +36502,141 @@ <key>Text</key> <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;\red177\green0\blue28;} -\deftab720 -\pard\pardeftab720\qc\partightenfactor0 - -\f0\fs32 \cf2 2}</string> +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs18 \cf0 Accept}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>493</integer> + </dict> + <key>ID</key> + <integer>491</integer> + <key>Points</key> + <array> + <string>{952.78082050086016, 261.69824217783184}</string> + <string>{1017.2690100623495, 316.04555760931783}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>510</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>496</integer> + </dict> + <key>ID</key> + <integer>492</integer> + <key>Points</key> + <array> + <string>{888.29263093937118, 316.04555760931783}</string> + <string>{952.78082050086016, 368.95064077762174}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>511</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{990.25650402754343, 289.03305157451177}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>493</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs36 \cf0 a}</string> + <key>VerticalPad</key> + <real>0.0</real> </dict> </dict> <dict> @@ -36467,29 +36645,33 @@ <key>Graphics</key> <array> <dict> + <key>Bounds</key> + <string>{{925.76831446605411, 359.02417018938633}, {54.025012069612032, 19.852941176470587}}</string> <key>Class</key> - <string>LineGraphic</string> + <string>ShapedGraphic</string> <key>FontInfo</key> <dict> - <key>Font</key> - <string>Helvetica</string> + <key>Color</key> + <dict> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>490</integer> + <real>18</real> </dict> <key>ID</key> - <integer>489</integer> - <key>Points</key> - <array> - <string>{1017.2690100623495, 316.04555760931783}</string> - <string>{1081.7571996238382, 368.95064077762174}</string> - </array> + <integer>495</integer> <key>Style</key> <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> <key>shadow</key> <dict> <key>Draws</key> @@ -36497,40 +36679,6 @@ </dict> <key>stroke</key> <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>493</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{1054.7446935890323, 341.93813474281569}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>490</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> <key>Draws</key> <string>NO</string> </dict> @@ -36541,371 +36689,24 @@ <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 - -\f0\fs36 \cf0 AC}</string> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>493</integer> - </dict> - <key>ID</key> - <integer>491</integer> - <key>Points</key> - <array> - <string>{952.78082050086016, 261.69824217783184}</string> - <string>{1017.2690100623495, 316.04555760931783}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>510</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>496</integer> - </dict> - <key>ID</key> - <integer>492</integer> - <key>Points</key> - <array> - <string>{888.29263093937118, 316.04555760931783}</string> - <string>{952.78082050086016, 368.95064077762174}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>511</integer> +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs36 \cf0 a}</string> </dict> </dict> <dict> <key>Bounds</key> - <string>{{990.25650402754343, 289.03305157451177}, {54.025012069612032, 54.025012069612046}}</string> + <string>{{925.76831446605411, 341.93813474281569}, {54.025012069612032, 54.025012069612046}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> <dict> <key>Size</key> - <real>18</real> + <real>12</real> </dict> <key>ID</key> - <integer>493</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 - -\f0\fs36 \cf0 a}</string> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - <dict> - <key>Class</key> - <string>Group</string> - <key>Graphics</key> - <array> - <dict> - <key>Bounds</key> - <string>{{925.76831446605411, 359.02417018938633}, {54.025012069612032, 19.852941176470587}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0</string> - </dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>495</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;} -\deftab720 -\pard\pardeftab720\qc\partightenfactor0 - -\f0\fs36 \cf0 a}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{925.76831446605411, 341.93813474281569}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>12</real> - </dict> - <key>ID</key> - <integer>496</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - </array> - <key>ID</key> - <integer>494</integer> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>498</integer> - </dict> - <key>ID</key> - <integer>497</integer> - <key>Points</key> - <array> - <string>{820.2611342591191, 584.38371359842085}</string> - <string>{748.81092517193849, 642.25842818979231}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>500</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{721.79841913713244, 615.24592215498626}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>498</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 - -\f0\fs36 \cf0 b}</string> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>500</integer> - </dict> - <key>ID</key> - <integer>499</integer> - <key>Points</key> - <array> - <string>{748.81092517193849, 523.27278533732783}</string> - <string>{820.2611342591191, 584.38371359842085}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>516</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{793.24862822431305, 557.3712075636148}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>500</integer> + <integer>496</integer> <key>Shape</key> <string>Circle</string> <key>Style</key> @@ -36918,182 +36719,540 @@ </dict> <key>Text</key> <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + </array> + <key>ID</key> + <integer>494</integer> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>498</integer> + </dict> + <key>ID</key> + <integer>497</integer> + <key>Points</key> + <array> + <string>{820.2611342591191, 584.38371359842085}</string> + <string>{748.81092517193849, 642.25842818979231}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>500</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{721.79841913713244, 615.24592215498626}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>498</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs36 \cf0 b}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>500</integer> + </dict> + <key>ID</key> + <integer>499</integer> + <key>Points</key> + <array> + <string>{748.81092517193849, 523.27278533732783}</string> + <string>{820.2611342591191, 584.38371359842085}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>516</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{793.24862822431305, 557.3712075636148}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>500</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 \f0\fs36 \cf0 *}</string> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>515</integer> + </dict> + <key>ID</key> + <integer>501</integer> + <key>Points</key> + <array> + <string>{748.81092517193849, 523.27278533732783}</string> + <string>{669.36875464958973, 584.38371359842085}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>516</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>516</integer> + </dict> + <key>ID</key> + <integer>502</integer> + <key>Points</key> + <array> + <string>{669.3687546495895, 475.24985434051587}</string> + <string>{748.81092517193849, 523.27278533732783}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>520</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>519</integer> + </dict> + <key>ID</key> + <integer>503</integer> + <key>Points</key> + <array> + <string>{669.3687546495895, 475.24985434051587}</string> + <string>{589.9265841272404, 523.2727853373276}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>520</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>520</integer> + </dict> + <key>ID</key> + <integer>504</integer> + <key>Points</key> + <array> + <string>{748.81092517193849, 421.39158613531606}</string> + <string>{669.3687546495895, 475.24985434051587}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>521</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>521</integer> + </dict> + <key>ID</key> + <integer>505</integer> + <key>Points</key> + <array> + <string>{820.2611342591191, 368.95064077762174}</string> + <string>{748.81092517193849, 421.39158613531606}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>512</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>510</integer> + </dict> + <key>ID</key> + <integer>506</integer> + <key>Points</key> + <array> + <string>{888.29263093937118, 316.04555760931783}</string> + <string>{952.78082050086016, 261.69824217783184}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>511</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>512</integer> + </dict> + <key>ID</key> + <integer>507</integer> + <key>Points</key> + <array> + <string>{888.29263093937118, 316.04555760931783}</string> + <string>{820.2611342591191, 368.95064077762174}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>511</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>Group</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{925.76831446605411, 251.77177158959665}, {54.025012069612032, 19.852941176470587}}</string> <key>Class</key> - <string>LineGraphic</string> + <string>ShapedGraphic</string> <key>FontInfo</key> <dict> - <key>Font</key> - <string>Helvetica</string> + <key>Color</key> + <dict> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>515</integer> + <real>18</real> </dict> <key>ID</key> - <integer>501</integer> - <key>Points</key> - <array> - <string>{748.81092517193849, 523.27278533732783}</string> - <string>{669.36875464958973, 584.38371359842085}</string> - </array> + <integer>509</integer> <key>Style</key> <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>516</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>516</integer> - </dict> - <key>ID</key> - <integer>502</integer> - <key>Points</key> - <array> - <string>{669.3687546495895, 475.24985434051587}</string> - <string>{748.81092517193849, 523.27278533732783}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> + <key>fill</key> <dict> <key>Draws</key> <string>NO</string> </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>520</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>519</integer> - </dict> - <key>ID</key> - <integer>503</integer> - <key>Points</key> - <array> - <string>{669.3687546495895, 475.24985434051587}</string> - <string>{589.9265841272404, 523.2727853373276}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>520</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>520</integer> - </dict> - <key>ID</key> - <integer>504</integer> - <key>Points</key> - <array> - <string>{748.81092517193849, 421.39158613531606}</string> - <string>{669.3687546495895, 475.24985434051587}</string> - </array> - <key>Style</key> - <dict> <key>shadow</key> <dict> <key>Draws</key> @@ -37101,269 +37260,6 @@ </dict> <key>stroke</key> <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>521</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>521</integer> - </dict> - <key>ID</key> - <integer>505</integer> - <key>Points</key> - <array> - <string>{820.2611342591191, 368.95064077762174}</string> - <string>{748.81092517193849, 421.39158613531606}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>512</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>510</integer> - </dict> - <key>ID</key> - <integer>506</integer> - <key>Points</key> - <array> - <string>{888.29263093937118, 316.04555760931783}</string> - <string>{952.78082050086016, 261.69824217783184}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>511</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>FontInfo</key> - <dict> - <key>Font</key> - <string>Helvetica</string> - <key>Size</key> - <real>12</real> - </dict> - <key>Head</key> - <dict> - <key>ID</key> - <integer>512</integer> - </dict> - <key>ID</key> - <integer>507</integer> - <key>Points</key> - <array> - <string>{888.29263093937118, 316.04555760931783}</string> - <string>{820.2611342591191, 368.95064077762174}</string> - </array> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>Legacy</key> - <false/> - <key>LineType</key> - <integer>1</integer> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>511</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>Group</string> - <key>Graphics</key> - <array> - <dict> - <key>Bounds</key> - <string>{{925.76831446605411, 251.77177158959665}, {54.025012069612032, 19.852941176470587}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0</string> - </dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>509</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;} -\deftab720 -\pard\pardeftab720\qc\partightenfactor0 - -\f0\fs36 \cf0 +}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{925.76831446605411, 234.68573614302579}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>510</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - </array> - <key>ID</key> - <integer>508</integer> - </dict> - <dict> - <key>Bounds</key> - <string>{{861.28012490456513, 289.03305157451177}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>511</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> <key>Draws</key> <string>NO</string> </dict> @@ -37374,16 +37270,15 @@ <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 \f0\fs36 \cf0 +}</string> - <key>VerticalPad</key> - <real>0.0</real> </dict> </dict> <dict> <key>Bounds</key> - <string>{{793.24862822431305, 341.93813474281569}, {54.025012069612032, 54.025012069612046}}</string> + <string>{{925.76831446605411, 234.68573614302579}, {54.025012069612032, 54.025012069612046}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> @@ -37392,7 +37287,7 @@ <real>18</real> </dict> <key>ID</key> - <integer>512</integer> + <integer>510</integer> <key>Shape</key> <string>Circle</string> <key>Style</key> @@ -37405,117 +37300,152 @@ </dict> <key>Text</key> <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + </array> + <key>ID</key> + <integer>508</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{861.28012490456513, 289.03305157451177}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>511</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 \f0\fs36 \cf0 +}</string> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{793.24862822431305, 341.93813474281569}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>512</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs36 \cf0 +}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>Group</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{642.35624861478368, 574.45724301018515}, {54.025012069612032, 19.852941176470587}}</string> <key>Class</key> - <string>Group</string> - <key>Graphics</key> - <array> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> <dict> - <key>Bounds</key> - <string>{{642.35624861478368, 574.45724301018515}, {54.025012069612032, 19.852941176470587}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0</string> - </dict> - <key>Size</key> - <real>18</real> - </dict> - <key>ID</key> - <integer>514</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>514</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} \deftab720 \pard\pardeftab720\qc\partightenfactor0 \f0\fs36 \cf0 a}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{642.35624861478368, 557.3712075636148}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>12</real> - </dict> - <key>ID</key> - <integer>515</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - </array> - <key>ID</key> - <integer>513</integer> + </dict> </dict> <dict> <key>Bounds</key> - <string>{{721.79841913713244, 496.26027930252178}, {54.025012069612032, 54.025012069612046}}</string> + <string>{{642.35624861478368, 557.3712075636148}, {54.025012069612032, 54.025012069612046}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> <dict> <key>Size</key> - <real>18</real> + <real>12</real> </dict> <key>ID</key> - <integer>516</integer> + <integer>515</integer> <key>Shape</key> <string>Circle</string> <key>Style</key> @@ -37528,126 +37458,92 @@ </dict> <key>Text</key> <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + </array> + <key>ID</key> + <integer>513</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{721.79841913713244, 496.26027930252178}, {54.025012069612032, 54.025012069612046}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Size</key> + <real>18</real> + </dict> + <key>ID</key> + <integer>516</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 \f0\fs36 \cf0 +}</string> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - <dict> - <key>Class</key> - <string>Group</string> - <key>Graphics</key> - <array> - <dict> - <key>Bounds</key> - <string>{{562.91407809243435, 513.34631474909247}, {54.025012069612032, 19.852941176470587}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0</string> - </dict> - <key>Size</key> - <real>12</real> - </dict> - <key>ID</key> - <integer>518</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;} -\deftab720 -\pard\pardeftab720\qc\partightenfactor0 - -\f0\fs24 \cf0 [a-zA-Z]}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{562.91407809243435, 496.26027930252155}, {54.025012069612032, 54.025012069612046}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FontInfo</key> - <dict> - <key>Size</key> - <real>12</real> - </dict> - <key>ID</key> - <integer>519</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <real>0.0</real> - </dict> - </dict> - </array> - <key>ID</key> - <integer>517</integer> - </dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>Group</string> + <key>Graphics</key> + <array> <dict> <key>Bounds</key> - <string>{{642.35624861478345, 448.23734830570982}, {54.025012069612032, 54.025012069612046}}</string> + <string>{{562.91407809243435, 513.34631474909247}, {54.025012069612032, 19.852941176470587}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> <key>Size</key> - <real>18</real> + <real>12</real> </dict> <key>ID</key> - <integer>520</integer> - <key>Shape</key> - <string>Circle</string> + <integer>518</integer> <key>Style</key> <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> <key>shadow</key> <dict> <key>Draws</key> <string>NO</string> </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> </dict> <key>Text</key> <dict> @@ -37655,25 +37551,24 @@ <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 - -\f0\fs36 \cf0 |}</string> - <key>VerticalPad</key> - <real>0.0</real> +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs24 \cf0 [a-zA-Z]}</string> </dict> </dict> <dict> <key>Bounds</key> - <string>{{721.79841913713244, 394.37908010051001}, {54.025012069612032, 54.025012069612046}}</string> + <string>{{562.91407809243435, 496.26027930252155}, {54.025012069612032, 54.025012069612046}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>FontInfo</key> <dict> <key>Size</key> - <real>18</real> + <real>12</real> </dict> <key>ID</key> - <integer>521</integer> + <integer>519</integer> <key>Shape</key> <string>Circle</string> <key>Style</key> @@ -37686,293 +37581,356 @@ </dict> <key>Text</key> <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 -{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 - -\f0\fs36 \cf0 *}</string> <key>VerticalPad</key> <real>0.0</real> </dict> </dict> </array> <key>ID</key> - <integer>488</integer> + <integer>517</integer> </dict> <dict> <key>Bounds</key> - <string>{{989.52825519151577, 340.45203360337928}, {59.360815730808326, 30}}</string> + <string>{{642.35624861478345, 448.23734830570982}, {54.025012069612032, 54.025012069612046}}</string> <key>Class</key> <string>ShapedGraphic</string> - <key>FitText</key> - <string>Vertical</string> - <key>Flow</key> - <string>Resize</string> <key>FontInfo</key> <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0.109804</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0.694118</string> - </dict> + <key>Size</key> + <real>18</real> </dict> <key>ID</key> - <integer>522</integer> + <integer>520</integer> + <key>Shape</key> + <string>Circle</string> <key>Style</key> <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> <key>shadow</key> <dict> <key>Draws</key> <string>NO</string> </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> </dict> <key>Text</key> <dict> <key>Text</key> <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} -{\colortbl;\red255\green255\blue255;\red177\green0\blue28;} -\deftab720 -\pard\pardeftab720\qc\partightenfactor0 - -\f0\fs32 \cf2 8}</string> +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs36 \cf0 |}</string> + <key>VerticalPad</key> + <real>0.0</real> </dict> </dict> <dict> <key>Bounds</key> - <string>{{718.81959131801227, 665.01896568208258}, {59.360815730808326, 30}}</string> + <string>{{721.79841913713244, 394.37908010051001}, {54.025012069612032, 54.025012069612046}}</string> <key>Class</key> <string>ShapedGraphic</string> - <key>FitText</key> - <string>Vertical</string> - <key>Flow</key> - <string>Resize</string> <key>FontInfo</key> <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0.109804</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0.694118</string> - </dict> + <key>Size</key> + <real>18</real> </dict> <key>ID</key> - <integer>523</integer> + <integer>521</integer> + <key>Shape</key> + <string>Circle</string> <key>Style</key> <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> <key>shadow</key> <dict> <key>Draws</key> <string>NO</string> </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> </dict> <key>Text</key> <dict> <key>Text</key> <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs36 \cf0 *}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + </array> + <key>ID</key> + <integer>488</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{989.52825519151577, 340.45203360337928}, {59.360815730808326, 30}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.109804</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0.694118</string> + </dict> + </dict> + <key>ID</key> + <integer>522</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;\red177\green0\blue28;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs32 \cf2 8}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{718.81959131801227, 665.01896568208258}, {59.360815730808326, 30}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.109804</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0.694118</string> + </dict> + </dict> + <key>ID</key> + <integer>523</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;\red177\green0\blue28;} \deftab720 \pard\pardeftab720\qc\partightenfactor0 \f0\fs32 \cf2 4}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{924.3314042062741, 392.89297896107371}, {59.360815730808326, 30}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FitText</key> - <string>Vertical</string> - <key>Flow</key> - <string>Resize</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0.109804</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0.694118</string> - </dict> - </dict> - <key>ID</key> - <integer>524</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{924.3314042062741, 392.89297896107371}, {59.360815730808326, 30}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.109804</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0.694118</string> + </dict> + </dict> + <key>ID</key> + <integer>524</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;\red177\green0\blue28;} \deftab720 \pard\pardeftab720\qc\partightenfactor0 \f0\fs32 \cf2 1}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{639.44951185771811, 608.32605178187259}, {59.360815730808326, 30}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FitText</key> - <string>Vertical</string> - <key>Flow</key> - <string>Resize</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0.109804</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0.694118</string> - </dict> - </dict> - <key>ID</key> - <integer>525</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{639.44951185771811, 608.32605178187259}, {59.360815730808326, 30}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.109804</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0.694118</string> + </dict> + </dict> + <key>ID</key> + <integer>525</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;\red177\green0\blue28;} \deftab720 \pard\pardeftab720\qc\partightenfactor0 \f0\fs32 \cf2 1}</string> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{562.91407809243435, 545.96384649164133}, {59.360815730808326, 30}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>FitText</key> - <string>Vertical</string> - <key>Flow</key> - <string>Resize</string> - <key>FontInfo</key> - <dict> - <key>Color</key> - <dict> - <key>b</key> - <string>0.109804</string> - <key>g</key> - <string>0</string> - <key>r</key> - <string>0.694118</string> - </dict> - </dict> - <key>ID</key> - <integer>526</integer> - <key>Style</key> - <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{562.91407809243435, 545.96384649164133}, {59.360815730808326, 30}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>0.109804</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0.694118</string> + </dict> + </dict> + <key>ID</key> + <integer>526</integer> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1404\cocoasubrtf340 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} {\colortbl;\red255\green255\blue255;\red177\green0\blue28;} \deftab720 \pard\pardeftab720\qc\partightenfactor0 \f0\fs32 \cf2 1}</string> - </dict> - </dict> - </array> - <key>ID</key> - <integer>486</integer> - </dict> - </array> - <key>ID</key> - <integer>484</integer> + </dict> + </dict> + </array> + <key>ID</key> + <integer>486</integer> </dict> <dict> <key>Class</key> @@ -81806,14 +81764,14 @@ <key>WindowInfo</key> <dict> <key>CurrentSheet</key> - <integer>6</integer> + <integer>9</integer> <key>Expanded_Canvases</key> <array> <string>cctree</string> <string>キャンバス 7</string> </array> <key>Frame</key> - <string>{{218, 38}, {1279, 1139}}</string> + <string>{{351, 38}, {1279, 1139}}</string> <key>ShowInfo</key> <true/> <key>ShowRuler</key> @@ -81825,9 +81783,9 @@ <key>TopSlabHeight</key> <real>682</real> <key>VisibleRegion</key> - <string>{{1150.8547008547009, -27.000000000000131}, {517.09401709401709, 838.46153846153857}}</string> + <string>{{542.13483146067415, -85.999999999999957}, {679.77528089887642, 1102.2471910112361}}</string> <key>Zoom</key> - <real>1.1699999999999999</real> + <real>0.89000000000000001</real> <key>ZoomValues</key> <array> <array> @@ -81857,8 +81815,8 @@ </array> <array> <string>CharClass Merge Pattern</string> + <real>1.1699999570846558</real> <real>1.1699999999999999</real> - <real>0.72999999999999998</real> </array> <array> <string>キャンバス 9</string> @@ -81877,8 +81835,8 @@ </array> <array> <string>キャンバス 12</string> - <real>1.2599999904632568</real> - <real>1.26</real> + <real>0.89000000000000001</real> + <real>0.93000000000000005</real> </array> <array> <string>bmsearch</string>
--- a/paper/master_paper.tex Wed Feb 17 19:43:19 2016 +0900 +++ b/paper/master_paper.tex Wed Feb 17 20:50:15 2016 +0900 @@ -81,8 +81,8 @@ それぞれの例題によって結果の整合性を取る必要があるが、どのように整合性を取るかは問題によって考慮する必要がある。 本研究で実装した正規表現は、正規表現から正規表現木を生成し、その正規表現木に状態を割り振りながらNFA や DFA を生成する。 -もし NFA が存在した場合は Subset Construction で DFA に変換する。 -そして、DFA の生成後ファイルとマッチングさせる。 +もし NFA が生成した場合は Subset Construction で DFA に変換する。 +そして、DFA の生成後、ファイルとマッチングさせる。 それぞれの例題と Mac に built-in されている wc、egrep と比較し測定を行なった。 \end{abstract}