[インデックス 10241] ファイルの概要
このコミットは、Go言語の encoding/gob
パッケージにおける型登録のバグ修正に関するものです。具体的には、同じ型が複数回登録された際に発生する不整合を解消し、gob
エンコーディング/デコーディングの堅牢性を向上させています。RegisterName
関数における型の比較ロジックが修正され、ユーザーが指定した型(user type)に基づいて重複チェックが行われるようになりました。
コミット
commit 88cf76a9b37992c65b916060ca44c87f3a9bde5e
Author: Rob Pike <r@golang.org>
Date: Thu Nov 3 18:05:14 2011 -0700
gob: fix bug when registering the same type multiple times
Need to compare user type, not base type.
R=golang-dev, dsymonds, r
CC=golang-dev
https://golang.org/cl/5340041
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/88cf76a9b37992c65b916060ca44c87f3a9bde5e
元コミット内容
このコミットは、encoding/gob
パッケージにおいて、同じ型を複数回登録する際のバグを修正することを目的としています。以前の実装では、型の比較に「基底型(base type)」が使用されていましたが、これにより意図しない重複登録の検出漏れや誤検出が発生する可能性がありました。修正の核心は、型の比較を「ユーザー型(user type)」に基づいて行うように変更することです。これにより、より正確な型の一意性チェックが可能となり、gob
の型登録メカニズムがより堅牢になります。
変更の背景
encoding/gob
パッケージは、Goのデータ構造をシリアライズおよびデシリアライズするためのGo固有のエンコーディング形式を提供します。gob
がインターフェース値や特定のマップ型を正しくエンコード/デコードするためには、具体的な型を gob.Register()
または gob.RegisterName()
を使って登録する必要があります。この登録プロセスは、型名と reflect.Type
の間に一対一のマッピングを作成し、デコード時に正しい具体的な型を再構築できるようにします。
しかし、以前の実装では、RegisterName
関数内で型の重複チェックを行う際に、reflect.TypeOf(value).base
を使用していました。ここでいう base
型とは、ポインタやスライスなどの間接参照を剥がした、その型の最も基本的な要素型を指します。例えば、*MyStruct
と MyStruct
は異なる型ですが、その base
型はどちらも MyStruct
になります。
この base
型での比較が問題でした。ユーザーが *MyStruct
と MyStruct
を異なる名前で登録しようとした場合、base
型が同じであるため、gob
はこれらを同じ型として扱い、重複登録エラーを引き起こす可能性がありました。逆に、異なるユーザー型がたまたま同じ base
型を持つ場合(例えば、異なるパッケージで定義された同じ構造体名を持つ型など)、それらが異なる型であるにもかかわらず、base
型の比較では区別できず、誤って同じ型として扱われる可能性がありました。
このバグは、特に同じ型を複数回登録することが許容されるべきシナリオ(例えば、テストコードで同じ型を複数回登録して動作を確認する場合など)で問題を引き起こしていました。コミットメッセージにある「Need to compare user type, not base type.」という記述は、この問題の核心を突いています。つまり、ユーザーが登録しようとしている「そのままの型」(user type)を比較することで、より正確な重複チェックを実現する必要があったのです。
前提知識の解説
encoding/gob
パッケージ
encoding/gob
は、Go言語のデータ構造をバイナリ形式でエンコード(シリアライズ)およびデコード(デシリアライズ)するためのパッケージです。Goプログラム間でデータを効率的にやり取りするために設計されており、特にRPC(Remote Procedure Call)などで利用されます。
gob
の主な特徴は以下の通りです。
- 自己記述的:
gob
ストリームは、データだけでなく、そのデータの型情報も含まれています。これにより、受信側は事前に型を知らなくてもデータをデコードできます。 - 型登録: インターフェース型を介して具体的な型をエンコード/デコードする場合や、
map[string]interface{}
のように値の型が動的に変わる可能性がある場合、gob.Register()
またはgob.RegisterName()
を使用して、その具体的な型をgob
に登録する必要があります。これにより、gob
はデコード時に正しい具体的な型をインスタンス化できます。 - Go固有:
gob
はGoの型システムに密接に結びついており、Goプログラム間での通信に最適化されています。他の言語との相互運用性には適していません。
reflect
パッケージ
Go言語の reflect
パッケージは、実行時にプログラムの構造を検査・操作するための機能を提供します。これにより、型情報(reflect.Type
)や値情報(reflect.Value
)を動的に取得し、操作することが可能になります。
reflect.Type
: Goの型のメタデータを表します。型の名前、カテゴリ(構造体、ポインタ、スライスなど)、フィールド情報、メソッド情報などを取得できます。reflect.TypeOf(i interface{}) reflect.Type
: 任意のGoの値i
を引数に取り、その値の動的な型を表すreflect.Type
を返します。reflect.Value
: Goの値そのものを表します。値の取得、設定、メソッドの呼び出しなどを行うことができます。
gob
における「ユーザー型(user type)」と「基底型(base type)」
encoding/gob
パッケージの内部では、型の扱いにおいて「ユーザー型」と「基底型」という概念が区別されることがあります。
- ユーザー型 (user type):
gob.Register()
やgob.RegisterName()
に渡されるinterface{}
の値からreflect.TypeOf()
で取得される、ユーザーが意図したそのままの型を指します。例えば、*MyStruct
を登録しようとした場合、ユーザー型は*MyStruct
となります。 - 基底型 (base type): ポインタ、スライス、配列などの間接参照を再帰的に辿っていった結果、最終的に到達する最も基本的な要素型を指します。例えば、
**[]*MyStruct
の基底型はMyStruct
となります。gob
の内部処理では、エンコード/デコードの効率化や、型の構造をフラット化するために基底型が利用されることがあります。
このコミットのバグは、RegisterName
関数が重複チェックを行う際に、ユーザーが登録しようとした「ユーザー型」ではなく、その「基底型」を比較していたことに起因します。これにより、*MyStruct
と MyStruct
のように、ユーザー型としては異なるが基底型が同じである場合に、誤った重複判定が行われていました。
技術的詳細
このコミットの技術的な核心は、src/pkg/encoding/gob/type.go
内の RegisterName
関数の修正にあります。
RegisterName
関数は、特定の名前とGoの型を関連付けて gob
の内部レジストリに登録するために使用されます。この関数は、同じ名前で異なる型が登録されたり、同じ型に異なる名前が登録されたりするのを防ぐための重複チェックロジックを含んでいます。
修正前のコードでは、この重複チェックにおいて userType(reflect.TypeOf(value)).base
を使用していました。
// 修正前
base := userType(reflect.TypeOf(value)).base
// Check for incompatible duplicates.
if t, ok := nameToConcreteType[name]; ok && t != base { // ここでbaseと比較
panic("gob: registering duplicate types for " + name)
}
if n, ok := concreteTypeToName[base]; ok && n != name { // ここでもbaseと比較
panic("gob: registering duplicate names for " + base.String())
}
// ...
concreteTypeToName[base] = name // ここでもbaseを使用
ここで userType
は、reflect.Type
から gob
内部で利用する型情報を抽出するヘルパー関数です。その結果として得られる構造体には user
フィールド(元のユーザー型)と base
フィールド(基底型)が含まれています。
問題は、nameToConcreteType
マップが名前と具体的な型(reflect.Type
)を関連付け、concreteTypeToName
マップが基底型と名前を関連付けていた点です。
-
nameToConcreteType[name]
のチェック:nameToConcreteType
に既にname
が登録されており、その登録されている型t
が、今回登録しようとしている値のbase
型と異なる場合にパニックを起こしていました。しかし、nameToConcreteType
にはユーザー型が格納されているため、base
型と比較するのは不適切でした。t
はreflect.TypeOf(value)
の結果(ユーザー型)と一致すべきです。
-
concreteTypeToName[base]
のチェック:concreteTypeToName
に既にbase
型が登録されており、その登録されている名前n
が、今回登録しようとしている名前name
と異なる場合にパニックを起こしていました。これは、同じ基底型に対して異なる名前が登録されることを防ぐためのチェックですが、gob
の設計思想としては、同じユーザー型に対しては同じ名前が使われるべきであり、異なるユーザー型であれば基底型が同じでも異なる名前で登録できるべきです。
このコミットでは、これらの比較ロジックを ut.user
(ユーザー型) に基づいて行うように変更しました。
// 修正後
ut := userType(reflect.TypeOf(value)) // userTypeの結果をutに格納
// Check for incompatible duplicates. The name must refer to the
// same user type, and vice versa.
if t, ok := nameToConcreteType[name]; ok && t != ut.user { // ut.userと比較
panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user))
}
if n, ok := concreteTypeToName[ut.base]; ok && n != name { // ut.baseと比較 (ここは変わらず)
panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name))
}
// Store the name and type provided by the user....
nameToConcreteType[name] = reflect.TypeOf(value) // ここは変わらず
// but the flattened type in the type table, since that's what decode needs.
concreteTypeToName[ut.base] = name // ut.baseを使用
変更点:
userType(reflect.TypeOf(value))
の結果をut
という変数に格納し、ut.user
とut.base
を明示的に使用するようにしました。nameToConcreteType[name]
の重複チェックにおいて、t != base
ではなくt != ut.user
と比較するように変更しました。これにより、登録されている名前が指す型が、今回登録しようとしている「ユーザー型」と完全に一致するかどうかを厳密にチェックします。concreteTypeToName[ut.base]
の重複チェックは、引き続きut.base
を使用していますが、パニックメッセージがより詳細になり、ut.user
の情報も含まれるようになりました。これは、同じ基底型に対して異なる名前が登録された場合のチェックであり、gob
の内部的な整合性を保つために必要です。concreteTypeToName
マップへの格納もut.base
を使用しています。これは、デコード時に必要な「フラット化された型」を型テーブルに格納するためです。
この修正により、gob.RegisterName
は、ユーザーが意図した通りの型(ポインタの有無なども含めて)に基づいて重複を正確に判定できるようになり、gob
の型登録メカニズムがより堅牢になりました。テストケース TestRegistration
が追加され、同じ型を複数回登録しても問題ないことが確認されています。
コアとなるコードの変更箇所
diff --git a/src/pkg/encoding/gob/type.go b/src/pkg/encoding/gob/type.go
index c3bc7c7ffc..3b862e690e 100644
--- a/src/pkg/encoding/gob/type.go
+++ b/src/pkg/encoding/gob/type.go
@@ -703,18 +703,19 @@ func RegisterName(name string, value interface{}) {
// reserved for nil
panic("attempt to register empty name")
}
- base := userType(reflect.TypeOf(value)).base
- // Check for incompatible duplicates.
- if t, ok := nameToConcreteType[name]; ok && t != base {
- panic("gob: registering duplicate types for " + name)
+ ut := userType(reflect.TypeOf(value))
+ // Check for incompatible duplicates. The name must refer to the
+ // same user type, and vice versa.
+ if t, ok := nameToConcreteType[name]; ok && t != ut.user {
+ panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user))
}
- if n, ok := concreteTypeToName[base]; ok && n != name {
- panic("gob: registering duplicate names for " + base.String())
+ if n, ok := concreteTypeToName[ut.base]; ok && n != name {
+ panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name))
}
// Store the name and type provided by the user....
nameToConcreteType[name] = reflect.TypeOf(value)
// but the flattened type in the type table, since that's what decode needs.
- concreteTypeToName[base] = name
+ concreteTypeToName[ut.base] = name
}
// Register records a type, identified by a value for that type, under its
diff --git a/src/pkg/encoding/gob/type_test.go b/src/pkg/encoding/gob/type_test.go
index a6ac9c4201..42bdb4cf7b 100644
--- a/src/pkg/encoding/gob/type_test.go
+++ b/src/pkg/encoding/gob/type_test.go
@@ -151,3 +151,11 @@ func TestStructType(t *testing.T) {
t.Errorf("struct printed as %q; expected %q", str, expected)
}
}
+
+// Should be OK to register the same type multiple times, as long as they're
+// at the same level of indirection.
+func TestRegistration(t *testing.T) {
+ type T struct{ a int }
+ Register(new(T))
+ Register(new(T))
+}
コアとなるコードの解説
src/pkg/encoding/gob/type.go
の変更
- 旧コード:
base := userType(reflect.TypeOf(value)).base // Check for incompatible duplicates. if t, ok := nameToConcreteType[name]; ok && t != base { panic("gob: registering duplicate types for " + name) } if n, ok := concreteTypeToName[base]; ok && n != name { panic("gob: registering duplicate names for " + base.String()) } // ... concreteTypeToName[base] = name
- 新コード:
ut := userType(reflect.TypeOf(value)) // Check for incompatible duplicates. The name must refer to the // same user type, and vice versa. if t, ok := nameToConcreteType[name]; ok && t != ut.user { panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user)) } if n, ok := concreteTypeToName[ut.base]; ok && n != name { panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name)) } // ... concreteTypeToName[ut.base] = name
この変更のポイントは、userType(reflect.TypeOf(value))
の結果を ut
という変数に格納し、その ut.user
フィールド(ユーザーが指定したそのままの型)と ut.base
フィールド(基底型)を適切に使い分けるようにした点です。
-
ut := userType(reflect.TypeOf(value))
:reflect.TypeOf(value)
は、RegisterName
に渡されたvalue
の動的な型(reflect.Type
)を取得します。userType
関数は、このreflect.Type
をgob
内部で扱いやすい形式に変換し、元のユーザー型 (ut.user
) とその基底型 (ut.base
) を抽出します。
-
if t, ok := nameToConcreteType[name]; ok && t != ut.user { ... }
:nameToConcreteType
マップは、登録された名前と、それに対応する具体的な型(reflect.Type
、つまりユーザー型)を保持しています。- この行では、もし既に
name
が登録されており、その登録されている型t
が、今回登録しようとしているut.user
(ユーザー型)と異なる場合、重複登録としてパニックを発生させます。 - 修正前は
t != base
と比較していたため、*MyStruct
とMyStruct
のようにユーザー型は異なるが基底型が同じである場合に、誤って重複と判定されていました。ut.user
と比較することで、ユーザーが意図した通りの型の一意性を正確にチェックできるようになりました。 - パニックメッセージも
fmt.Sprintf
を使用して、どの型が重複しているのかをより詳細に表示するように改善されています。
-
if n, ok := concreteTypeToName[ut.base]; ok && n != name { ... }
:concreteTypeToName
マップは、基底型と、それに対応する名前を保持しています。- この行では、もし既に
ut.base
(基底型)が登録されており、その登録されている名前n
が、今回登録しようとしているname
と異なる場合、パニックを発生させます。 - このチェックは、
gob
の内部的な整合性を保つために、同じ基底型に対して異なる名前が登録されることを防ぐものです。ここでの比較は引き続きut.base
で行われますが、パニックメッセージがより詳細になり、ut.user
の情報も含まれるようになりました。
-
concreteTypeToName[ut.base] = name
:concreteTypeToName
マップへの格納も、引き続きut.base
をキーとして使用しています。これは、gob
がデコード時に内部的に利用する「フラット化された型」のテーブルに名前を関連付けるためです。
src/pkg/encoding/gob/type_test.go
の変更
- 新しく追加されたテストケース:
// Should be OK to register the same type multiple times, as long as they're // at the same level of indirection. func TestRegistration(t *testing.T) { type T struct{ a int } Register(new(T)) Register(new(T)) }
- このテストは、
Register
関数(RegisterName
と同様に型登録を行う関数)に対して、同じ型T
を複数回登録してもパニックが発生しないことを確認しています。 - 修正前のコードでは、このようなシナリオで重複登録エラーが発生する可能性がありましたが、今回の修正により、同じ型であれば複数回登録しても問題なく動作するようになりました。これは、
gob
の型登録が冪等性を持つべきであるという設計意図に合致しています。
これらの変更により、gob
の型登録メカニズムはより正確で堅牢になり、開発者が意図しない重複登録エラーに遭遇する可能性が低減されました。
関連リンク
- Go言語
encoding/gob
パッケージ公式ドキュメント: https://pkg.go.dev/encoding/gob - Go言語
reflect
パッケージ公式ドキュメント: https://pkg.go.dev/reflect
参考にした情報源リンク
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGd-REijTv3MNene78umiT2CAauzoLQewmg38TejTEKvSIaXknCSy0cRl7kPEY9rmzabXy_NC-bzBFlSCIBvdyer25dmWfdASDZedGaipzcv69g-VbbSqMtPCTi9posSw-XeeQlFNsd2A4Wk97kJEhxhrOYHrBpG-JhiwFu4MqvUS0cNZTdoRx1KqpzR2kTrkY=
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFr36mV0tTHG6hfiQIWjgUEDIOmg6Ibs7UZZ7Uz8-4k7p4kaxInDk3GTGJPsL35xpR6C6dazU55SJ-wR5FRt2cfvNKVtF6eDKdZDGX1Au_uaiwbMLr8PiMXaFxsxDtxivVgj-DDQ1VfVQtLVy2wqMJThnopPLV8uwNCObFKHwOAyR2p_cvdVywhl4ynb9ijBgW0bofcTZvL4yo=
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEUWUVRb6hk-m5Z9m5Uk4ClKdJRtHdc7ea6P3hRsCfb17NVFm3jnm3n-J1LErEiUyYJoNEpxFFLBuOuuHUpnqul7brv9ezZu7apEP2HCNBRMxxdptxIwcEZeae4oa_beD-MrcoIIEmUTjD4drrItv_7mTw4CkrUfazJ0ahiNYu4P-OQJMx9hQjb1ySQy0uGgLwnU23Dokjw2H6QEXUOGciRn_TkJS7QuhNuhaxp_cccQWMwO_EyjXtfyM635QZ
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHy280jOlrecV2kD2ocTjUvKpxHlNjHikDlow95nFrqWWeMCJiV8ERsmea9l9m4ELihelXeFU-bW7012nclvroI7zDB61_gRgvJcfeARUqsCUrCbJPZnRC5XJOd8hsbOdzzQ3akk1azEm_SKx41bQ==
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG2iSnqrDIH68hhCop9vLS5bXft8B350nSfxgLrmsnyVQ-kh0BFHhqeFTKzCySgSG1l_IgrXir8S4oudgi9KddYdPb-GUA86h2h1ZWxfFJb6H0PhU-ypFifUBkTo-g3iehS9Is-7sSlXMtX6KYOX1Hp6Q8aeZ2ec5u7LRIn_Eonm9mMOMdqiU5uAiab_58kStV0HYQyPMY6kL8fQC0TdG6O3Bf-IdOplceLOd-1hNoTDZeTAujNZ07V8qwmxJAkboAPynh2F5FUu_sH
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGGCrTLWLPKm3WymsmSCfE-Tb7vQNrh-6qX9uhH7Mc2Ppf23ZiS5yzgfeI5l6WQ__ngCyfOF7uZSatYm0gAI00JIWGrmjhcxwVqvutD5P_Dn3ZwE-EOL-eR3nmTem_oC3u7Edj7P85k7ilX6r1RVo4mHy8aBR9KhHqcDd0PkMjabFh8xUqwsQvuS2SyC-bM3zYQY-FLgDMCLQ==
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEc0OOlOK53m8AXaoPwu1cj4ft9tmFk-9CAOigXchShO8IDbVkRuIxjX9dhCKeTKDK3qlBV209MSG4r0gCrfmO-jMY-QdOqa0_L4j0O3GCEVt8IOQwFA18YHc7eq9aszqKlX_0tOLw==
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE8pZUwCN9E_TnhbYrKFYr9XtqaJ-XLA4Wcaoius1Gn8esnIu-mwmpyHap8GonUKVG1hTn8WQ-rxYsRGOAO2FMSAGtnhn6B9HLnuCzGSNj8Zg9kVMizE27lDNfh_W0SetibDzbmpTnkdd0l5d5QuaTcxaZNsrGvKX18pJpxJ2k1YzsuTIjtc-5LHogsBnmMsEFKIi9hddE=
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGaCq7cuWm5FdZuHsOpGZMy6AAwxYM52IWZjel3WtZs4UbcSxgr_mgQN-7h9PYoqspZTR5AWCHSuvMusBmq4fITvxmvhy2eVVqfj85eLxBsR8BSOJsfCvd_81qIiGKAvOMZZyWT
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEPRL0ySLdmEeVccz2GkZHz00tA8Y9ieTq6NCnu7F5nKjz090DXCg9AH2xdvvF5GX3_PX9raMjs5ZyEw_bFelvY3bUrOshAwdOaN9wCt7LjZ3zcEGIXpjWdQPiqOM-hdOIvoA7qdKWUDLB5I102JHFLfE2_Huhthay-cT140Q==
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGeOhO175YcMY-M-W0e71C3c7KocUFW9ROcmwN9xkJsdbVlDcvdciwZkyEJlG7NNaq9lFLcGBGsWzGZrAV9Bnm2Rd43TB07sv7IUu7eFshb7vl-KTZR6FF-O6Y=
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGo45NOvGQc_tafgKW5DCGUPlK0GT2QUbEqVCCIQXz4b4bTms5HkBC_Jusgh2Q7gu8oLciIvt2VJdH1RwVRs09siNMyrM0MUuy4Y1msXoYtkpA8pqBaG_MG4lWchtvgB76waMkn9L9Oy1ptYERoTeJWPzZDNtqOGBvw3coIrI0rlqHZjP82SxF6nFG4mVGwdfkgwa2GNfe2wDA=
- https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGTdH-fZg5cwyKYGJTY1DFxjc_cU9cZpRi0_iJ0VcPdz1VsW6hWj92uKxTaOOvw3Dc7RagrAdPuPjPaiV-FtrBfCJsNoWeBs36Cs0WyYEcSJVNjp75xD8HG838nNSGt-gMFzhVQh-xpepDXjt2tfOiKm-SWbpA2uJsfyVul4ZHvSvC74KCdB6xHCgzdAL__hX7j1Xb9GOx6zCmuR1uk2o6tt1t7RMp_DtpTkiJua2yeStxjvPG8Da-_yyhI0o2i
- [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE4jAxK5u_AoL58r4FGE5MeJ-A9kzzgUlhLVza4AHl_CMv6tRAGckKYMTjXiIvoL1NB3VP6psB1iEeFmXtn1A5FbQRjsqaJglm5F10uVKOrN4zbV40j-VesT_Q-bi1NWL-ljcTqPOtl7SRLFuKqEr_r9QsMbkNZCapaVG9oaPyXbuN3MPTFzoVqs_VViUwwq9jB4fOfLL0=](https://vertexaisearch.cloud.google.google.com/grounding-api-redirect/AUZIYQE4jAxK5u_AoL58r4FGE5MeJ-A9kzzgUlLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzL