(57)【要約】DSM-CC受信器（１２）において、周期的に繰り返される複数のデータセクションが受信される。格納手段（１４）は、データセクションにアクセスする動作が、リファレンスが生成される結果となり、このリファレンスは、もはやアクセスされないときに除去される。リファレンスカウントは、そのリファレンスカウントがゼロに下がるときに、データセクションが削除のためにマークされるようにして、それぞれのデータセクションに対して続けられる。格納手段（１４）は、リファレンスされるデータセクションを確認し、その後、任意の順序において、格納手段（１４）の一部において共にそれらを再配置することによりこれらのリファレンスデータをコンパクト化し、及び移動セルに関連するポインタの値を更新することにより、まとめられるというさらなる態様がある。
2004534321.tif 000002
【特許請求の範囲】
【請求項１】
周期的に繰り返す複数のデータセクションを含む信号を受信し、前記信号に含まれるデータセクションをキャッシングする格納手段を含む受信器におけるキャッシュ管理方法であって、データセクションのアクセスは、もはやアクセスされないときに除去される対応リファレンスを生成する結果となり、データセクションがそれに属するリファレンスを有しないならば、前記非リファレンスデータセクションが削除のためにマークされる方法。
【請求項２】
リファレンスが生成される度にインクリメントされ、リファレンスが除去される度にデクリメントされるリファレンスカウントは、ゼロのリファレンスカウントを有するデータセクションが削除のためにマークされるようにして、それぞれのデータセクションに対して続けられる請求項１記載の方法。
【請求項３】
前記削除のためにマークされたデータセクションは、スペースが必要とされるときに削除され、削除されるまで再アクセスすることができる請求項１又は請求項２記載の方法。
【請求項４】
それぞれのデータセクションは対応ファイル名の下で受信され、前記格納手段に格納された前記信号の同じデータセクションの前の又はその後のバージョンの間を識別するために、受信ファイル名が前記受信器内で変更される先行請求項のいずれか一項に記載の方法。
【請求項５】
前記格納手段に格納されたデータセクションの後のバージョンがある場合、もはやリファレンスされないときに、同じデータセクションの前のバージョンが直ちに削除される請求項４記載の方法。
【請求項６】
前記格納手段は、リファレンスされる前記データセクションを確認し、その後、任意の順序において、前記格納手段の一部において共にそれらを再配置することによりこれらのリファレンスデータをコンパクト化し、及び移動セルに関連するポインタの値を更新することにより、まとめられる先行請求項のいずれか一項に記載の方法。
【請求項７】
それぞれのデータセクションは、それに属する対応ハンドルを有し、データセクションに対するすべてのリファレンスが前記ハンドルを介してなされ、前記ハンドルは少なくとも、前記対応データセクションに対するポインタと、前記ハンドルを介して前記データセクションに対して多くのリファレンスをカウントするリファレンスカウンタとを含む請求項６記載の方法。
【請求項８】
周期的に繰り返す複数のデータセクションを含む信号を受信し、前記信号に含まれるデータセクションをキャッシングする格納手段を含む受信器におけるキャッシュ管理方法であって、データセクションのアクセスは、もはやアクセスされないときに除去される対応リファレンスを生成する結果となり、リファレンスされる前記データセクションが確認され、その後、任意の順序において、前記リファレンスデータが前記格納手段の一部において共にそれらを再配置することによりコンパクト化され、それに応じて移動セルに関連するポインタの値が更新される方法。
【請求項９】
それぞれのデータセクションは、それに属する対応ハンドルを有し、データセクションに対するすべてのリファレンスは、前記ハンドルを介してなされる請求項８記載の方法。
【請求項１０】
前記ハンドルは少なくとも、前記対応データセクションに対するポインタと、前記ハンドルを介して前記データセクションに対するリファレンスの数をカウントするリファレンスカウンタとを含む請求項９記載の方法。
【請求項１１】
リファレンスされる前記データセクションは、それぞれのハンドルのリファレンスカウンタを参照することにより確認される請求項１０記載の方法。
【請求項１２】
前記受信器が放送受信器であり、前記受信データがDSM-CC（Digital Storage Media- Command and Control）規格モジュールを含む先行請求項のいずれか一項記載の方法。
【請求項１３】
周期的に繰り返す複数のデータセクションを含む信号を受信し、前記信号に含まれるデータセクションをキャッシングする格納手段を含む受信装置であって、データセクションのアクセスは、もはやアクセスされないときに除去される対応リファレンスを生成する結果となり、データセクションがそれに属するリファレンスを有しないならば、前記非リファレンスデータセクションが削除のためにマークされる装置。
【請求項１４】
前記受信装置は、リファレンスが生成される度にインクリメントされ、リファレンスが除去される度にデクリメントされ、ゼロのリファレンスカウントを有するデータセクションが削除のためにマークされるような、リファレンスカウントをそれぞれのデータセクションに続ける手段を有する請求項１３記載の装置。
【請求項１５】
それぞれのデータセクションは対応ファイル名の下で受信され、前記格納手段に格納された前記信号の同じデータセクションの前の又はその後のバージョンの間を識別するために、受信ファイル名が前記受信器内で変更される請求項１３又は請求項１４記載の装置。
【請求項１６】
前記格納手段に格納されたデータセクションの後のバージョンがある場合、もはやリファレンスされないときに、同じデータセクションの前のバージョンが直ちに削除される請求項１５記載の装置。
【請求項１７】
前記格納手段は、リファレンスされる前記データセクションを確認し、その後、任意の順序において、前記格納手段の一部においてそれらを再配置することによりこれらのリファレンスデータをコンパクト化し、及び移動セルに関連するポインタの値を更新することにより、まとめられる請求項１３又は請求項１４記載の装置。
【請求項１８】
周期的に繰り返す複数のデータセクションを含む信号を受信し、前記信号に含まれるデータセクションをキャッシングする格納手段を含む受信装置であって、データセクションのアクセスは、もはやアクセスされないときに除去される対応リファレンスを生成する結果となり、リファレンスされる前記データセクションが確認され、その後、任意の順序において、前記リファレンスデータが前記格納手段の一部において共にそれらを再配置することによりコンパクト化され、それに応じて移動セルに関連するポインタの値が更新される装置。
【請求項１９】
それぞれのデータセクションは、それに属する対応ハンドルを有し、データセクションに対するすべてのリファレンスは、前記ハンドルを介してなされる請求項１８記載の装置。
【請求項２０】
前記ハンドルは少なくとも、前記対応データセクションに対するポインタと、前記ハンドルを介して前記データセクションに対するリファレンスの数をカウントするリファレンスカウンタとを含む請求項１９記載の装置。
【請求項２１】
前記受信装置が放送受信器であり、前記受信信号がDSM-CC（Digital Storage Media- Command and Control）規格モジュールを含むように配置された請求項１３から請求項２０のいずれか一項記載の装置。
【請求項２２】
前記受信装置が放送受信器であり、前記受信信号がDSM-CC（Digital Storage Media- Command and Control）規格モジュールを含む請求項８記載の方法。
【請求項２３】
前記受信装置が放送受信器であり、前記受信信号がDSM-CC（Digital Storage Media- Command and Control）規格モジュールを含む請求項１８記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信システムに関し、特に、周期的に繰り返す複数のモジュールを含む多重信号を使用する通信システムに関する。
【背景技術】
【０００２】
テレ−バンキング（tele-banking）、テレ−ショッピング（tele-shopping）又は電子新聞のような対話式ディジタルテレビジョンアプリケーションは、通常、対応するデータセクションがトランスポートストリームにおいて周期的に繰り返される形態のカルーセルで放送される。
【０００３】
DSM-CC（Digital Storage Media-Command and Control）オブジェクトカルーセル（object carousels）は、対話式ディジタルＴＶで使用されるそのようなタイプの放送ファイルシステムである。これらは、英国ディジタルテレストリアルグループガイドライン（UK Digital Terrestrial Group guidelines）及びDVBマルチメディアホームプラットホーム（DVB Multimedia Home Platform(MHP)）を含むいくつかの規格において、コンテンツの配信システムとして規定されている。DSM-CCオブジェクトカルーセルは、それぞれが、いくつかの小さいファイル（最大モジュールサイズが６４キロバイトの場合）又は単一の大きいファイル（モジュールはいずれのサイズでも良い）のような大きなディレクトリ構造の一部を含む多くの「モジュール」からなる。これらのモジュールは、その後ディジタルＴＶ信号と共に放送される。その際、いくつかのモジュールは、できる限り、アクセスする時期を改善するために繰り返される。一度すべてのモジュールが放送されると、放送者は始めに戻り、再びモジュールを放送し始める。このプロセスは、テレテキストページが放送される方法に良く似ており、基本ユニットとしてDSM-CCモジュールが個々のテレテキストページに置き換わる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
DSM-CCを使用するディジタルＴＶプラットフォームは、放送されるべき要求されたモジュールの順番を待たなければならないという原因となる、テレテキストのようなシステムで遭遇するモジュールにアクセスする際の長い遅延を回避するために、通常少なくともいくつかのDSM-CCモジュールをキャッシュする。このキャッシュはかなり小さくても良く、それゆえキャッシュの効率的な管理が重要である。DVB MHPプラットフォームで、DSM-CCを用いるアプリケーション放送はオブジェクトカルーセルにアクセスすることができ、それからファイルをロードすることができるので、キャッシュ管理に対する別のレベルの複雑さが加わる。
【０００５】
DSM-CCキャッシュは、実際には、他のすべてのものから独立して、小さな部分のメモリのように動作する。オブジェクトは、そのメモリに生成され（この場合においてロードされたDSM-CCモジュール）、それらがもはや必要とされなくなったときに、ある後の時点で空けられなければならない。プラットフォームは、もしまだモジュールが使用されるならば、モジュールを再ロードする際の長い遅延を回避するためにいつモジュールが空けられ得るかを決定しなければならない。
【０００６】
メモリを管理するときの別の長年の問題は、フラグメンテーションの問題である。オブジェクトがメモリスペースで生成し、消失するので、利用できるフリースペースが断片化される。この場合、メモリのまだアクティブな部分がフリースペースの領域間に存在する。これは、大きなブロックのメモリを割り当てることを不可能とし、DSM-CCモジュールの潜在的サイズ（potential size）を与える重要な問題となり得る。
【課題を解決するための手段】
【０００７】
本発明は、添付した請求の範囲で規定されたリファレンスがなされるべきDSM-CC及び同じくキャッシュの管理方法及び装置を提供する。その開示は参照によりここに含める。
【０００８】
小さく独立した部分のメモリとしてキャッシュを考えることにより、キャッシュを管理し、上記問題を解決することに、既存のガーベッジコレクションアルゴリズムを適用することができるようになる。ガーベッジコレクションは、使用後にユーザがメモリを明確に空ける必要がない、いくつかのコンピュータシステム及びプログラム言語（特に、Ｊａｖａ(R)）でメモリを管理する方法である。その代わりに、システムは、メモリが使用されておらず、自動的にメモリを空けることを検出する。ガーベッジコレクションの多くの異なる方法がある。そのいくつかはあるマシンやアプリケーションに対して他よりも適用可能である。
【０００９】
DSM-CCキャッシュの特徴のため、特に、モジュールに対するリファレンスのみがDSM-CCキャッシュの外側からである事実のため、ガーベッジコレクションの高効率のリファレンスカウントのインプリメンテーションがキャッシュを管理するために使用され得る。このインプリメンテーションは、ガーベッジコレクタによりハンドルされたメモリスペースにおけるオブジェクトに対して存在するリファレンスの数を監視することを含む。オブジェクトは、リファレンス数がゼロならば、安全に再利用され得る。単なるリファレンスカウントアルゴリズムは、ガーベッジコレクションにおいて通常使用され得ない。なぜならば、それ自身に関する（直接的に又は間接的に）いかなるデータ構造も常に少なくとも一つのリファレンスカウントを有してしまい、それゆえ決して再利用されないであろう。しかしながら、モジュールが別のモジュールに対してリファレンスを有することがなく、モジュールに対するすべてのリファレンスがキャッシュの外側からであるので、このタイプの構造は、DSM-CCキャッシュにおいて決して起こらないであろう。
【００１０】
アルゴリズムの一部としてリファレンスカウントを使用し得る別のタイプのガーベッジコレクタは、キャッシュにおけるオブジェクトに対する直接リファレンスの代わりに、アプリケーションが間接のレベルを与える「ハンドル」に対するリファレンスを有する、コンパクトガーベッジコレクタである。それからこれは、すべてのフリースペースを一つのブロックに集めるために、ガーベッジコレクタにメモリにデータを移動させ、可能である別の方法で、それによりさらなるオブジェクトを生成させる。これは、フラグメンテーションの問題を解決するために特に好適である。
【発明を実施するための最良の形態】
【００１１】
本発明の実施の形態は、添付した図面に関して、例という目的でのみここで記載される。
【００１２】
図１のブロック図を参照して、ディジタルテレビジョン信号のような信号１３を送信する送信器１０が与えられる。この信号は、周期的に繰り返される多くのモジュールを含む。「セットトップボックス」と通常呼ばれるタイプのような受信器１２がその信号を受信する。受信器１２は、信号からファイル１１及びモジュールを抽出する手段と、キャッシュメモリ１４とからなる。キャッシュメモリ１４は、必要なときに迅速にアクセスされ得るように、いくつかのモジュールを格納するために使用される。抽出器１１は、規則正しい形態でキャッシュメモリにファイルを加え、キャッシュメモリからファイルを削除する管理手段を含む。
【００１３】
図２は、操作の４つの異なるステージでのセットトップボックスを示す。セットトップボックスは、モジュール及びキャッシュメモリ２１を処理し、６つのモジュールを格納するために十分に大きい処理ユニット２０を含む。DSM-CCキャッシュの場合において、リファレンスは、ファイルを開く動作（一つ又はそれ以上のDSM-CCモジュールにマッピングする）により生成され、ファイルを閉じることにより除去される。このため、リファレンスカウントは、ファイルが開かれたときにファイルに対してリファレンスカウントをインクリメントし、ファイルが閉じられたときにそれをデクリメントすることにより、容易に追跡され得る。リファレンスカウントがゼロのとき、モジュールは削除可能であるとしてマークされ得る。このモジュールは、その後適当な時間でガーベッジコレクタにより削除される。その間に、万一そのモジュールからファイルを開く別の要求が生成されても、モジュールは、キャッシュからまだ使用可能である。
【００１４】
図２ａは、４つのモジュールＭａ，Ｍｂ，Ｍｃ，Ｍｄで埋められた、最初の４つのセルのキャッシュ２１を有する。これらのモジュールＭａ，Ｍｂ，Ｍｃ，Ｍｄのそれぞれは、処理ユニット２０によりリファレンスされる。したがって、それらのリファレンスカウントは１である。最後の２つのセルのキャッシュは空であり、Ｅと示される。
【００１５】
図２ｂの例において、処理ユニット１０は、キャッシュ１１における第２及び第３のモジュールＭｂ，Ｍｃのリファレンシングを停止する。これは、メモリの対応セルに対するリファレンスカウントがゼロに下がることを意味する。したがって、これらのファイルは、削除Ｄとマークされ、適当な時間にガーベッジコレクタにより削除される。これは、すぐに起こり得るか、あるいはガーベッジコレクションサイクルのしばらく後のステージで起こり得る。それらがただちに削除された場合に、万一それらのモジュールの一つからファイルに対して要求が発せられても、それらは使用可能である。
【００１６】
図２ｃで、さらなるリファレンスが、キャッシュの第２のセルにおけるモジュールＭｂになされる。したがって、このキャッシュセルに対するリファレンスカウントがインクリメントされ、このモジュールＭはもはや削除のためにマークされない。２つの新しいモジュールＭｅ及びＭｆは、キャッシュの次の使用可能なセル、すなわち第５及び第６のセルに取得され格納される。このポイントでキャッシュ２１がいっぱいになる。
【００１７】
図２ｄにおいて、別の新しいモジュールＭｇがキャッシュされる。キャッシュ２１が現在いっぱいであるので、システムは削除Ｄのためにマークされたあらゆるファイルを探す。この場合、第２のセルのゼロのリファレンスカウントのために、第２のセルがそういうものとしてマークされ、それゆえ内部にあるモジュールＭｂが削除される。これは必要なスペースを空け、したがって図２ｅに示すように新しいモジュールＭｇがここに保存され得る。
【００１８】
DSM-CCの一つの特色は、ファイルのコンテンツが動的に更新され、カルーセルに挿入され得ることである。それぞれのモジュールは、モジュールが変わったかどうかをDSM-CCがチェックするために使用することができる、それに関連するバージョン番号を有する。現在開いているファイルを含むモジュールの更新されたバージョンをキャッシュが検出する場合において、キャッシュは古いモジュールを簡単に置き換えることができない。これは、データ保全性の多くの潜在的な問題も引き起こす。しかしながら、できるだけ早くモジュールの古いバージョンを空けるための効率的なキャッシュ管理の関心がある。
【００１９】
リファレンスカウントがゼロに達したときにモジュールの後のバージョンがキャッシュに存在する場合、そのモジュールからのファイルに対するいかなる要求も、モジュールの最新のバージョンからのファイルに対するリファレンスに戻されるように、そのモジュールはただちにキャッシュから削除されるであろう。これは、より効率的に使用され得るキャッシュにおいてモジュールの古いバージョンがスペースを使用しないことを確保し、また、最新のバージョンのみがアプリケーションからのいかなる新しい要求にアクセス可能であることを確保する。これは、図３ａ〜図３ｅに示される。
【００２０】
図３ａは、図２と同じキャッシュ２１及びセットトップボックス２０を示す。最初の４つのセルがモジュールＭａ１，Ｍｂ１，Ｍｃ１，Ｍｄ１で埋められるとき、それぞれのモジュールがリファレンスされる。添え字１は、これらがキャッシュにおいてそれぞれのモジュールの第１のバージョンであることを知らせる。その終わりの２つのセルは空である。
【００２１】
図３ｂで、モジュールＭｂ及びＭｃの後のバージョンが取得される（Ｍｂ２，Ｍｃ２）。しかしながら、より早いバージョンＭｃ１，Ｍｃ１は、まだリファレンスされ、そのため削除され得ない。これらの後のバージョンＭｂ２，Ｍｃ２は、したがって図３ｃに示すように２つの空のキャッシュセルに格納される。
【００２２】
図３ｄで、モジュールＭｃ１は、もはやリファレンスされず、そのためリファレンスカウントがゼロに下がる。もはやリファレンスされないときにモジュールが削除のためにマークされ、必要なときに削除されるような、キャッシュに格納された最新バージョンのモジュールに対する場合と異なり、キャッシュ２１により後のバージョンがあるならば、モジュールのより早いバージョンがただちに削除される。このように、Ｍｃに対するいかなる次のリファレンスも、最新のバージョンＭｃ２に向けられる。図３ｅにおいて、モジュールＭｂ１は、もはやリファレンスされず、そのためただちに削除される。
【００２３】
上記の方法は、キャッシュから冗長なファイルを片付ける際に効果的である。しかしながら、この方法はまた、キャッシュをばらばらにする傾向があり、それゆえそうするためにトータルのフリースペースが十分にあるとしても、十分な大きさのホール（キャッシュの連続したフリーブロック）がないために、潜在的に大きなモジュールをキャッシュすることができない状態にある。
【００２４】
図４は、キャッシュをコンパクトにし、フラグメンテーションの問題を解決する好適なガーベッジコレクション方法を表す。この方法における主な違いは、すべてのモジュールがその独自のハンドルを有することである。ハンドルは、通常モジュールがあるヒープにおけるアドレス及びそのモジュールのリファレンスカウントに対するポインタを有する。モジュールに対するいかなるリファレンスも、このハンドルを介してなされ、それゆえヒープにおけるオブジェクトの位置が変わったときに、したがってハンドルのみが変えられる必要がある。モジュールに対するすべての他のリファレンスは、これらが対応ハンドルに関連するので影響を受けない。
【００２５】
図４ａを参照して、異なるサイズの５つのモジュールが現在Ｍ１−Ｍ５に格納されている１４セルのキャッシュメモリ４０がある。Ｈ１がＭ１に対応し、Ｈ２がＭ２に対応するなどのそれぞれのモジュールＭ１−Ｍ５のハンドルを含むハンドルテーブル４１もある。それぞれのハンドルにおける第２の数字はポインタアドレス（それぞれのポインタはまたキャッシュ４０に対して矢印として示される）であり、括弧で囲った最後の番号はそのリファレンスカウント（それぞれのリファレンスはハンドルに対する矢印として示される）である。
【００２６】
この例において、全部で７つのセルが空き、冗長モジュールＭ４を含む一つのセルがあるけれども、フリーキャッシュ４０は、モジュールの削除のために、３つのセルのサイズが収容され得ないポイントにばらばらにされる。
【００２７】
この方法は、まず初期及び始動からハンドルテーブル４１を掃引することにより動作する。この掃引ステージは、それぞれのハンドルのリファレンスカウントをチェックする。ゼロのカウントを持つハンドルはテーブルから除去される。これは、テーブル４１の終わりに達するまで続けられる。
【００２８】
その後、コンパクトにするステージが始まる。まず、ハンドルのないすべてのステージが削除される。その後、すべてのハンドルに対して、それぞれの対応モジュールが、キャッシュにおいて最も低いフリー領域に動かされる。ハンドルデータは、その後この新しい場所に反映するように更新される。これは、再びハンドルテーブル４１の終わりに達するまで行われる。
【００２９】
図４ｂは、このコンパクト化が行われた後の状況を示す。ハンドルＨ４がリファレンスされていなかったので、その関連するモジュールＭ４と共に削除された。モジュールの残りは、その後低い領域に再配置された。すなわち、０にＭ１、２にＭ２、４にＭ３、及び５にＭ５である。したがって、ハンドルにおけるポインタが更新された。３つのセルのサイズ（又はこのサイズの２倍でさえ）が無理なく収容されたことが明らかである。
【００３０】
従来既知である他のコンパクトガーベッジコレクション方法もまた、それらが以下のステップを行う限りにおいてこの方法を行うために好適であるだろう。
・リファレンスカウントをチェックし、アクティブデータ構造を確認する；
・再配置セルによりデータ構造をコンパクト化する；
・移動セルに関するポインタの値を更新する。
【００３１】
他の好適な方法は、ツゥーフィンガ（Two-Finger）アルゴリズム、フォーワーディングアドレス（Forwarding address）アルゴリズム及びテーブルベースド（Table based）方法を含む。これらの詳細は、ジョーンズ（Jones）及びリンス（Lins）によるISBN 0471941484の「ガーベッジコレクション」の第５章で見られる。
【図面の簡単な説明】
【００３２】
【図１】図１は、本発明を例示する装置の概略ブロック図である。
【図２ａ】図２ａは、操作の５つのステージにおける本発明の一実施の形態の例を表すブロック図である。
【図２ｂ】図２ｂは、操作の５つのステージにおける本発明の一実施の形態の例を表すブロック図である。
【図２ｃ】図２ｃは、操作の５つのステージにおける本発明の一実施の形態の例を表すブロック図である。
【図２ｄ】図２ｄは、操作の５つのステージにおける本発明の一実施の形態の例を表すブロック図である。
【図２ｅ】図２ｅは、操作の５つのステージにおける本発明の一実施の形態の例を表すブロック図である。
【図３ａ】図３ａは、操作の５つのステージにおける本発明の別の実施の形態の例を表すブロック図である。
【図３ｂ】図３ｂは、操作の５つのステージにおける本発明の別の実施の形態の例を表すブロック図である。
【図３ｃ】図３ｃは、操作の５つのステージにおける本発明の別の実施の形態の例を表すブロック図である。
【図３ｄ】図３ｄは、操作の５つのステージにおける本発明の別の実施の形態の例を表すブロック図である。
【図３ｅ】図３ｅは、操作の５つのステージにおける本発明の別の実施の形態の例を表すブロック図である。
【図４ａ】図４ａは、操作の２つのステージにおける本発明のさらに別の実施の形態の例を表すブロック図である。
【図４ｂ】図４ｂは、操作の２つのステージにおける本発明のさらに別の実施の形態の例を表すブロック図である。
【図１】
2004534321.tif 000003
【国際公開パンフレット】
2004534321.tif 000004
2004534321.tif 000005
2004534321.tif 000006
2004534321.tif 000007
2004534321.tif 000008
2004534321.tif 000009
2004534321.tif 000010
2004534321.tif 000011
2004534321.tif 000012
2004534321.tif 000013
2004534321.tif 000014
2004534321.tif 000015
2004534321.tif 000016
2004534321.tif 000017
2004534321.tif 000018
2004534321.tif 000019
2004534321.tif 000020
2004534321.tif 000021
2004534321.tif 000022
2004534321.tif 000023
【国際調査報告】
2004534321.tif 000024
2004534321.tif 000025
2004534321.tif 000026
2004534321.tif 000027