changeset 16:69ab7cf9c1a1

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 29 Jan 2021 16:18:15 +0900
parents 36d241194507
children 72bffc43a3a1
files paper/chapter/02-interface.tex paper/chapter/02-perl.tex paper/drawio/pmake.pdf paper/drawio/pmake.svg paper/drawio/pmake.xml paper/master_paper.pdf
diffstat 6 files changed, 59 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/chapter/02-interface.tex	Fri Jan 29 16:18:15 2021 +0900
@@ -0,0 +1,31 @@
+\section{GearsOSのInterfaceの構文の改良}
+GearsOSのInterfaceでは、 従来はDataGearとCodeGearを分離して記述していた。
+CodeGearの入出力をDataGearとして列挙する必要があった。
+CodeGearの入出力として\texttt{\_\_code()}の間に記述したDataGearの一覧と、Interface上部で記述したDataGearの集合が一致している必要がある。
+
+従来の分離している記法の場合、 このDataGearの宣言が一致していないケースが多々発生した。
+またInterfaceの入力としてのDataGearではなく、 フィールド変数としてDataGearを使うようなプログラミングスタイルを取ってしまうケースも見られた。
+GearsOSでは、 DataGearやフィールド変数をオブジェクトに格納したい場合、 Interface側ではなくImpl側に変数を保存する必要がある。
+Interface側に記述してしまう原因は複数考えられる。
+GearsOSのプログラミングスタイルに慣れていないことも考えられるが、構文によるところも考えられる。
+CodeGearとDataGearはInterfaceの場合は密接な関係性にあるが、 分離して記述してしまうと「DataGearの集合」と「CodeGearの集合」を別個で捉えてしまう。
+あくまでInterfaceで定義するCodeGearとDataGearはInterfaceのAPIである。
+これをユーザーに強く意識させる必要がある。
+
+golangにもInterfaceの機能が実装されている。
+golangの場合はInterfaceは関数の宣言部分のみを記述するルールになっている。
+変数名は含まれていても含まなくても問題ない。
+
+\begin{lstlisting}[frame=lrbt,label=src:golang_interface,caption={golangのinterface宣言}]
+type geometry interface {
+    area() float64
+    perim() float64
+}
+\end{lstlisting}
+
+
+\section{メタ計算部分の入れ替え}
+GearsOSでは次のCodeGearに移行する前のMetaCodeGearとして、 デフォルトでは\texttt{\_\_code meta}が使われている。
+このCodeGearはcontextに含まれているCodeGearの関数ポインタを、 enumからディスパッチして次のStub CodeGearに継続するものである。
+
+このメタ計算部分を独自で定義したCodeGearに差し替えたいケースが存在する。
--- a/paper/chapter/02-perl.tex	Thu Jan 28 20:47:08 2021 +0900
+++ b/paper/chapter/02-perl.tex	Fri Jan 29 16:18:15 2021 +0900
@@ -61,9 +61,31 @@
 
 
 GearsOSはビルドツールにCMakeを利用しているので、 CMakeでクロスコンパイル出来るように工夫をする必要がある。
-CMake自身が実行タイミングでコンパイラを特定し 実行する処理になっている。
-自動でクロスコンパイル対応のGCCコンパイラは探してくれない為に、CMakeの実行時に引数でクロスコンパイラを具体的に指定する必要がある。
+CMakeはautomakeなどのMakeファイルを作成するツールに相当するものである。
+CMake側の機能でビルドに使用できるコンパイラやリンカを自動探索し、 決定した上でMakefileやNinjaファイルを生成する。
+しかしCMakeは今ビルドしようとしている対象が、自分が動作しているアーキテクチャかそうでないか、クロスコンパイラとして使えるかなどはチェックしない。
+つまりCMakeが自動でクロスコンパイル対応のGCCコンパイラを探すことはない。
+その為そのままビルドするとx86用のバイナリが生成されてしまう。
+
+
+CMakeを利用してクロスコンパイルする場合、CMakeの実行時に引数でクロスコンパイラを明示的に指定する必要がある。
 この場合x86のマシンからARMのバイナリを出力する必要があり、 コンパイラやリンカーなどをARMのクロスコンパイル対応のものに指定する必要がある。
+また、 xv6の場合はOSであるためにリンク時に特定のリンカスクリプトを使う必要がある。
+これらのリンカスクリプトもCMake側に、 CMakeが提供しているリンカ用の特殊変数を使って自分で組み立てて渡す必要がある。
+このようなCMakeの処理を手打ちで行うことは難しいので、 \texttt{pmake.pl}を作成した。
+\texttt{pmake.pl}の処理フローを図\ref{fig:pmake}に示す。
+\texttt{pmake.pl}はPerlスクリプトで、 シェルコマンドを内部で実行しクロスコンパイル用のオプションを組み立てる。
+
+\begin{figure}[htp]
+  \begin{center}
+   \includegraphics[width=160mm]{drawio/pmake.pdf}
+  \end{center}
+  \caption{pmake.plの処理フロー}
+  \label{fig:pmake}
+ \end{figure}
+ 
+
+
 \section{GearsCbCのInterfaceの実装時の問題}
 
 Interfaceとそれを実装するImplの型が決定すると、最低限満たすべきCodeGearのAPIは一意に決定する。
