(57)【特許請求の範囲】
【請求項１】
圧縮されたデータストリームを圧縮解除する方法であって、前記圧縮されたデータストリームは通常の順序の複数の圧縮されたセグメントを有し、各セグメントは制御要素および前記制御要素に対して前記データストリームの前記通常の順序で後続するデータ要素を有する場合のデータストリーム圧縮解除方法において、
前記セグメントをそれらの通常の順序で読み出すステップと、
ある特定のセグメントを読み出した後に、前記セグメントの順序を逆転させることなく、前記制御要素が前記データストリームの前記通常の順序において前記データ要素の後に続くように、前記セグメントの制御要素に対して、前記制御要素に関係するデータ要素の順序を逆にするステップと、
を含むことを特徴とするデータストリーム圧縮解除方法。
【請求項２】
前記読み出しステップの実行後に前記セグメントを圧縮解除する追加のステップを更に含むことを特徴とする請求項１に記載のデータストリーム圧縮解除方法。
【請求項３】
前記複数のセグメントをそれらの通常の順序で読み出した後に実行される追加のステップであって、前記セグメントを逆の順序で読み出すことを、制御要素とそれに関係するデータ要素が逆転された最後のセグメントから開始する追加のステップを更に含むことを特徴とする請求項１に記載のデータストリーム圧縮解除方法。
【請求項４】
前記複数のセグメントをそれらの通常の順序で読み出した後に実行される下記の追加のステップであって、
セグメントを逆の順序で読み出すことを、制御要素とそれに関係するデータ要素が逆転された最後のセグメントから開始するステップと、
前記セグメントを逆の順序で読み出す時に、前記順序を逆にするステップの実行を続行するステップと、
を更に含むことを特徴とする請求項１に記載のデータストリーム圧縮解除方法
【請求項５】
データバッファからの圧縮されたデータストリームを圧縮解除する方法であって、前記圧縮されたデータストリームは前記データバッファ内に通常の順序の複数の圧縮されたセグメントを有し、各セグメントは制御要素および前記制御要素に対して前記圧縮されたデータストリームの前記通常の順序で後続するデータ要素を有する場合のデータストリーム圧縮解除方法において、
前記セグメントを前記データバッファからそれらの通常の順序で読み出すステップと、
前記データバッファの場所から特定のセグメントを読み出した後に、前記セグメントの順序を逆転させることなく、前記特定のセグメントを、前記データ要素に対する前記制御要素の順序を逆にした状態で前記データバッファのそれの場所に書き戻すステップと、
を含むことを特徴とするデータストリーム圧縮解除方法。
【請求項６】
前記セグメントを読み出した後に、前記セグメントを圧縮解除する追加のステップを更に含むことを特徴とする請求項５に記載のデータストリーム圧縮解除方法。
【請求項７】
前記特定のセグメントの制御要素およびそれに関係するデータ要素を前記データバッファに書き戻す前に、メモリスタックを用いて、前記特定のセグメントの制御要素およびそれに関係するデータ要素を一時的に記憶する追加のステップを更に含むことを特徴とする請求項５に記載のデータストリーム圧縮解除方法。
【請求項８】
前記データバッファから読み出すべき次の要素の場所を示す第１のバッファポインタを更新するステップと、
制御要素およびそれに関係するデータ要素を逆の順序で書き込むべき次の圧縮されたセグメントの場所を示す第２のバッファポインタを更新するステップと、
各要素を読み出した後に、前記第１のバッファポインタを進めるステップと、
各圧縮されたセグメントをそれの同じ場所に書き戻した後に、前記第２のバッファポインタを進めるステップと、
を更に含むことを特徴とする請求項５に記載のデータストリーム圧縮解除方法。
【請求項９】
前記データ要素はビット順序を有しており、前記データ要素を前記データバッファに書き戻す前に、前記データ要素のビット順序を逆にする追加のステップを更に含むことを特徴とする請求項５に記載のデータストリーム圧縮解除方法。
【請求項１０】
前記データバッファから前記セグメントを逆の順序で読み出すことを、前記データバッファへ書き戻された制御要素およびそれに関係するデータ要素の最後のセグメントから開始する追加のステップを更に含むことを特徴とする請求項５に記載のデータストリーム圧縮解除方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一方向に圧縮されたデータストリームのデータを双方向に圧縮解除する手段および方法に関する。
【０００２】
【従来の技術】
圧縮データは連続的なストリームとして読み出しあるいは受信されることが多く、離散的セグメントを読み出し時に圧縮解除しなければならない。多くの圧縮法において、セグメントの長さはさまざまである。各セグメントはそのセグメントの長さすなわちその後に続くデータバイトすなわちデータ要素の数を示す制御ワードから始まる。
【０００３】
図１にはセグメントＡ−Ｎと称する複数の離散的セグメント１１を有するデータストリーム１０の一例を示す。各セグメントは制御ワードすなわち要素１２を有し、その後に可変数のデータ要素１３が続く。この例では、制御要素は“制御Ａ”から“制御Ｎ”の符号が付されている。データ要素にはその制御要素に対応する同様な符号が付されている。たとえば、制御要素制御Ａに対応するデータ要素には“データＡ１”から“データＡ２”の符号が付されている。
【０００４】
各制御ワードはそのセグメント内のそれに続くデータ要素の数および／または長さを示す値を含む。次の制御ワードは表示された数のデータ要素の後に配置されている。
【０００５】
制御要素に可変数のデータ要素が続く圧縮法にはさまざまなタイプがある。参考として、米国特許５，０６０，２８６号および５，４５２，４０５号にその具体的な２つの例が開示されている。制御要素はそれに続くデータ要素群の長さに加えて、たとえば前のデータ値に対するオフセット等のかかるデータ要素群に関するさまざまな事項を示す場合があることを指摘しておく。
【０００６】
【発明が解決しようとする課題】
図１に示す圧縮されたデータストリームの１つの特徴は、制御要素がデータ要素の前にくる通常の順方向の順序で読み出されなければならないことである。データストリームを逆の順序で読み出すことは不可能である。たとえば、読み出しをデータストリーム１０の最後、すなわちデータＮ２と表示したデータ要素で開始しなければならないとする。この場合の問題点は、制御Nで示す制御要素の前にあるデータ要素の数がわからないことである。したがって、制御要素を発見する、すなわちそれをデータ要素と区別することが不可能である。
【０００７】
このような困難があるにもかかわらず、圧縮されたデータストリームを逆の順序で読み出すことが必要な場合がある。かかる逆方向の消費の必要性を示す例として双方向ラスタ型プリンタがある。かかるプリンタにおいては、印刷ヘッドを１つのラスタ行上で複数回走査することが必要になることが多い。かかるラスタ行に対応するデータは、まず印刷ヘッドの順方向の初回のパスでは元の順序で要求され、続いて印刷ヘッドの逆方向の２回目のパスでは逆の順序で要求される。
【０００８】
この問題については２つの主要な解決方法がある。第１の方法は、ある特定のセグメントのデータ要素の前と後の両方に同じ制御要素を配置することによって圧縮方法を変更するというものである。この方法の問題点は必要な制御ワード数が倍になり、圧縮法の効率が低下することである。
【０００９】
第２の主要な解決法はデータストリームの初回の順方向の圧縮解除中に圧縮解除されたデータのコピーを作成・保持し、その後はオリジナルの圧縮データストリームの替わりにこの圧縮解除されたデータを参照するというものである。この方法の問題点は圧縮解除されたデータの記憶にかなりのメモリ量を要することである。
【００１０】
発明者らは、圧縮効率の低下やメモリの追加を伴なわず圧縮されたデータを双方向に消費する方法を開発した。
【００１１】
【課題を解決するための手段】
本発明は、制御要素がデータ要素に先行する通常の順序で発生する離散的な圧縮されたセグメントを有する圧縮されたデータストリームを圧縮解除する方法である。まず、データストリームはデータバッファからその通常の順序で消費される。しかし、各セグメントの読み出しの後、制御要素とデータ要素の位置がデータバッファ内で逆転される。すなわち、各セグメントは順方向に消費された後変更され、データ要素がそれに関係する制御要素に先行する。その後、データバッファからの逆方向の読み出しの際、制御要素はそれに関係するデータ要素の前に読み出され、それによってデータバッファの圧縮解除が可能となる。
【００１２】
【発明の実施の形態】
図２には、本発明の一実施形態における好適なステップを示す。これらのステップはプリンタのコントローラに見られるもののようなプログラマブルコンピュータすなわちマイクロプロセッサ、あるいはそれと等価なハードワイヤードロジックによって実行される。
【００１３】
第１のステップ１００では圧縮されたデータストリームを受信する。この圧縮されたデータストリームは通常の順序の複数の圧縮されたセグメントを有する。各セグメントは制御要素を有し、それに関係するデータ要素がこれに続く。ほとんどの場合、この制御要素はそれに続くデータ要素の長さを記述する。
【００１４】
次のステップ１０２ではデータバッファに圧縮されたセグメント群が受信時と同じ順序で記憶される。各群はその全体を１つとして処理すべきなんらかの論理的数のセグメントに対応する。たとえば、プリンタにおいては、あるセグメント群はある特定の印刷行のデータを保持するセグメントあるいは印刷ヘッドのパスの複数の行に必要なデータを保持するセグメントを含む。
【００１５】
図３から図７には制御要素３２およびそれに続くデータ要素３３を有する圧縮されたデータセグメント３１を有するデータバッファ３０を示す。本実施形態では、データバッファはその始点から双方向に走査される。圧縮されたデータは要素単位で読み出される。参照符号３４で示す現在バッファポインタがデータバッファの読み出しの現在の進行状況を示す。順方向あるいは逆方向のいずれかに読み出しているとき、ポインタ３４は次に読み出すべき要素を指すように維持（すなわち、更新）される。すなわち、データバッファを順方向に走査しているとき、現在バッファポインタは各要素の読み出し後順方向に送られる。データバッファを逆方向に走査しているとき、現在バッファポインタは各要素の読み出し後逆方向に送られる。
【００１６】
図３において、現行データバッファ３４はデータバッファの始点にあり、第１の要素（制御Ａ）が順方向に読み出すべき次の要素であることを示している。この時点では逆方向の読み出しは不可能である。これは現行データポインタがすでにデータバッファの始点にあるためである。
【００１７】
セグメントはデータバッファからその通常の順方向の順序で１つずつ読み出され圧縮解除される。図２に戻って、ステップ１０４ではデータバッファからある特定のセグメントが読み出され、圧縮解除される。読み出し中、現在バッファポインタは、データバッファ内の読み出すべき次の要素の場所を常に示すように維持される。したがって、現在バッファポインタは各要素の読み出し後データバッファ内の順方向の走査中に進められる。
【００１８】
図４にはデータバッファ３０の第１の圧縮されたセグメントの読み出し後の現在バッファポインタの位置を示す。ポインタはセグメントＢの前に位置し、セグメントＢが順方向に次に読み出すべきセグメントであることを示している。
【００１９】
再度図２に戻って、ステップ１０６が実行され、データバッファから読み出したばかりの圧縮されたセグメントの制御要素とそれに関係するデータ要素の順序が逆転される。次に、ステップ１０８が実行され、圧縮されたセグメントがデータバッファ内のそのもとの場所に制御要素とそれに関係するデータ要素が逆転した状態で書き戻される。すなわち、制御要素はデータ要素の後に続くように位置変更され、データ要素の順序が逆転される。場合によっては、データ要素をデータバッファに書き戻す前にそのビットの順序を逆転することが望ましいこともある。
【００２０】
実際には、ステップ１０６およびステップ１０８は遅れバッファポインタ３５と一時メモリスタック３６（図４）を維持することによって実行される。遅れバッファポインタ３５はデータバッファ内のセグメントの元の場所を記録するのに用いられる。このポインタは制御要素および関連のデータ要素をデータバッファに再度書き込むべき次の圧縮セグメントの場所を示すように維持される。より詳細には、この遅れバッファポインタはデータバッファの順方向への走査中、順方向にセグメント単位で進められる。しかし、このポインタは、あるセグメントに対する書き込みステップが完了した後にのみそのセグメントを越えて進められる。かかる書き込みステップの後、遅れデータポインタは次の圧縮セグメント、すなわち現在バッファポインタと同じ位置に進められる。
【００２１】
一時メモリスタック３６を用いて、データバッファから読み出された要素はデータバッファの再配列とデータバッファへの書き戻しが可能となるように記憶される。データ要素はバッファ３０から読み出されるにつれて、一時メモリスタック３６に入れられる。したがって、まず制御要素Ａが書き込まれ、続いてデータ要素Ａ１、その後データ要素Ａ２が書き込まれる。この状態を図４に示す。遅れバッファポインタ３５は第１の圧縮セグメントの前に位置するものと示されており、現在バッファポインタは第２の圧縮セグメントの前に位置している。これは、セグメントＡ全体の読み出しが完了しているが、まだ再書き込みが行なわれていないことを示している。
【００２２】
これらの要素のデータバッファへの書き戻しは、単にこれらをデータバッファ内の遅れデータポインタ３５の示す場所を起点として順次の場所に後入れ先出しの順序でスタックから押し出していくことに実行される。したがって、データ要素Ａ２がまず書き込まれ、続いてデータ要素Ａ１、その後制御要素Ａが書き込まれる。その後、遅れデータポインタは次のセグメントに進められる。その結果を図５に示す。
【００２３】
図６には、データバッファ全体が順方向に走査された後のデータバッファ３０の内容を示す。図２のステップ１１０および１１２はこの処理が各セグメントおよび後続のセグメント群に対して繰り返されることを示す判断ステップである。
【００２４】
上述した方法を用いれば、複数のセグメントをデータバッファから通常の順序で読み出し、書き直した後、バッファ走査の方向を逆転することができる。したがって、本発明はセグメントを、データバッファから制御要素および関連のデータ要素が逆転された最後のセグメントから逆の順序で読み出すステップを含む。かかる逆転は処理中の現在バッファポインタと遅れバッファポインタが一致する点においてのみ開始可能である。読み出し処理はデータを異なる方向に数回消費することが必要である場合には複数回逆転させることが可能である。
【００２５】
データバッファの逆方向の読み出しは順方向の読み出しと同様に実行される。すなわち、制御要素およびデータ要素の逆転ステップはデータバッファの逆方向の読み出し時にも続行される。データは制御要素から要素単位で読み出される。現在バッファポインタは各要素の読み出し時に逆方向に進められる。要素は読み出される都度一時メモリスタックに押し出され、セグメントの全体が読み出された後データバッファに戻される。遅れデータポインタは、各セグメントが配列し直され、データバッファに再度書き込まれた後セグメント単位で逆方向に進められる。図７には圧縮セグメントＮが逆方向に読み出された後のデータバッファを示す。あるセグメントが逆方向に読み出された後、その各要素は元のデータストリームにおける位置と同様に配置される。図７に示す時点から圧縮解除を現在バッファポインタから順方向あるいは逆方向のいずれかに実行可能である。これは、制御要素が現在バッファポインタの直前および直後に配置されているためである。
【００２６】
本発明は、オーバヘッドを著しく増大させることなく一方向に圧縮されたデータストリームを双方向に消費することを可能にすることによって圧縮解除技術に要求される改善を提供するものである。
【００２７】
法令に従い、本発明をその機構に関してある程度具体的な用語を用いて説明した。しかし、ここに開示した手段は本発明の好適な実施態様であって、本発明はここに説明した具体的機構に限定されるものではないことを理解されたい。したがって、本発明を均等論にしたがって適切に解釈された適切な特許請求の範囲に該当する任意の形態あるいは変更態様において特許請求するものである。
【００２８】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
【００２９】
（実施態様１）
圧縮されたデータストリームを圧縮解除する方法であって、前記圧縮されたデータストリームは通常の順序の複数の圧縮されたセグメント（３１）を有し、各セグメント（３１）は制御要素（３２）およびそれに続く関係するデータ要素（３３）を有し、前記方法は、
前記セグメント（３１）をその通常の順序で読み出し、
ある特定のセグメント（３１）の読み出しの後、前記特定のセグメント（３１）の制御要素（３２）および関係するデータ要素（３３）の順序を逆転する
ことを特徴とする方法。
【００３０】
（実施態様２）
前記読み出しステップの実行後前記セグメント（３１）を圧縮解除するステップを含むことを特徴とする実施態様１記載の方法。
【００３１】
（実施態様３）
前記複数のセグメント（３１）をその通常の順序で読み出した後、セグメント（３１）を、制御要素（３２）および関係するデータ要素（３３）が逆転された最後のセグメント（３１）から逆の順序で読み出すステップを含むことを特徴とする実施態様１記載の方法。
【００３２】
（実施態様４）
前記複数のセグメント（３１）をその通常の順序で読み出した後実行される、セグメント（３１）を、制御要素（３２）および関係するデータ要素（３３）が逆転された最後のセグメント（３１）から逆の順序で読み出すステップと、
前記逆転ステップを前記セグメント（３１）の逆方向の読み出し時に続行するステップと
を含むことを特徴とする実施態様１記載の方法。
【００３３】
（実施態様５）
データバッファ（３０）からの圧縮されたデータストリームを圧縮解除する方法であって、前記圧縮されたデータストリームは前記データバッファ（３０）内の通常の順序の複数の圧縮されたセグメントを有し、各セグメント（３１）は制御要素（３２）およびそれに続く関係するデータ要素（３３）を有し、前記方法は、
前記セグメント（３１）を前記データバッファからその通常の順序で読み出し、
特定のセグメント（３１）を前記データバッファ（３０）内の場所から読み出した後、それを制御要素（３２）および関係するデータ要素（３３）の順序を逆転させて前記データバッファ（３０）内の場所に書き戻す
ことを特徴とする方法。
【００３４】
（実施態様６）
前記セグメント（３１）を読み出した後圧縮解除するステップを含むことを特徴とする実施態様５記載の方法。
【００３５】
（実施態様７）
メモリスタック（３６）を用いて前記特定のセグメント（３１）の制御要素（３２）および関係するデータ要素（３３）を、前記制御要素（３２）および関係するデータ要素（３３）を前記データバッファ（３０）に書き戻す前に一時的に記憶するステップを含むことを特徴とする実施態様５記載の方法。
【００３６】
（実施態様８）
前記データバッファ（３０）から次に読み出すべき要素の場所を示す第１のバッファポインタ（３４）を維持するステップと、
制御要素（３２）および関係するデータ要素（３１）を逆の順序で書き込むべき次の圧縮されたセグメント（３１）の場所を示す第２のバッファポインタ（３５）を維持するステップと、
各要素の読み出しの後前記第１のバッファポインタ（３４）を進めるステップと、
各圧縮されたセグメント（３１）をその同じ場所に書き戻した後前記第２のバッファポインタ（３５）を進めるステップと
を含むことを特徴とする実施態様５記載の方法。
【００３７】
（実施態様９）
前記データ要素（３３）はビット順序を有し、前記データ要素（３３）を前記データバッファ（３０）に書き戻す前に前記ビット順序を逆転するステップを含むことを特徴とする実施態様５記載の方法。
【００３８】
（実施態様１０）
セグメント（３１）を前記データバッファ（３０）から制御要素（３２）および関係するデータ要素（３３）が前記データバッファ（３０）に書き戻されている最後のセグメント（３１）から逆の順序で読み出すステップを含むことを特徴とする実施態様５記載の方法。
【００３９】
（実施態様１１）
コンピュータによって圧縮されたデータストリームを圧縮解除するためのプログラムを記録した記録媒体であって、前記圧縮されたデータストリームは通常の順序の複数の圧縮されたセグメント（３１）を有し、各セグメント（３１）は制御要素（３２）およびそれに続く関係するデータ要素（３３）を有し、前記プログラムは、
前記セグメント（３１）をその通常の順序で読み出し、
ある特定のセグメント（３１）の読み出しの後、前記特定のセグメント（３１）の制御要素（３２）および関係するデータ要素（３３）の順序を逆転する
ことを特徴とするプログラムを記録した記録媒体。
【００４０】
（実施態様１２）
前記プログラムの前記読み出しステップの実行後前記セグメント（３１）を圧縮解除するステップを含むことを特徴とする実施態様１１記載のプログラムを記録した記録媒体。
【００４１】
（実施態様１３）
前記プログラムの前記複数のセグメント（３１）をその通常の順序で読み出した後、セグメント（３１）を、制御要素（３２）および関係するデータ要素（３３）が逆転された最後のセグメント（３１）から逆の順序で読み出すステップを含むことを特徴とする実施態様１１記載のプログラムを記録した記録媒体。
【００４２】
（実施態様１４）
前記プログラムの前記複数のセグメント（３１）をその通常の順序で読み出した後実行される、
セグメント（３１）を、制御要素（３２）および関係するデータ要素（３３）が逆転された最後のセグメント（３１）から逆の順序で読み出すステップと、
前記逆転ステップを前記セグメント（３１）の逆方向の読み出し時に続行するステップと
を含むことを特徴とする実施態様１１記載のプログラムを記録した記録媒体。
【００４３】
（実施態様１５）
コンピュータによってデータバッファ（３０）からの圧縮されたデータストリームを圧縮解除するためのプログラムを記録した記録媒体であって、前記圧縮されたデータストリームは前記データバッファ（３０）内の通常の順序の複数の圧縮されたセグメントを有し、各セグメント（３１）は制御要素（３２）およびそれに続く関係するデータ要素（３３）を有し、前記プログラムは、
前記セグメント（３１）を前記データバッファからその通常の順序で読み出し、
特定のセグメント（３１）を前記データバッファ（３０）内の場所から読み出した後、それを制御要素（３２）および関係するデータ要素（３３）の順序を逆転させて前記データバッファ（３０）内の場所に書き戻す
ことを特徴とするプログラムを記録した記録媒体。
【００４４】
（実施態様１６）
前記プログラムの前記セグメント（３１）を読み出した後圧縮解除するステップを含むことを特徴とする実施態様１５記載のプログラムを記録した記録媒体。
【００４５】
（実施態様１７）
前記プログラムのメモリスタック（３６）を用いて前記特定のセグメント（３１）の制御要素（３２）および関係するデータ要素（３３）を、前記制御要素（３２）および関係するデータ要素（３３）を前記データバッファ（３０）に書き戻す前に一時的に記憶するステップを含むことを特徴とする実施態様１５記載のプログラムを記録した記録媒体。
【００４６】
（実施態様１８）
前記プログラムにおいて、前記データバッファ（３０）から次に読み出すべき要素の場所を示す第１のバッファポインタ（３４）を維持するステップと、
制御要素（３２）および関係するデータ要素（３１）を逆の順序で書き込むべき次の圧縮されたセグメント（３１）の場所を示す第２のバッファポインタ（３５）を維持するステップと、
各要素の読み出しの後前記第１のバッファポインタ（３４）を進めるステップと、
各圧縮されたセグメント（３１）をその同じ場所に書き戻した後前記第２のバッファポインタ（３５）を進めるステップと
を含むことを特徴とする実施態様１５記載のプログラムを記録した記録媒体。
【００４７】
（実施態様１９）
前記プログラムの前記データ要素（３３）はビット順序を有し、前記データ要素（３３）を前記データバッファ（３０）に書き戻す前に前記ビット順序を逆転するステップを含むことを特徴とする実施態様１５記載のプログラムを記録した記録媒体。
【００４８】
（実施態様２０）
前記プログラムのセグメント（３１）を前記データバッファ（３０）から制御要素（３２）および関係するデータ要素（３３）が前記データバッファ（３０）に書き戻されている最後のセグメント（３１）から逆の順序で読み出すステップを含むことを特徴とする実施態様１５記載のプログラムを記録した記録媒体。
【００４９】
【発明の効果】
以上のように、本発明を用いると、圧縮効率の低下やメモリの追加を伴なわず圧縮されたデータを双方向に消費することができる。
【図面の簡単な説明】
【図１】一方向に圧縮されたデータを保持する従来のデータバッファのブロック図である。
【図２】本発明に係る方法を示すフローチャートである。
【図３】図２の方法におけるある時点でのデータバッファの一例を示すブロック図である。
【図４】図２の方法における他の時点での前記データバッファの例を示すブロック図である。
【図５】図２の方法における他の時点での前記データバッファの例を示すブロック図である。
【図６】図２の方法における他の時点での前記データバッファの例を示すブロック図である。
【図７】図２の方法における他の時点での前記データバッファの例を示すブロック図である。
【符号の説明】
３０：データバッファ、
３１：データセグメント、
３２：制御要素、
３３：データ要素、
３４：現在バッファポインタ、
３５：遅れバッファポインタ、
３６：一時メモリスタック、
１００，１０２，１０４，１０６，１０８，１１０，１１２：本発明の方法の実施ステップ
【図１】
0003692225.tif 000002
【図２】
0003692225.tif 000003
【図３】
0003692225.tif 000004
【図４】
0003692225.tif 000005
【図５】
0003692225.tif 000006
【図６】
0003692225.tif 000007
【図７】
0003692225.tif 000008