Binary file paper/drawio/pmake.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/drawio/pmake.svg	Fri Jan 29 16:18:15 2021 +0900
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="819px" height="383px" viewBox="-0.5 -0.5 819 383" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-01-29T06:58:35.154Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36&quot; version=&quot;14.2.7&quot; etag=&quot;Jv8l956xLka1w39ZCMpa&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;g8943lxeM9Jt_bZtuknc&quot;&gt;5ZlLl5owFIB/Dct6eKPLGWfaLmbO6amLtssIETITCA1hxP76JhCexmpVtE43Qu5NwvV+9xFRs+Zx8YmCNHomAcSaqQeFZj1opmlYhs0vQrKpJJ5rVIKQokBOagUL9AtKoS6lOQpg1pvICMEMpX2hT5IE+qwnA5SSdX/aiuD+U1MQwi3Bwgd4W/oNBSyqpFPTa+WfIQqj+smGO6s0Magny2+SRSAg647IetSsOSWEVXdxMYdYOK/2S7Xu4w5tYxiFCTtkgSnNYJv6u1GSJwEUal2z7gllEQlJAvATISkXGlz4AhnbSCogZ4SLIhZjqYUFYt/F8onnyOEPuZu4fyi6g009SBjdfO8OyjUTpx62y8pRvS5jlLw2ECwuqb4QDAYEM5JTX4pcGTKAhpD1I6vrOaPhwQMZkhjyB/MpFGLA0Ft/eyAjKmzmtU7nN9LvagbWFgNh/UIOE5Lwy/1YWIx/G4sioC+Fxb4wlhuiYl6PinNRKkaHSUtITWXbuwHIotIK42hXz67naWnNG8C53FQzXcyNuF8RbkuXgfszJ7XiQ1Y69Y5P4HYXrZLfheKaxuAVTlJc78btqDas1Hsa0jpCDC5SUPpszY8XfXC7QvwNUgaLnm8O8KlcMJXNQZ5WTEeO123vN+qGHnX6vqufTsG7XrwfVYPMfUWolxTqnPkCGIM0KeeYun1Y8swUdcq5XvZMr8ZtnN7x19jM47G518M2O7noGTNV0fNF0Tu04nGT+C8ZuL/agSytft6sUCHgjFP+HHNQ/wxF/bOc7frXCE8hUj/sFCSuCsl8yZ+t3319rrdb0kZFSZZx5ZzEKcKQ3k6rMu0+q6YvXaJX1af1s6MqIelPaEmBsGiI63bxWKpUGg2PORIejJJXkSR65lOUsvcEyLYvCcgaCZAxEWshoH7Eb3LeWsR7sFirXpsdSod7lakQzAkmtD3UrBDGAxHAKBTnAp9T4IFi3QtGyAf4TipiFAR4V8PrR8UZIBuDGuk624ynCsbWORjbexj3M+Zg7lMVd1NwD2ECKWCCuTyF6CRliCSaiGMXxMLH1ac4rBXQz7uTd8TGsSn+boJoWClUp6KGdjeKvHNEkXN6pVBGzDNnzn1/8FH1+hXb071+Ns8U2TxaxT79JYnhqTgsc4SDSYKSF3C7KCzvks3Tu2BhtQaFtcTFr39Mnf++ZNrO4PQ7Ha9k8mH7L1qp6/wXaT3+Bg==&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 160 131 L 224.21 39.28" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 228.08 33.75 L 226.6 43.7 L 224.21 39.28 L 219.23 38.54 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 160 191 L 220.71 217.02" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 226.92 219.68 L 216.87 220.27 L 220.71 217.02 L 220.42 212 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 130 191 L 224.64 342.43" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 228.22 348.16 L 219.64 342.91 L 224.64 342.43 L 227.27 338.14 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 190 161 L 499.9 158.92" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 506.65 158.87 L 497.68 163.43 L 499.9 158.92 L 497.62 154.43 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="70" y="131" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 161px; margin-left: 71px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 20px">pmake.pl</font></div></div></div></foreignObject><text x="130" y="165" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">pmake.pl</text></switch></g><path d="M 625.23 110.77 L 687.26 93.68" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="3 12" pointer-events="stroke"/><path d="M 693.77 91.89 L 686.28 98.62 L 687.26 93.68 L 683.89 89.94 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 625.23 206.23 L 690 273.71" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="3 6" pointer-events="stroke"/><path d="M 694.68 278.58 L 685.2 275.2 L 690 273.71 L 691.69 268.97 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="577.5" cy="158.5" rx="67.5" ry="67.5" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 159px; margin-left: 511px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 19px">cmake</font></div></div></div></foreignObject><text x="578" y="162" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">cmake</text></switch></g><rect x="230" y="1" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 31px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 16px">CbC ARM<br />Cross Compiler</font></div></div></div></foreignObject><text x="290" y="35" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">CbC ARM...</text></switch></g><rect x="230" y="191" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 221px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 16px">ARM Library<br /></font></div></div></div></foreignObject><text x="290" y="225" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">ARM Library&#xa;</text></switch></g><rect x="230" y="321" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 351px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 16px">linker script<br /></font></div></div></div></foreignObject><text x="290" y="355" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">linker script&#xa;</text></switch></g><rect x="0" y="46" width="180" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 61px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 16px">1. search use arm tool</font></div></div></div></foreignObject><text x="90" y="65" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">1. search use arm tool</text></switch></g><rect x="230" y="91" width="214" height="70" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 212px; height: 1px; padding-top: 126px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font><font style="font-size: 18px">2. generate cmake option &amp; execute cmake</font><br /></font></div></div></div></foreignObject><text x="337" y="130" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">2. generate cmake option &amp; execute...</text></switch></g><rect x="697" y="76" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 106px; margin-left: 698px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 18px">Makefile</font></div></div></div></foreignObject><text x="757" y="110" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Makefile</text></switch></g><rect x="697" y="251" width="120" height="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 281px; margin-left: 698px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 17px">build.ninja</font></div></div></div></foreignObject><text x="757" y="285" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">build.ninja</text></switch></g><rect x="440" y="261" width="214" height="70" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 212px; height: 1px; padding-top: 296px; margin-left: 441px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font><font style="font-size: 18px">3. generate build file</font><br /></font></div></div></div></foreignObject><text x="547" y="300" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">3. generate build file&#xa;</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/drawio/pmake.xml	Fri Jan 29 16:18:15 2021 +0900
@@ -0,0 +1,1 @@
+<mxfile host="app.diagrams.net" modified="2021-01-29T06:58:10.216Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36" etag="-3u3PJutdR0A_NU2POli" version="14.2.7" type="device"><diagram id="7xJi4yecVqhsFGcozU6s" name="Page-1">5ZlbU6MwFMc/DY92IOHSPmp119nVmR2d2ctjCilEA2FDsHQ//SYQCrRo64Uy6kshJxeS/M7551AMOI+Lrxyl0TULMDWAGRQGPDcAsKBly4uyrCuL51qVIeQk0I0awy35h7XR1NacBDjrNBSMUUHSrtFnSYJ90bEhztmq22zJaPepKQrxjuHWR3TX+osEIqqsU+A19ktMwqh+suXOqpoY1Y31SrIIBWzVMsELA845Y6K6i4s5pmrz6n2p+n15pHYzMY4TcUiHGbzx7EVhh/G3PHMZvbz8/vNkqucm1vWCOcuTAKs+pgHPGBcRC1mC6BVjqTRa0niHhVhrVCgXTJoiEVNdiwsifqvuE8/RxT96NHV/XrQL67qQCL7+3S6UfSZOXWy6laW6XyY4u9+QgdJSLQgHO1ibfdKmjOXcx09sTu1viIdYPNEObmjKMMAsxnKGsh/HFAny0J0H0v4Ybto1yOSNpvYMgrMdgmrtt7qYsERezoaCan1cqM6YUGv1OxrVTwLVHRUqOCpUq4W0AdwPdRdOgLKonIU1DikwKqlq3AdEc/0kA7hUTvdsyeSC2wjdvzmrK06yksmpbCA3p2gq5V2ormmM7vEkpfVocnLVgFX1nrN4FRGBb1NU7u9Kpltd7o8F2APmAhdPg9vdaN1hqoVIZ2/A0eVVkwtZdYITtfIg1xwKjTteEL1IF8E+YexEWn8g/kBCYJ6UbYBpv21EggMjssrkRwtJbzTuw5yHz8YORsI+aiIEXq3E1qxPiX2lxIfKsJynfN3E+yUYZWn1DrokhWI7jCY7YEuUrR5Rhs6uKG+Mb44Jvh6T24dpvpDzMU9vruvhFnxTxVmWyco5i1NCMX8/Zyqwu/w2B+hoh6ozEL4SnHlFFhypWW4jfL/IYF/IHRWZOxAySpJ7FUxm5nOSio8EzbbHhma9/sWin5o1UX0x4n4kb3J5Vql/P2Oj+rP0UGRyq0UflzmjjDdJ1pJQumVClIQqT/ElGuk98EyBIz6ip7oiJkFAHztBu67yBuStLYF1nV3w0x7wcDDw+w7Ibmwd7AzTPmcAyhlCnGCOhHIEneuYLBWEJYbyeBfFauOrX5VRFtjP240fcZiXisGH8axtTenLvUD9zaPtWt5grmW/XlN63ehaOoIEcnCWPL7ge6bXjftZT9wfV/DfILPy+uAsckKDSUKSO/R++UBv9AN5ekRdhlu6XDKU1yeD7NMrru1spd7T4RRXFpvvsWVd66s2vPgP</diagram></mxfile>
\ No newline at end of file
Binary file paper/master_paper.pdf has changed