Tugas Pertemuan 11

Logo

Latihan 1

  • “Cabang A” = (50, 55, 60, 65, 70),

  • “Cabang B” = (40, 50, 60, 70, 80),

  • “Cabang C” = (30, 30, 35, 40, 45),

  • “Cabang D” = (70, 75, 80, 85, 90) )

Menghitung Rata - Rata, Median, Standar Deviasi

Rata - Rata

\[\bar{x} = \frac{\sum x_i}{n}\]

  • \(\bar{x}\)= Rata Rata

  • \({\sum x_i}\)= Jumlah Seluruh Nilai Data

  • \({n}\)= Jumlah Total Data

  • Cabang A \[\bar{x} = \frac{50+55+60+65+70}{5}=\frac{300}{5}=60 \]

  • Cabang B \[\bar{x} = \frac{40+50+60+70+80}{5}=\frac{300}{5}=60 \]

  • Cabang C \[\bar{x} = \frac{30+30+35+40+45}{5}=\frac{180}{5}=36\]

  • Cabang D \[\bar{x} = \frac{70+75+80+85+90}{5}=\frac{400}{5}=80\]

Median

Karena diberikan Data tunggal Maka Hasil Median Adalah:

  • Cabang A : 60

  • Cabang B : 60

  • Cabang C : 35

  • Cabang D : 80

Standar Deviasi

\[s = \sqrt{\frac{\sum(x_i - \bar{x})^2}{n-1}}\] - Cabang A \[s = \sqrt{\frac{\sum(50-60)^2,(55-60)^2,(60-60)^2,(65-60)^2,(70-60)^2}{5-1}}=\sqrt\frac{250}{4}=\sqrt62.5\approx7.91\] - Cabang B \[s = \sqrt{\frac{\sum(40-60)^2,(50-60)^2,(60-60)^2,(70-60)^2,(80-60)^2}{5-1}}=\sqrt\frac{1000}{4}=\sqrt250\approx15.81\] - Cabang C \[s = \sqrt{\frac{\sum(30-36)^2,(30-36)^2,(35-46)^2,(40-36)^2,(45-36)^2}{5-1}}=\sqrt\frac{170}{4}=\sqrt42.5\approx6.52\] - cabang D \[s = \sqrt{\frac{\sum(70-36)^2,(75-36)^2,(80-46)^2,(85-36)^2,(90-36)^2}{5-1}}=\sqrt\frac{250}{4}=\sqrt62.5\approx7.91\]

Cabang Manakah yang memiliki Penyebaran data paling Kecil ?

  • Cabang A memiliki standar deviasi 7.91, menunjukkan tingkat penyebaran data yang relatif kecil. Namun, data menunjukkan variasi yang sedikit lebih besar dibandingkan Cabang C.

  • Cabang B memiliki standar deviasi 15.81, yang jauh lebih besar dibandingkan cabang lainnya. Ini menunjukkan bahwa penjualan di Cabang B sangat bervariasi, mulai dari 40 juta hingga 80 juta.

  • Cabang C memiliki standar deviasi 6.52, yang merupakan nilai terkecil di antara semua cabang. Hal ini menunjukkan bahwa data penjualan di Cabang C sangat seragam dan mendekati rata-rata, yaitu 36 juta.

  • Cabang D memiliki standar deviasi 7.91, setara dengan Cabang A, tetapi sedikit lebih besar daripada Cabang C.

Dapat disimpulkan Bahwa Cabang C memiliki penyebaran data paling kecil dengan standar deviasi sebesar 6.52. Hal ini menunjukkan bahwa data penjualan Cabang C lebih homogen dibandingkan cabang lainnya.

Faktor Penentu Penyebaran Terkecil di Cabang C:

  1. Rentang Data yang Sempit: Cabang C memiliki rentang data hanya 15 juta rupiah (45 juta - 30 juta). Ini jauh lebih kecil dibandingkan cabang lainnya, seperti Cabang B yang memiliki rentang 40 juta rupiah (80 juta - 40 juta). Rentang data yang kecil secara langsung mempengaruhi standar deviasi karena menunjukkan data yang lebih terkonsentrasi.

  2. Kedekatan Nilai dengan Rata-rata: Data penjualan Cabang C (30, 30, 35, 40, 45) berada sangat dekat dengan rata-ratanya, yaitu 36 juta. Selisih kuadrat dari rata-rata jauh lebih kecil dibandingkan cabang lainnya, yang membuat standar deviasi lebih kecil.

Jika Target Penjualan Minimum adalah 50 Juta, cabang mana saja yang gagal mencapai target ?

  1. Cabang A (Data: 50, 55, 60, 65, 70):
  • Penjualan: 50 juta, 55 juta, 60 juta, 65 juta, 70 juta.

  • Semua data >= 50 juta, sehingga Cabang A memenuhi target.

  1. Cabang B (Data: 40, 50, 60, 70, 80):
  • Penjualan: 40 juta, 50 juta, 60 juta, 70 juta, 80 juta.

  • Terdapat satu nilai 40 juta, yang < 50 juta, sehingga Cabang B gagal memenuhi target untuk sebagian data.

  1. Cabang C (Data: 30, 30, 35, 40, 45):
  • Penjualan: 30 juta, 30 juta, 35 juta, 40 juta, 45 juta.

  • Semua data < 50 juta, sehingga Cabang C gagal memenuhi target sepenuhnya.

  1. Cabang D (Data: 70, 75, 80, 85, 90):
  • Penjualan: 70 juta, 75 juta, 80 juta, 85 juta, 90 juta.

  • Semua data >= 50 juta, sehingga Cabang D memenuhi target.

Cabang C adalah satu-satunya cabang yang seluruh datanya berada di bawah target 50 juta rupiah.

Alasan Cabang C Tidak Mencapai Target

1. Rata-rata Penjualan yang Rendah - Rata-rata penjualan Cabang C adalah 36 juta rupiah, yang jauh di bawah target minimum 50 juta rupiah.

  • Dengan rata-rata yang rendah, hampir tidak ada nilai penjualan yang mendekati target, apalagi melampaui target.

2. Rentang Data yang Sempit

  • Rentang data Cabang C adalah hanya 15 juta rupiah (dari 30 juta hingga 45 juta).

  • Rentang yang kecil membuat semua nilai tetap berada di bawah target.


Visualisasi Boxplot

Jika anda adalah seorang manajer perusahaan, bagaimana anda akan menggunakan informasi ini untuk merencanakan strategi peningkatan penjualan

Jika saya adalah manajer perusahaan, informasi ini dapat digunakan untuk:

  • Fokus meningkatkan performa Cabang C agar mencapai target minimal 50 juta rupiah, dengan mungkin memperbaiki strategi pemasaran atau produk.

  • Mempertahankan performa stabil Cabang A dan D yang menunjukkan konsistensi.

  • Mengelola risiko di Cabang B yang memiliki penyebaran data lebih besar untuk memastikan stabilitas hasil penjualan.

Latihan 2

Wilayah Jenis Barang Jumlah (unit) Waktu (jam) Biaya per Unit (Rp)
Utara Elektronik 200 5 15000
Selatan Pakaian 150 8 8000
Timur Makanan 180 6 10000
Barat Peralatan 120 7 12000
Tengah Elektronik 250 4 14000
Utara Pakaian 300 9 8500
Selatan Makanan 220 7 9500
Timur Peralatan 140 5 11000
Barat Elektronik 180 6 14500
Tengah Pakaian 350 8 7800
Utara Peralatan 170 4 12000
Selatan Elektronik 250 6 16000
Timur Pakaian 190 5 8200
Barat Makanan 130 5 10500
Tengah Peralatan 180 6 11500

1. Analisis Efisiensi Pengiriman:

Visualisasikan pengiriman barang berdasarkan jumlah barang, waktu pengiriman, dan biaya per unit dengan menggunakan plot 3D.

  • Jumlah (unit): Menunjukkan seberapa banyak barang yang dikirim. Titik yang lebih tinggi di sumbu x berarti lebih banyak barang yang dikirim.

  • Waktu (jam): Mengindikasikan waktu yang diperlukan untuk mengirim barang. Titik yang lebih tinggi di sumbu y menunjukkan waktu pengiriman yang lebih lama.

  • Biaya per Unit (Rp): Menunjukkan biaya untuk mengirim setiap unit barang. Titik yang lebih tinggi di sumbu z berarti biaya yang lebih tinggi.

Tentukan wilayah mana yang memiliki efisiensi pengiriman terendah berdasarkan biaya per unit dan waktu pengiriman.

Analisis Efisiensi Pengiriman

Untuk menentukan wilayah dengan efisiensi pengiriman terendah berdasarkan biaya per unit dan waktu pengiriman, kita dapat mengikuti langkah-langkah berikut:

Langkah 1: Memahami Data

Kita memiliki data mengenai beberapa wilayah yang mencakup informasi tentang: - Waktu pengiriman (dalam jam) - Biaya per unit (dalam Rupiah)

Wilayah Waktu (jam) Biaya per Unit (Rp)
Utara 5 15.000
Selatan 8 8.000
Timur 6 10.000
Barat 7 12.000
Tengah 4 14.000
Utara 9 8.500
Selatan 7 9.500
Timur 5 11.000
Barat 6 14.500
Tengah 8 7.800
Utara 4 12.000
Selatan 6 16.000
Timur 5 8.200
Barat 5 10.500
Tengah 6 11.500

Langkah 2: Menghitung Rasio Efisiensi

Rasio efisiensi dihitung menggunakan rumus berikut:

\[{Rasio Efisiensi} = \frac{Biaya per Unit}{Waktu (jam)}\]

Semakin tinggi rasio ini, semakin rendah efisiensi pengiriman. Ini berarti bahwa biaya yang lebih tinggi dan waktu pengiriman yang lebih lama akan menghasilkan rasio yang lebih besar.

Langkah 3: Menghitung untuk Setiap Wilayah

Berikut adalah beberapa contoh perhitungan rasio efisiensi untuk masing-masing wilayah:

Perhitungan Rasio Efisiensi Pengiriman

Berikut adalah perhitungan rasio efisiensi untuk masing-masing wilayah berdasarkan waktu pengiriman dan biaya per unit:

Pengiriman Pertama

  • Utara:
    • Waktu: 5 jam
    • Biaya: 15.000 Rp
    • Rasio: 15.000 / 5 = 3.000
  • Selatan:
    • Waktu: 8 jam
    • Biaya: 8.000 Rp
    • Rasio: 8.000 / 8 = 1.000
  • Timur:
    • Waktu: 6 jam
    • Biaya: 10.000 Rp
    • Rasio: 10.000 / 6 ≈ 1.667
  • Barat:
    • Waktu: 7 jam
    • Biaya: 12.000 Rp
    • Rasio: 12.000 / 7 ≈ 1.714
  • Tengah:
    • Waktu: 4 jam
    • Biaya: 14.000 Rp
    • Rasio: 14.000 / 4 = 3.500

Pengiriman Kedua

  • Utara (Pengiriman Kedua):
    • Waktu: 9 jam
    • Biaya: 8.500 Rp
    • Rasio: 8.500 / 9 ≈ 944
  • Selatan (Pengiriman Kedua):
    • Waktu: 7 jam
    • Biaya: 9.500 Rp
    • Rasio: 9.500 / 7 ≈ 1.357
  • Timur (Pengiriman Kedua):
    • Waktu: 5 jam
    • Biaya: 11.000 Rp
    • Rasio: 11.000 / 5 = 2.200
  • Barat (Pengiriman Kedua):
    • Waktu: 6 jam
    • Biaya: 14.500 Rp
    • Rasio: 14.500 / 6 ≈ 2.417
  • Tengah (Pengiriman Kedua):
    • Waktu: 8 jam
    • Biaya: 7.800 Rp
    • Rasio: 7.800 / 8 ≈ 975

Pengiriman Ketiga

  • Utara (Pengiriman Ketiga):
    • Waktu: 4 jam
    • Biaya: 12.000 Rp
    • Rasio: 12.000 / 4 = 3.000
  • Selatan (Pengiriman Ketiga):
    • Waktu: 6 jam
    • Biaya: 16.000 Rp
    • Rasio: 16.000 / 6 ≈ 2.667
  • Timur (Pengiriman Ketiga):
    • Waktu: 5 jam
    • Biaya: 8.200 Rp
    • Rasio: 8.200 / 5 = 1.640
  • Barat (Pengiriman Ketiga):
    • Waktu: 5 jam
    • Biaya: 10.500 Rp
    • Rasio: 10.500 / 5 = 2.100
  • Tengah (Pengiriman Ketiga):
    • Waktu: 6 jam
    • Biaya: 11.500 Rp
    • Rasio: 11.500 / 6 ≈ 1.917

Langkah 4: Mencari Wilayah dengan Efisiensi Terendah

Semakin rendah nilai rasio efisiensi, semakin efisien pengiriman di wilayah tersebut. Berikut adalah hasil perhitungan rasio efisiensi untuk setiap wilayah berdasarkan pengiriman pertama, kedua, dan ketiga:

Pengiriman Pertama

  • Utara: 3.000
  • Selatan: 1.000
  • Timur: 1.667
  • Barat: 1.714
  • Tengah: 3.500

Pengiriman Kedua

  • Utara: 944
  • Selatan: 1.357
  • Timur: 2.200
  • Barat: 2.417
  • Tengah: 975

Pengiriman Ketiga

  • Utara: 3.000
  • Selatan: 2.667
  • Timur: 1.640
  • Barat: 2.100
  • Tengah: 1.917

Analisis

Dari hasil perhitungan di atas, kita dapat melihat bahwa:

  1. *Pengiriman Pertama: Wilayah dengan efisiensi terendah adalah **Tengah* dengan rasio 3.500.

  2. *Pengiriman Kedua: Wilayah dengan efisiensi terendah adalah **Utara* dengan rasio 944.

  3. *Pengiriman Ketiga: Wilayah dengan efisiensi terendah adalah **Utara* dengan rasio 3.000.

Kesimpulan

Berdasarkan analisis di atas, wilayah yang memiliki efisiensi pengiriman terendah di keseluruhan adalah Tengah pada pengiriman pertama. Sementara itu, untuk pengiriman kedua dan ketiga, wilayah Utara menunjukkan efisiensi terendah.

Hal ini menunjukkan bahwa faktor biaya dan waktu pengiriman bervariasi antar wilayah dan pengiriman, dan penting untuk mempertimbangkan kedua faktor tersebut dalam analisis efisiensi pengiriman.

2. Rekomendasi Operasional:

Berdasarkan hasil analisis, wilayah mana yang memerlukan perhatian khusus untuk meningkatkan efisiensi pengiriman?

  • Tengah (Pengiriman Pertama):

Wilayah ini menunjukkan rasio efisiensi tertinggi sebesar 3.500, yang mencerminkan tingginya biaya per unit meskipun waktu pengiriman tergolong cepat. Hal ini mengungkapkan peluang untuk menekan biaya pengiriman. Upaya tersebut dapat dilakukan dengan meningkatkan efisiensi operasional melalui pengelolaan logistik yang lebih baik, penyempurnaan proses dalam rantai pasokan, serta penerapan kebijakan harga yang lebih terarah dan kompetitif.

  • Utara (Pengiriman Kedua dan Ketiga):

Wilayah ini mencerminkan fluktuasi dalam tingkat efisiensi pengiriman, dengan rasio efisiensi mencapai 944 pada pengiriman kedua yang cukup baik, namun kembali melonjak menjadi 3.000 pada pengiriman ketiga. Perubahan ini menegaskan pentingnya upaya untuk memastikan kestabilan efisiensi pengiriman di wilayah tersebut.

Rekomendasi untuk Meningkatkan Efisiensi Pengiriman

Berdasarkan analisis yang telah dilakukan, berikut adalah beberapa rekomendasi alternatif untuk meningkatkan efisiensi pengiriman di wilayah Tengah dan Utara:

  1. Integrasi Sistem Logistik:
    • Mengadopsi sistem integrasi logistik yang menghubungkan berbagai aspek pengiriman, mulai dari manajemen inventaris hingga distribusi. Hal ini memungkinkan aliran informasi yang lebih lancar dan mempercepat proses pengambilan keputusan.
    • Pertimbangkan penggunaan platform yang menggabungkan data dari berbagai sumber untuk memberikan gambaran yang lebih lengkap tentang rantai pasokan.
  2. Pengembangan Infrastruktur:
    • Investasi dalam peningkatan infrastruktur transportasi di wilayah yang terpengaruh, seperti perbaikan jalan atau pengembangan jalur pengiriman khusus. Ini dapat mengurangi waktu pengiriman dan meningkatkan keselamatan kendaraan.
    • Berkolaborasi dengan pemerintah daerah untuk mengidentifikasi dan menyelesaikan kendala infrastruktur yang menghambat efisiensi pengiriman.
  3. Optimalisasi Stok dan Inventaris:
    • Lakukan analisis permintaan untuk mengoptimalkan tingkat stok dan mengurangi biaya penyimpanan. Pastikan produk tersedia di lokasi yang tepat untuk mempercepat proses pengiriman.
    • Implementasikan strategi just-in-time (JIT) untuk meminimalkan inventaris dan memaksimalkan efisiensi pengiriman.
  4. Penerapan Prinsip Lean Logistics:
    • Terapkan prinsip lean logistics untuk mengidentifikasi dan menghilangkan pemborosan dalam proses pengiriman. Fokus pada pengurangan waktu tunggu, pengurangan langkah yang tidak perlu, dan pengoptimalan penggunaan sumber daya.
    • Libatkan seluruh tim dalam proses perbaikan berkelanjutan untuk memastikan semua anggota tim memahami tujuan efisiensi.
  5. Peningkatan Komunikasi dan Koordinasi:
    • Membangun saluran komunikasi yang lebih baik antara semua pihak terkait dalam proses pengiriman, termasuk pengemudi, pusat distribusi, dan pelanggan. Ini dapat mengurangi kesalahan dan meningkatkan respons terhadap masalah yang muncul.
    • Menggunakan aplikasi atau platform kolaborasi untuk memastikan semua pihak memiliki akses ke informasi terkini mengenai pengiriman.

Dengan menerapkan rekomendasi ini, diharapkan perusahaan dapat mencapai efisiensi pengiriman yang lebih tinggi di wilayah Tengah dan Utara, yang pada gilirannya akan meningkatkan kinerja operasional dan kepuasan pelanggan.

Kesimpulan

Dengan menerapkan rekomendasi ini, diharapkan biaya dan waktu pengiriman dapat dikurangi secara signifikan. Strategi yang terencana dan inovatif akan membantu dalam meningkatkan efisiensi operasional dan memberikan layanan yang lebih baik kepada pelanggan, sekaligus menjaga biaya tetap rendah. Upaya ini akan berkontribusi pada pertumbuhan bisnis yang berkelanjutan dan kepuasan pelanggan yang lebih tinggi.

3.Kinerja Berdasarkan Jenis Barang:

Analisis Kinerja Pengiriman Berdasarkan Jenis Barang dan Wilayah

  1. Barang Elektronik:
    • Wilayah Utara: Dengan pengiriman 200 unit dalam waktu 5 jam, biaya per unit adalah Rp 15,000.
    • Wilayah Tengah: Mencatat pengiriman terbesar sebanyak 250 unit dengan waktu tercepat 4 jam dan biaya per unit yang kompetitif sebesar Rp 14,000.
    • Wilayah Barat: Mencapai 180 unit dalam waktu 6 jam dengan biaya per unit Rp 14,500.
    • Wilayah Selatan: Memiliki biaya tertinggi per unit sebesar Rp 16,000, meskipun jumlah unit yang dikirim cukup banyak (250 unit) dan waktu pengiriman yang relatif cepat (6 jam).
  2. Pakaian:
    • Wilayah Utara: Menunjukkan pengiriman 300 unit, tetapi dengan waktu yang lebih lama (9 jam) dan biaya Rp 8,500 per unit.
    • Wilayah Tengah: Memiliki pengiriman 350 unit dengan waktu 8 jam dan biaya terendah Rp 7,800.
    • Wilayah Selatan: Mengirimkan 150 unit dalam waktu 8 jam dengan biaya Rp 8,000.
    • Wilayah Timur: Pengiriman 190 unit dalam waktu 5 jam dengan biaya per unit Rp 8,200.
  3. Makanan:
    • Wilayah Timur: Mengirimkan 180 unit dalam 6 jam dengan biaya Rp 10,000 per unit.
    • Wilayah Selatan: Mengirimkan 220 unit dalam 7 jam dengan biaya Rp 9,500.
    • Wilayah Barat: Mencatat 130 unit dengan waktu 5 jam dan biaya Rp 10,500.
  4. Peralatan:
    • Wilayah Barat: Mengirimkan 120 unit dalam 7 jam dengan biaya Rp 12,000.
    • Wilayah Timur: Mengirimkan 140 unit dalam waktu 5 jam dengan biaya Rp 11,000.
    • Wilayah Tengah: Mengirimkan 180 unit dalam waktu 6 jam dengan biaya Rp 11,500.
    • Wilayah Utara: Mencatat 170 unit dalam waktu tercepat 4 jam dengan biaya Rp 12,000.

Kesimpulan

Berdasarkan analisis di atas, dapat disimpulkan:

  • Wilayah dengan waktu pengiriman lebih cepat:
    • Tengah (Elektronik) dan Utara (Peralatan) dengan waktu pengiriman 4 jam.
  • Wilayah dengan biaya per unit lebih rendah:
    • Selatan (Pakaian) dengan biaya per unit Rp 8.000
LS0tDQp0aXRsZTogIlR1Z2FzIFBlcnRlbXVhbiAxMSINCnN1YnRpdGxlOiAiIg0KYXV0aG9yOiAiTS4gUmFnaWwgUml6a2kgTXVseWEgKDUyMjQwMDI3KSINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgaWQ9ImxvZ28tdXRhbWEiIHNyYz0iQ292ZXIuanBlZz9yYXc9dHJ1ZSIgYWx0PSJMb2dvIiBzdHlsZT0id2lkdGg6MjAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87Ij4NCg0KIyBMYXRpaGFuIDENCg0KICAtICJDYWJhbmcgQSIgPSAoNTAsIDU1LCA2MCwgNjUsIDcwKSwNCiAgDQogIC0gIkNhYmFuZyBCIiA9ICg0MCwgNTAsIDYwLCA3MCwgODApLA0KICANCiAgLSAiQ2FiYW5nIEMiID0gKDMwLCAzMCwgMzUsIDQwLCA0NSksDQogIA0KICAtICJDYWJhbmcgRCIgPSAoNzAsIDc1LCA4MCwgODUsIDkwKQ0KKQ0KDQojIyBNZW5naGl0dW5nIFJhdGEgLSBSYXRhLCBNZWRpYW4sIFN0YW5kYXIgRGV2aWFzaQ0KDQojIyMgUmF0YSAtIFJhdGENCg0KJCRcYmFye3h9ID0gXGZyYWN7XHN1bSB4X2l9e259JCQNCg0KLSAkXGJhcnt4fSQ9IFJhdGEgUmF0YQ0KDQotICR7XHN1bSB4X2l9JD0gSnVtbGFoIFNlbHVydWggTmlsYWkgRGF0YQ0KDQotICR7bn0kPSBKdW1sYWggVG90YWwgRGF0YQ0KDQotIENhYmFuZyBBDQokJFxiYXJ7eH0gPSBcZnJhY3s1MCs1NSs2MCs2NSs3MH17NX09XGZyYWN7MzAwfXs1fT02MCAkJA0KLSBDYWJhbmcgQg0KJCRcYmFye3h9ID0gXGZyYWN7NDArNTArNjArNzArODB9ezV9PVxmcmFjezMwMH17NX09NjAgJCQNCi0gQ2FiYW5nIEMNCiQkXGJhcnt4fSA9IFxmcmFjezMwKzMwKzM1KzQwKzQ1fXs1fT1cZnJhY3sxODB9ezV9PTM2JCQNCi0gQ2FiYW5nIEQNCiQkXGJhcnt4fSA9IFxmcmFjezcwKzc1KzgwKzg1KzkwfXs1fT1cZnJhY3s0MDB9ezV9PTgwJCQNCg0KIyMjIE1lZGlhbg0KDQoqKkthcmVuYSBkaWJlcmlrYW4gRGF0YSB0dW5nZ2FsIE1ha2EgSGFzaWwgTWVkaWFuIEFkYWxhaCoqOg0KDQotIENhYmFuZyBBIDogNjANCg0KLSBDYWJhbmcgQiA6IDYwDQoNCi0gQ2FiYW5nIEMgOiAzNQ0KDQotIENhYmFuZyBEIDogODANCg0KIyMjIFN0YW5kYXIgRGV2aWFzaQ0KDQokJHMgPSBcc3FydHtcZnJhY3tcc3VtKHhfaSAtIFxiYXJ7eH0pXjJ9e24tMX19JCQNCi0gQ2FiYW5nIEENCiQkcyA9IFxzcXJ0e1xmcmFje1xzdW0oNTAtNjApXjIsKDU1LTYwKV4yLCg2MC02MCleMiwoNjUtNjApXjIsKDcwLTYwKV4yfXs1LTF9fT1cc3FydFxmcmFjezI1MH17NH09XHNxcnQ2Mi41XGFwcHJveDcuOTEkJA0KLSBDYWJhbmcgQg0KJCRzID0gXHNxcnR7XGZyYWN7XHN1bSg0MC02MCleMiwoNTAtNjApXjIsKDYwLTYwKV4yLCg3MC02MCleMiwoODAtNjApXjJ9ezUtMX19PVxzcXJ0XGZyYWN7MTAwMH17NH09XHNxcnQyNTBcYXBwcm94MTUuODEkJA0KLSBDYWJhbmcgQw0KJCRzID0gXHNxcnR7XGZyYWN7XHN1bSgzMC0zNileMiwoMzAtMzYpXjIsKDM1LTQ2KV4yLCg0MC0zNileMiwoNDUtMzYpXjJ9ezUtMX19PVxzcXJ0XGZyYWN7MTcwfXs0fT1cc3FydDQyLjVcYXBwcm94Ni41MiQkDQotIGNhYmFuZyBEDQokJHMgPSBcc3FydHtcZnJhY3tcc3VtKDcwLTM2KV4yLCg3NS0zNileMiwoODAtNDYpXjIsKDg1LTM2KV4yLCg5MC0zNileMn17NS0xfX09XHNxcnRcZnJhY3syNTB9ezR9PVxzcXJ0NjIuNVxhcHByb3g3LjkxJCQNCg0KIyMgQ2FiYW5nIE1hbmFrYWggeWFuZyBtZW1pbGlraSBQZW55ZWJhcmFuIGRhdGEgcGFsaW5nIEtlY2lsID8NCg0KLSAqKkNhYmFuZyBBKiogbWVtaWxpa2kgc3RhbmRhciBkZXZpYXNpIDcuOTEsIG1lbnVuanVra2FuIHRpbmdrYXQgcGVueWViYXJhbiBkYXRhIHlhbmcgcmVsYXRpZiBrZWNpbC4gTmFtdW4sIGRhdGEgbWVudW5qdWtrYW4gdmFyaWFzaSB5YW5nIHNlZGlraXQgbGViaWggYmVzYXIgZGliYW5kaW5na2FuIENhYmFuZyBDLg0KDQotICoqQ2FiYW5nIEIqKiBtZW1pbGlraSBzdGFuZGFyIGRldmlhc2kgMTUuODEsIHlhbmcgamF1aCBsZWJpaCBiZXNhciBkaWJhbmRpbmdrYW4gY2FiYW5nIGxhaW5ueWEuIEluaSBtZW51bmp1a2thbiBiYWh3YSBwZW5qdWFsYW4gZGkgQ2FiYW5nIEIgc2FuZ2F0IGJlcnZhcmlhc2ksIG11bGFpIGRhcmkgNDAganV0YSBoaW5nZ2EgODAganV0YS4NCg0KLSAqKkNhYmFuZyBDKiogbWVtaWxpa2kgc3RhbmRhciBkZXZpYXNpIDYuNTIsIHlhbmcgbWVydXBha2FuIG5pbGFpIHRlcmtlY2lsIGRpIGFudGFyYSBzZW11YSBjYWJhbmcuIEhhbCBpbmkgbWVudW5qdWtrYW4gYmFod2EgZGF0YSBwZW5qdWFsYW4gZGkgQ2FiYW5nIEMgc2FuZ2F0IHNlcmFnYW0gZGFuIG1lbmRla2F0aSByYXRhLXJhdGEsIHlhaXR1IDM2IGp1dGEuDQoNCi0gKipDYWJhbmcgRCoqIG1lbWlsaWtpIHN0YW5kYXIgZGV2aWFzaSA3LjkxLCBzZXRhcmEgZGVuZ2FuIENhYmFuZyBBLCB0ZXRhcGkgc2VkaWtpdCBsZWJpaCBiZXNhciBkYXJpcGFkYSBDYWJhbmcgQy4NCg0KRGFwYXQgZGlzaW1wdWxrYW4gQmFod2EgKipDYWJhbmcgQyoqIG1lbWlsaWtpIHBlbnllYmFyYW4gZGF0YSBwYWxpbmcga2VjaWwgZGVuZ2FuIHN0YW5kYXIgZGV2aWFzaSBzZWJlc2FyIDYuNTIuIEhhbCBpbmkgbWVudW5qdWtrYW4gYmFod2EgZGF0YSBwZW5qdWFsYW4gQ2FiYW5nIEMgbGViaWggaG9tb2dlbiBkaWJhbmRpbmdrYW4gY2FiYW5nIGxhaW5ueWEuDQoNCkZha3RvciBQZW5lbnR1IFBlbnllYmFyYW4gVGVya2VjaWwgZGkgKipDYWJhbmcgQyoqOg0KDQoxLiBSZW50YW5nIERhdGEgeWFuZyBTZW1waXQ6ICoqQ2FiYW5nIEMqKiBtZW1pbGlraSByZW50YW5nIGRhdGEgaGFueWEgMTUganV0YSBydXBpYWggKDQ1IGp1dGEgLSAzMCBqdXRhKS4gSW5pIGphdWggbGViaWgga2VjaWwgZGliYW5kaW5na2FuIGNhYmFuZyBsYWlubnlhLCBzZXBlcnRpIENhYmFuZyBCIHlhbmcgbWVtaWxpa2kgcmVudGFuZyA0MCBqdXRhIHJ1cGlhaCAoODAganV0YSAtIDQwIGp1dGEpLiBSZW50YW5nIGRhdGEgeWFuZyBrZWNpbCBzZWNhcmEgbGFuZ3N1bmcgbWVtcGVuZ2FydWhpIHN0YW5kYXIgZGV2aWFzaSBrYXJlbmEgbWVudW5qdWtrYW4gZGF0YSB5YW5nIGxlYmloIHRlcmtvbnNlbnRyYXNpLg0KDQoyLiBLZWRla2F0YW4gTmlsYWkgZGVuZ2FuIFJhdGEtcmF0YTogRGF0YSBwZW5qdWFsYW4gKipDYWJhbmcgQyoqICgzMCwgMzAsIDM1LCA0MCwgNDUpIGJlcmFkYSBzYW5nYXQgZGVrYXQgZGVuZ2FuIHJhdGEtcmF0YW55YSwgeWFpdHUgMzYganV0YS4gU2VsaXNpaCBrdWFkcmF0IGRhcmkgcmF0YS1yYXRhIGphdWggbGViaWgga2VjaWwgZGliYW5kaW5na2FuIGNhYmFuZyBsYWlubnlhLCB5YW5nIG1lbWJ1YXQgc3RhbmRhciBkZXZpYXNpIGxlYmloIGtlY2lsLg0KDQoNCiMjIEppa2EgVGFyZ2V0IFBlbmp1YWxhbiBNaW5pbXVtIGFkYWxhaCA1MCBKdXRhLCBjYWJhbmcgbWFuYSBzYWphIHlhbmcgZ2FnYWwgbWVuY2FwYWkgdGFyZ2V0ID8NCg0KMS4gKipDYWJhbmcgQSoqIChEYXRhOiA1MCwgNTUsIDYwLCA2NSwgNzApOg0KDQotIFBlbmp1YWxhbjogNTAganV0YSwgNTUganV0YSwgNjAganV0YSwgNjUganV0YSwgNzAganV0YS4NCg0KLSBTZW11YSBkYXRhID49IDUwIGp1dGEsIHNlaGluZ2dhIENhYmFuZyBBIG1lbWVudWhpIHRhcmdldC4NCg0KMi4gKipDYWJhbmcgQioqIChEYXRhOiA0MCwgNTAsIDYwLCA3MCwgODApOg0KDQotIFBlbmp1YWxhbjogNDAganV0YSwgNTAganV0YSwgNjAganV0YSwgNzAganV0YSwgODAganV0YS4NCg0KLSBUZXJkYXBhdCBzYXR1IG5pbGFpIDQwIGp1dGEsIHlhbmcgPCA1MCBqdXRhLCBzZWhpbmdnYSBDYWJhbmcgQiBnYWdhbCBtZW1lbnVoaSB0YXJnZXQgdW50dWsgc2ViYWdpYW4gZGF0YS4NCg0KMy4gKipDYWJhbmcgQyoqIChEYXRhOiAzMCwgMzAsIDM1LCA0MCwgNDUpOg0KDQotIFBlbmp1YWxhbjogMzAganV0YSwgMzAganV0YSwgMzUganV0YSwgNDAganV0YSwgNDUganV0YS4NCg0KLSBTZW11YSBkYXRhIDwgNTAganV0YSwgc2VoaW5nZ2EgQ2FiYW5nIEMgZ2FnYWwgbWVtZW51aGkgdGFyZ2V0IHNlcGVudWhueWEuDQoNCjQuICoqQ2FiYW5nIEQqKiAoRGF0YTogNzAsIDc1LCA4MCwgODUsIDkwKToNCg0KLSBQZW5qdWFsYW46IDcwIGp1dGEsIDc1IGp1dGEsIDgwIGp1dGEsIDg1IGp1dGEsIDkwIGp1dGEuDQoNCi0gU2VtdWEgZGF0YSA+PSA1MCBqdXRhLCBzZWhpbmdnYSBDYWJhbmcgRCBtZW1lbnVoaSB0YXJnZXQuDQoNCioqQ2FiYW5nIEMqKiBhZGFsYWggc2F0dS1zYXR1bnlhIGNhYmFuZyB5YW5nIHNlbHVydWggZGF0YW55YSBiZXJhZGEgZGkgYmF3YWggdGFyZ2V0IDUwIGp1dGEgcnVwaWFoLg0KDQoqKkFsYXNhbiBDYWJhbmcgQyBUaWRhayBNZW5jYXBhaSBUYXJnZXQqKg0KDQoqKjEuIFJhdGEtcmF0YSBQZW5qdWFsYW4geWFuZyBSZW5kYWgqKg0KLSBSYXRhLXJhdGEgcGVuanVhbGFuIENhYmFuZyBDIGFkYWxhaCAqKjM2IGp1dGEgcnVwaWFoKiosIHlhbmcgamF1aCBkaSBiYXdhaCB0YXJnZXQgbWluaW11bSAqKjUwIGp1dGEgcnVwaWFoKiouDQoNCi0gRGVuZ2FuIHJhdGEtcmF0YSB5YW5nIHJlbmRhaCwgaGFtcGlyIHRpZGFrIGFkYSBuaWxhaSBwZW5qdWFsYW4geWFuZyBtZW5kZWthdGkgdGFyZ2V0LCBhcGFsYWdpIG1lbGFtcGF1aSB0YXJnZXQuDQoNCioqMi4gUmVudGFuZyBEYXRhIHlhbmcgU2VtcGl0KioNCg0KLSBSZW50YW5nIGRhdGEgQ2FiYW5nIEMgYWRhbGFoIGhhbnlhICoqMTUganV0YSBydXBpYWgqKiAoZGFyaSAzMCBqdXRhIGhpbmdnYSA0NSBqdXRhKS4NCg0KLSBSZW50YW5nIHlhbmcga2VjaWwgbWVtYnVhdCBzZW11YSBuaWxhaSB0ZXRhcCBiZXJhZGEgZGkgYmF3YWggdGFyZ2V0Lg0KDQotLS0NCg0KDQoNCg0KIyMgVmlzdWFsaXNhc2kgQm94cGxvdA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGEgUGVuanVhbGFuDQpwZW5qdWFsYW4gPC0gYyg1MCwgNTUsIDYwLCA2NSwgNzAsIA0KICAgICAgICAgICAgICAgNDAsIDUwLCA2MCwgNzAsIDgwLCANCiAgICAgICAgICAgICAgIDMwLCAzMCwgMzUsIDQwLCA0NSwgDQogICAgICAgICAgICAgICA3MCwgNzUsIDgwLCA4NSwgOTApDQpjYWJhbmcgPC0gYyhyZXAoIkNhYmFuZyBBIiwgNSksIA0KICAgICAgICAgICAgcmVwKCJDYWJhbmcgQiIsIDUpLCANCiAgICAgICAgICAgIHJlcCgiQ2FiYW5nIEMiLCA1KSwgDQogICAgICAgICAgICByZXAoIkNhYmFuZyBEIiwgNSkpDQoNCiMgTWVtYnVhdCBib3hwbG90IHVudHVrIGRhdGEgcGVyIGNhYmFuZw0KcGxvdF9seSgpICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IHBlbmp1YWxhblsxOjVdLCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEEiLCANCiAgICBib3htZWFuID0gVFJVRSwNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ2xpZ2h0Ymx1ZScpDQogICkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gcGVuanVhbGFuWzY6MTBdLCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEIiLCANCiAgICBib3htZWFuID0gVFJVRSwNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ2xpZ2h0Z3JlZW4nKQ0KICApICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IHBlbmp1YWxhblsxMToxNV0sIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQyIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnbGlnaHR5ZWxsb3cnKQ0KICApICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IHBlbmp1YWxhblsxNjoyMF0sIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgRCIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnbGlnaHRjb3JhbCcpDQogICkgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJCb3ggUGxvdCBQZW5qdWFsYW4gUGVyIENhYmFuZyIsDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlBlbmp1YWxhbiAoSnV0YSBSdXBpYWgpIiksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkNhYmFuZyIpDQogICkNCg0KYGBgDQoNCiMjIEppa2EgYW5kYSBhZGFsYWggc2VvcmFuZyBtYW5hamVyIHBlcnVzYWhhYW4sIGJhZ2FpbWFuYSBhbmRhIGFrYW4gbWVuZ2d1bmFrYW4gaW5mb3JtYXNpIGluaSB1bnR1ayBtZXJlbmNhbmFrYW4gc3RyYXRlZ2kgcGVuaW5na2F0YW4gcGVuanVhbGFuDQoNCkppa2Egc2F5YSBhZGFsYWggbWFuYWplciBwZXJ1c2FoYWFuLCBpbmZvcm1hc2kgaW5pIGRhcGF0IGRpZ3VuYWthbiB1bnR1azoNCg0KLSBGb2t1cyBtZW5pbmdrYXRrYW4gcGVyZm9ybWEgQ2FiYW5nIEMgYWdhciBtZW5jYXBhaSB0YXJnZXQgbWluaW1hbCA1MCBqdXRhIHJ1cGlhaCwgZGVuZ2FuIG11bmdraW4gbWVtcGVyYmFpa2kgc3RyYXRlZ2kgcGVtYXNhcmFuIGF0YXUgcHJvZHVrLg0KDQotIE1lbXBlcnRhaGFua2FuIHBlcmZvcm1hIHN0YWJpbCBDYWJhbmcgQSBkYW4gRCB5YW5nIG1lbnVuanVra2FuIGtvbnNpc3RlbnNpLg0KDQotIE1lbmdlbG9sYSByaXNpa28gZGkgQ2FiYW5nIEIgeWFuZyBtZW1pbGlraSBwZW55ZWJhcmFuIGRhdGEgbGViaWggYmVzYXIgdW50dWsgbWVtYXN0aWthbiBzdGFiaWxpdGFzIGhhc2lsIHBlbmp1YWxhbi4NCg0KDQoNCiMgTGF0aWhhbiAyDQoNCnwgV2lsYXlhaCAgfCBKZW5pcyBCYXJhbmcgfCBKdW1sYWggKHVuaXQpIHwgV2FrdHUgKGphbSkgfCBCaWF5YSBwZXIgVW5pdCAoUnApIHwNCnwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgVXRhcmEgICAgfCBFbGVrdHJvbmlrICAgfCAyMDAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCAxNTAwMCAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgfCBQYWthaWFuICAgICAgfCAxNTAgICAgICAgICAgIHwgOCAgICAgICAgICAgfCA4MDAwICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgfCBNYWthbmFuICAgICAgfCAxODAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxMDAwMCAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgfCBQZXJhbGF0YW4gICAgfCAxMjAgICAgICAgICAgIHwgNyAgICAgICAgICAgfCAxMjAwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgfCBFbGVrdHJvbmlrICAgfCAyNTAgICAgICAgICAgIHwgNCAgICAgICAgICAgfCAxNDAwMCAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICAgfCBQYWthaWFuICAgICAgfCAzMDAgICAgICAgICAgIHwgOSAgICAgICAgICAgfCA4NTAwICAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgfCBNYWthbmFuICAgICAgfCAyMjAgICAgICAgICAgIHwgNyAgICAgICAgICAgfCA5NTAwICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgfCBQZXJhbGF0YW4gICAgfCAxNDAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCAxMTAwMCAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgfCBFbGVrdHJvbmlrICAgfCAxODAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxNDUwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgfCBQYWthaWFuICAgICAgfCAzNTAgICAgICAgICAgIHwgOCAgICAgICAgICAgfCA3ODAwICAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICAgfCBQZXJhbGF0YW4gICAgfCAxNzAgICAgICAgICAgIHwgNCAgICAgICAgICAgfCAxMjAwMCAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgfCBFbGVrdHJvbmlrICAgfCAyNTAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxNjAwMCAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgfCBQYWthaWFuICAgICAgfCAxOTAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCA4MjAwICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgfCBNYWthbmFuICAgICAgfCAxMzAgICAgICAgICAgIHwgNSAgICAgICAgICAgfCAxMDUwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgfCBQZXJhbGF0YW4gICAgfCAxODAgICAgICAgICAgIHwgNiAgICAgICAgICAgfCAxMTUwMCAgICAgICAgICAgICAgIHwNCg0KIyMgMS4gQW5hbGlzaXMgRWZpc2llbnNpIFBlbmdpcmltYW46DQoNCiMjIyBWaXN1YWxpc2FzaWthbiBwZW5naXJpbWFuIGJhcmFuZyBiZXJkYXNhcmthbiBqdW1sYWggYmFyYW5nLCB3YWt0dSBwZW5naXJpbWFuLCBkYW4gYmlheWEgcGVyIHVuaXQgZGVuZ2FuIG1lbmdndW5ha2FuIHBsb3QgM0QuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgcGFrZXQgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRhdGEgZnJhbWUNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgV2lsYXlhaCA9IGMoIlV0YXJhIiwgIlNlbGF0YW4iLCAiVGltdXIiLCAiQmFyYXQiLCAiVGVuZ2FoIiwgDQogICAgICAgICAgICAgICJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsIA0KICAgICAgICAgICAgICAiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiKSwNCiAgSmVuaXNfQmFyYW5nID0gYygiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCANCiAgICAgICAgICAgICAgICAgICAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIsICJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCANCiAgICAgICAgICAgICAgICAgICAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsICJNYWthbmFuIiwgIlBlcmFsYXRhbiIpLA0KICBKdW1sYWggPSBjKDIwMCwgMTUwLCAxODAsIDEyMCwgMjUwLCANCiAgICAgICAgICAgICAzMDAsIDIyMCwgMTQwLCAxODAsIDM1MCwgDQogICAgICAgICAgICAgMTcwLCAyNTAsIDE5MCwgMTMwLCAxODApLA0KICBXYWt0dSA9IGMoNSwgOCwgNiwgNywgNCwgDQogICAgICAgICAgICA5LCA3LCA1LCA2LCA4LCANCiAgICAgICAgICAgIDQsIDYsIDUsIDUsIDYpLA0KICBCaWF5YV9wZXJfVW5pdCA9IGMoMTUwMDAsIDgwMDAsIDEwMDAwLCAxMjAwMCwgMTQwMDAsIA0KICAgICAgICAgICAgICAgICAgICAgODUwMCwgOTUwMCwgMTEwMDAsIDE0NTAwLCA3ODAwLCANCiAgICAgICAgICAgICAgICAgICAgIDEyMDAwLCAxNjAwMCwgODIwMCwgMTA1MDAsIDExNTAwKQ0KKQ0KDQojIE1lbmVudHVrYW4gd2FybmEgdW50dWsgc2V0aWFwIGplbmlzIGJhcmFuZw0Kd2FybmEgPC0gYygiRWxla3Ryb25payIgPSAiY2hhcnRyZXVzZSIsICJQYWthaWFuIiA9ICJ5ZWxsb3ciLCANCiAgICAgICAgICAgIk1ha2FuYW4iID0gImN5YW4iLCAiUGVyYWxhdGFuIiA9ICJibGFjayIpDQoNCiMgTWVtYnVhdCBsYWJlbCB1bnR1ayBrb29yZGluYXQsIHRlcm1hc3VrIG5hbWEgd2lsYXlhaA0KZGF0YSRMYWJlbCA8LSBwYXN0ZSgiV2lsYXlhaDoiLCBkYXRhJFdpbGF5YWgsIA0KICAgICAgICAgICAgICAgICAgICAiPGJyPkp1bWxhaDoiLCBkYXRhJEp1bWxhaCwgDQogICAgICAgICAgICAgICAgICAgICI8YnI+V2FrdHU6IiwgZGF0YSRXYWt0dSwgImphbSIsIA0KICAgICAgICAgICAgICAgICAgICAiPGJyPkJpYXlhIHBlciBVbml0OiIsIGRhdGEkQmlheWFfcGVyX1VuaXQsICJScCIpDQoNCiMgTWVtYnVhdCBwbG90IDNEIGRlbmdhbiB3YXJuYSBiZXJiZWRhIGJlcmRhc2Fya2FuIGplbmlzIGJhcmFuZw0KZmlnIDwtIHBsb3RfbHkoZGF0YSwgeCA9IH5KdW1sYWgsIHkgPSB+V2FrdHUsIHogPSB+QmlheWFfcGVyX1VuaXQsIA0KICAgICAgICAgICAgICAgY29sb3IgPSB+SmVuaXNfQmFyYW5nLCBjb2xvcnMgPSB3YXJuYSwNCiAgICAgICAgICAgICAgIHR5cGUgPSAnc2NhdHRlcjNkJywgbW9kZSA9ICdtYXJrZXJzJywgDQogICAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA1LCBvcGFjaXR5ID0gMC44KSwNCiAgICAgICAgICAgICAgIHRleHQgPSB+TGFiZWwsICAjIE1lbmFtYmFoa2FuIGxhYmVsIGtvb3JkaW5hdA0KICAgICAgICAgICAgICAgaG92ZXJpbmZvID0gJ3RleHQnLCAgIyBNZW5hbXBpbGthbiBsYWJlbCBzYWF0IGRpa2xpaw0KICAgICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpICU+JSAgIyBNZW5hbXBpbGthbiBsZWdlbmQNCiAgbGF5b3V0KHNjZW5lID0gbGlzdCh4YXhpcyA9IGxpc3QodGl0bGUgPSAnSnVtbGFoICh1bml0KScpLA0KICAgICAgICAgICAgICAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICdXYWt0dSAoamFtKScpLA0KICAgICAgICAgICAgICAgICAgICAgIHpheGlzID0gbGlzdCh0aXRsZSA9ICdCaWF5YSBwZXIgVW5pdCAoUnApJykpLA0KICAgICAgICAgdGl0bGUgPSAnVmlzdWFsaXNhc2kgUGVuZ2lyaW1hbiBCYXJhbmcnLA0KICAgICAgICAgbGVnZW5kID0gbGlzdCh0aXRsZSA9IGxpc3QodGV4dCA9ICdKZW5pcyBCYXJhbmcnKSksDQogICAgICAgICBtYXJnaW4gPSBsaXN0KGwgPSAwLCByID0gMCwgYiA9IDAsIHQgPSA0MCkpICAjIE1lbmdhdHVyIG1hcmdpbiB1bnR1ayB0YW1waWxhbiB5YW5nIGxlYmloIHJhcGkNCg0KIyBNZW5hbXBpbGthbiBwbG90DQpmaWcNCmBgYA0KDQotICoqSnVtbGFoICh1bml0KToqKiBNZW51bmp1a2thbiBzZWJlcmFwYSBiYW55YWsgYmFyYW5nIHlhbmcgZGlraXJpbS4gVGl0aWsgeWFuZyBsZWJpaCB0aW5nZ2kgZGkgc3VtYnUgeCBiZXJhcnRpIGxlYmloIGJhbnlhayBiYXJhbmcgeWFuZyBkaWtpcmltLg0KDQotICoqV2FrdHUgKGphbSk6KiogTWVuZ2luZGlrYXNpa2FuIHdha3R1IHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5naXJpbSBiYXJhbmcuIFRpdGlrIHlhbmcgbGViaWggdGluZ2dpIGRpIHN1bWJ1IHkgbWVudW5qdWtrYW4gd2FrdHUgcGVuZ2lyaW1hbiB5YW5nIGxlYmloIGxhbWEuDQoNCi0gKipCaWF5YSBwZXIgVW5pdCAoUnApOioqIE1lbnVuanVra2FuIGJpYXlhIHVudHVrIG1lbmdpcmltIHNldGlhcCB1bml0IGJhcmFuZy4gVGl0aWsgeWFuZyBsZWJpaCB0aW5nZ2kgZGkgc3VtYnUgeiBiZXJhcnRpIGJpYXlhIHlhbmcgbGViaWggdGluZ2dpLg0KDQojIyMgVGVudHVrYW4gd2lsYXlhaCBtYW5hIHlhbmcgbWVtaWxpa2kgZWZpc2llbnNpIHBlbmdpcmltYW4gdGVyZW5kYWggYmVyZGFzYXJrYW4gYmlheWEgcGVyIHVuaXQgZGFuIHdha3R1IHBlbmdpcmltYW4uDQoNCiMjIyMgQW5hbGlzaXMgRWZpc2llbnNpIFBlbmdpcmltYW4NCg0KVW50dWsgbWVuZW50dWthbiB3aWxheWFoIGRlbmdhbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbiB0ZXJlbmRhaCBiZXJkYXNhcmthbiBiaWF5YSBwZXIgdW5pdCBkYW4gd2FrdHUgcGVuZ2lyaW1hbiwga2l0YSBkYXBhdCBtZW5naWt1dGkgbGFuZ2thaC1sYW5na2FoIGJlcmlrdXQ6DQoNCiMjIyMgTGFuZ2thaCAxOiBNZW1haGFtaSBEYXRhDQpLaXRhIG1lbWlsaWtpIGRhdGEgbWVuZ2VuYWkgYmViZXJhcGEgd2lsYXlhaCB5YW5nIG1lbmNha3VwIGluZm9ybWFzaSB0ZW50YW5nOg0KLSAqV2FrdHUgcGVuZ2lyaW1hbiAoZGFsYW0gamFtKSoNCi0gKkJpYXlhIHBlciB1bml0IChkYWxhbSBSdXBpYWgpKg0KDQp8IFdpbGF5YWggfCBXYWt0dSAoamFtKSB8IEJpYXlhIHBlciBVbml0IChScCkgfA0KfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IFV0YXJhICAgfCA1ICAgICAgICAgICB8IDE1LjAwMCAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiB8IDggICAgICAgICAgIHwgOC4wMDAgICAgICAgICAgICAgICAgfA0KfCBUaW11ciAgIHwgNiAgICAgICAgICAgfCAxMC4wMDAgICAgICAgICAgICAgICB8DQp8IEJhcmF0ICAgfCA3ICAgICAgICAgICB8IDEyLjAwMCAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICB8IDQgICAgICAgICAgIHwgMTQuMDAwICAgICAgICAgICAgICAgfA0KfCBVdGFyYSAgIHwgOSAgICAgICAgICAgfCA4LjUwMCAgICAgICAgICAgICAgICB8DQp8IFNlbGF0YW4gfCA3ICAgICAgICAgICB8IDkuNTAwICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICB8IDUgICAgICAgICAgIHwgMTEuMDAwICAgICAgICAgICAgICAgfA0KfCBCYXJhdCAgIHwgNiAgICAgICAgICAgfCAxNC41MDAgICAgICAgICAgICAgICB8DQp8IFRlbmdhaCAgfCA4ICAgICAgICAgICB8IDcuODAwICAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICB8IDQgICAgICAgICAgIHwgMTIuMDAwICAgICAgICAgICAgICAgfA0KfCBTZWxhdGFuIHwgNiAgICAgICAgICAgfCAxNi4wMDAgICAgICAgICAgICAgICB8DQp8IFRpbXVyICAgfCA1ICAgICAgICAgICB8IDguMjAwICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICB8IDUgICAgICAgICAgIHwgMTAuNTAwICAgICAgICAgICAgICAgfA0KfCBUZW5nYWggIHwgNiAgICAgICAgICAgfCAxMS41MDAgICAgICAgICAgICAgICB8DQoNCiMjIyMgTGFuZ2thaCAyOiBNZW5naGl0dW5nIFJhc2lvIEVmaXNpZW5zaQ0KUmFzaW8gZWZpc2llbnNpIGRpaGl0dW5nIG1lbmdndW5ha2FuIHJ1bXVzIGJlcmlrdXQ6DQoNCg0KJCR7UmFzaW8gRWZpc2llbnNpfSA9IFxmcmFje0JpYXlhIHBlciBVbml0fXtXYWt0dSAoamFtKX0kJA0KDQpTZW1ha2luIHRpbmdnaSByYXNpbyBpbmksIHNlbWFraW4gcmVuZGFoIGVmaXNpZW5zaSBwZW5naXJpbWFuLiBJbmkgYmVyYXJ0aSBiYWh3YSBiaWF5YSB5YW5nIGxlYmloIHRpbmdnaSBkYW4gd2FrdHUgcGVuZ2lyaW1hbiB5YW5nIGxlYmloIGxhbWEgYWthbiBtZW5naGFzaWxrYW4gcmFzaW8geWFuZyBsZWJpaCBiZXNhci4NCg0KIyMjIyBMYW5na2FoIDM6IE1lbmdoaXR1bmcgdW50dWsgU2V0aWFwIFdpbGF5YWgNCkJlcmlrdXQgYWRhbGFoIGJlYmVyYXBhIGNvbnRvaCBwZXJoaXR1bmdhbiByYXNpbyBlZmlzaWVuc2kgdW50dWsgbWFzaW5nLW1hc2luZyB3aWxheWFoOg0KDQojIyMjIFBlcmhpdHVuZ2FuIFJhc2lvIEVmaXNpZW5zaSBQZW5naXJpbWFuDQoNCkJlcmlrdXQgYWRhbGFoIHBlcmhpdHVuZ2FuIHJhc2lvIGVmaXNpZW5zaSB1bnR1ayBtYXNpbmctbWFzaW5nIHdpbGF5YWggYmVyZGFzYXJrYW4gd2FrdHUgcGVuZ2lyaW1hbiBkYW4gYmlheWEgcGVyIHVuaXQ6DQoNCiMjIyMgUGVuZ2lyaW1hbiBQZXJ0YW1hDQotICpVdGFyYSo6DQogIC0gV2FrdHU6IDUgamFtDQogIC0gQmlheWE6IDE1LjAwMCBScA0KICAtIFJhc2lvOiAxNS4wMDAgLyA1ID0gMy4wMDANCi0gKlNlbGF0YW4qOg0KICAtIFdha3R1OiA4IGphbQ0KICAtIEJpYXlhOiA4LjAwMCBScA0KICAtIFJhc2lvOiA4LjAwMCAvIDggPSAxLjAwMA0KLSAqVGltdXIqOg0KICAtIFdha3R1OiA2IGphbQ0KICAtIEJpYXlhOiAxMC4wMDAgUnANCiAgLSBSYXNpbzogMTAuMDAwIC8gNiDiiYggMS42NjcNCi0gKkJhcmF0KjoNCiAgLSBXYWt0dTogNyBqYW0NCiAgLSBCaWF5YTogMTIuMDAwIFJwDQogIC0gUmFzaW86IDEyLjAwMCAvIDcg4omIIDEuNzE0DQotICpUZW5nYWgqOg0KICAtIFdha3R1OiA0IGphbQ0KICAtIEJpYXlhOiAxNC4wMDAgUnANCiAgLSBSYXNpbzogMTQuMDAwIC8gNCA9IDMuNTAwDQoNCiMjIyMgUGVuZ2lyaW1hbiBLZWR1YQ0KLSAqVXRhcmEgKFBlbmdpcmltYW4gS2VkdWEpKjoNCiAgLSBXYWt0dTogOSBqYW0NCiAgLSBCaWF5YTogOC41MDAgUnANCiAgLSBSYXNpbzogOC41MDAgLyA5IOKJiCA5NDQNCi0gKlNlbGF0YW4gKFBlbmdpcmltYW4gS2VkdWEpKjoNCiAgLSBXYWt0dTogNyBqYW0NCiAgLSBCaWF5YTogOS41MDAgUnANCiAgLSBSYXNpbzogOS41MDAgLyA3IOKJiCAxLjM1Nw0KLSAqVGltdXIgKFBlbmdpcmltYW4gS2VkdWEpKjoNCiAgLSBXYWt0dTogNSBqYW0NCiAgLSBCaWF5YTogMTEuMDAwIFJwDQogIC0gUmFzaW86IDExLjAwMCAvIDUgPSAyLjIwMA0KLSAqQmFyYXQgKFBlbmdpcmltYW4gS2VkdWEpKjoNCiAgLSBXYWt0dTogNiBqYW0NCiAgLSBCaWF5YTogMTQuNTAwIFJwDQogIC0gUmFzaW86IDE0LjUwMCAvIDYg4omIIDIuNDE3DQotICpUZW5nYWggKFBlbmdpcmltYW4gS2VkdWEpKjoNCiAgLSBXYWt0dTogOCBqYW0NCiAgLSBCaWF5YTogNy44MDAgUnANCiAgLSBSYXNpbzogNy44MDAgLyA4IOKJiCA5NzUNCg0KIyMjIyBQZW5naXJpbWFuIEtldGlnYQ0KLSAqVXRhcmEgKFBlbmdpcmltYW4gS2V0aWdhKSo6DQogIC0gV2FrdHU6IDQgamFtDQogIC0gQmlheWE6IDEyLjAwMCBScA0KICAtIFJhc2lvOiAxMi4wMDAgLyA0ID0gMy4wMDANCi0gKlNlbGF0YW4gKFBlbmdpcmltYW4gS2V0aWdhKSo6DQogIC0gV2FrdHU6IDYgamFtDQogIC0gQmlheWE6IDE2LjAwMCBScA0KICAtIFJhc2lvOiAxNi4wMDAgLyA2IOKJiCAyLjY2Nw0KLSAqVGltdXIgKFBlbmdpcmltYW4gS2V0aWdhKSo6DQogIC0gV2FrdHU6IDUgamFtDQogIC0gQmlheWE6IDguMjAwIFJwDQogIC0gUmFzaW86IDguMjAwIC8gNSA9IDEuNjQwDQotICpCYXJhdCAoUGVuZ2lyaW1hbiBLZXRpZ2EpKjoNCiAgLSBXYWt0dTogNSBqYW0NCiAgLSBCaWF5YTogMTAuNTAwIFJwDQogIC0gUmFzaW86IDEwLjUwMCAvIDUgPSAyLjEwMA0KLSAqVGVuZ2FoIChQZW5naXJpbWFuIEtldGlnYSkqOg0KICAtIFdha3R1OiA2IGphbQ0KICAtIEJpYXlhOiAxMS41MDAgUnANCiAgLSBSYXNpbzogMTEuNTAwIC8gNiDiiYggMS45MTcNCg0KDQojIyMjIExhbmdrYWggNDogTWVuY2FyaSBXaWxheWFoIGRlbmdhbiBFZmlzaWVuc2kgVGVyZW5kYWgNCg0KU2VtYWtpbiByZW5kYWggbmlsYWkgcmFzaW8gZWZpc2llbnNpLCBzZW1ha2luIGVmaXNpZW4gcGVuZ2lyaW1hbiBkaSB3aWxheWFoIHRlcnNlYnV0LiBCZXJpa3V0IGFkYWxhaCBoYXNpbCBwZXJoaXR1bmdhbiByYXNpbyBlZmlzaWVuc2kgdW50dWsgc2V0aWFwIHdpbGF5YWggYmVyZGFzYXJrYW4gcGVuZ2lyaW1hbiBwZXJ0YW1hLCBrZWR1YSwgZGFuIGtldGlnYToNCg0KIyMjIyBQZW5naXJpbWFuIFBlcnRhbWENCi0gKlV0YXJhKjogMy4wMDANCi0gKlNlbGF0YW4qOiAxLjAwMA0KLSAqVGltdXIqOiAxLjY2Nw0KLSAqQmFyYXQqOiAxLjcxNA0KLSAqVGVuZ2FoKjogMy41MDANCg0KIyMjIyBQZW5naXJpbWFuIEtlZHVhDQotICpVdGFyYSo6IDk0NA0KLSAqU2VsYXRhbio6IDEuMzU3DQotICpUaW11cio6IDIuMjAwDQotICpCYXJhdCo6IDIuNDE3DQotICpUZW5nYWgqOiA5NzUNCg0KIyMjIyBQZW5naXJpbWFuIEtldGlnYQ0KLSAqVXRhcmEqOiAzLjAwMA0KLSAqU2VsYXRhbio6IDIuNjY3DQotICpUaW11cio6IDEuNjQwDQotICpCYXJhdCo6IDIuMTAwDQotICpUZW5nYWgqOiAxLjkxNw0KDQojIyMjIEFuYWxpc2lzDQpEYXJpIGhhc2lsIHBlcmhpdHVuZ2FuIGRpIGF0YXMsIGtpdGEgZGFwYXQgbWVsaWhhdCBiYWh3YToNCg0KMS4gKlBlbmdpcmltYW4gUGVydGFtYTogV2lsYXlhaCBkZW5nYW4gZWZpc2llbnNpIHRlcmVuZGFoIGFkYWxhaCAqKlRlbmdhaCogZGVuZ2FuIHJhc2lvIDMuNTAwLg0KDQoyLiAqUGVuZ2lyaW1hbiBLZWR1YTogV2lsYXlhaCBkZW5nYW4gZWZpc2llbnNpIHRlcmVuZGFoIGFkYWxhaCAqKlV0YXJhKiBkZW5nYW4gcmFzaW8gOTQ0Lg0KDQozLiAqUGVuZ2lyaW1hbiBLZXRpZ2E6IFdpbGF5YWggZGVuZ2FuIGVmaXNpZW5zaSB0ZXJlbmRhaCBhZGFsYWggKipVdGFyYSogZGVuZ2FuIHJhc2lvIDMuMDAwLg0KDQojIyMjIEtlc2ltcHVsYW4NCkJlcmRhc2Fya2FuIGFuYWxpc2lzIGRpIGF0YXMsIHdpbGF5YWggeWFuZyBtZW1pbGlraSBlZmlzaWVuc2kgcGVuZ2lyaW1hbiB0ZXJlbmRhaCBkaSBrZXNlbHVydWhhbiBhZGFsYWggKlRlbmdhaCogcGFkYSBwZW5naXJpbWFuIHBlcnRhbWEuIFNlbWVudGFyYSBpdHUsIHVudHVrIHBlbmdpcmltYW4ga2VkdWEgZGFuIGtldGlnYSwgd2lsYXlhaCAqVXRhcmEqIG1lbnVuanVra2FuIGVmaXNpZW5zaSB0ZXJlbmRhaC4gDQoNCkhhbCBpbmkgbWVudW5qdWtrYW4gYmFod2EgZmFrdG9yIGJpYXlhIGRhbiB3YWt0dSBwZW5naXJpbWFuIGJlcnZhcmlhc2kgYW50YXIgd2lsYXlhaCBkYW4gcGVuZ2lyaW1hbiwgZGFuIHBlbnRpbmcgdW50dWsgbWVtcGVydGltYmFuZ2thbiBrZWR1YSBmYWt0b3IgdGVyc2VidXQgZGFsYW0gYW5hbGlzaXMgZWZpc2llbnNpIHBlbmdpcmltYW4uDQoNCg0KIyMgMi4gUmVrb21lbmRhc2kgT3BlcmFzaW9uYWw6DQoNCiMjIyBCZXJkYXNhcmthbiBoYXNpbCBhbmFsaXNpcywgd2lsYXlhaCBtYW5hIHlhbmcgbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbj8NCg0KDQotICoqVGVuZ2FoIChQZW5naXJpbWFuIFBlcnRhbWEpOioqIA0KDQpXaWxheWFoIGluaSBtZW51bmp1a2thbiByYXNpbyBlZmlzaWVuc2kgdGVydGluZ2dpIHNlYmVzYXIgMy41MDAsIHlhbmcgbWVuY2VybWlua2FuIHRpbmdnaW55YSBiaWF5YSBwZXIgdW5pdCBtZXNraXB1biB3YWt0dSBwZW5naXJpbWFuIHRlcmdvbG9uZyBjZXBhdC4gSGFsIGluaSBtZW5ndW5na2Fwa2FuIHBlbHVhbmcgdW50dWsgbWVuZWthbiBiaWF5YSBwZW5naXJpbWFuLiBVcGF5YSB0ZXJzZWJ1dCBkYXBhdCBkaWxha3VrYW4gZGVuZ2FuIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgb3BlcmFzaW9uYWwgbWVsYWx1aSBwZW5nZWxvbGFhbiBsb2dpc3RpayB5YW5nIGxlYmloIGJhaWssIHBlbnllbXB1cm5hYW4gcHJvc2VzIGRhbGFtIHJhbnRhaSBwYXNva2FuLCBzZXJ0YSBwZW5lcmFwYW4ga2ViaWpha2FuIGhhcmdhIHlhbmcgbGViaWggdGVyYXJhaCBkYW4ga29tcGV0aXRpZi4NCg0KLSAqKlV0YXJhIChQZW5naXJpbWFuIEtlZHVhIGRhbiBLZXRpZ2EpOioqIA0KDQpXaWxheWFoIGluaSBtZW5jZXJtaW5rYW4gZmx1a3R1YXNpIGRhbGFtIHRpbmdrYXQgZWZpc2llbnNpIHBlbmdpcmltYW4sIGRlbmdhbiByYXNpbyBlZmlzaWVuc2kgbWVuY2FwYWkgOTQ0IHBhZGEgcGVuZ2lyaW1hbiBrZWR1YSB5YW5nIGN1a3VwIGJhaWssIG5hbXVuIGtlbWJhbGkgbWVsb25qYWsgbWVuamFkaSAzLjAwMCBwYWRhIHBlbmdpcmltYW4ga2V0aWdhLiBQZXJ1YmFoYW4gaW5pIG1lbmVnYXNrYW4gcGVudGluZ255YSB1cGF5YSB1bnR1ayBtZW1hc3Rpa2FuIGtlc3RhYmlsYW4gZWZpc2llbnNpIHBlbmdpcmltYW4gZGkgd2lsYXlhaCB0ZXJzZWJ1dC4NCg0KDQojIyMgUmVrb21lbmRhc2kgdW50dWsgTWVuaW5na2F0a2FuIEVmaXNpZW5zaSBQZW5naXJpbWFuDQoNCkJlcmRhc2Fya2FuIGFuYWxpc2lzIHlhbmcgdGVsYWggZGlsYWt1a2FuLCBiZXJpa3V0IGFkYWxhaCBiZWJlcmFwYSByZWtvbWVuZGFzaSBhbHRlcm5hdGlmIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbiBkaSB3aWxheWFoICpUZW5nYWgqIGRhbiAqVXRhcmEqOg0KDQoxLiAqKkludGVncmFzaSBTaXN0ZW0gTG9naXN0aWsqKjoNCiAgIC0gTWVuZ2Fkb3BzaSBzaXN0ZW0gaW50ZWdyYXNpIGxvZ2lzdGlrIHlhbmcgbWVuZ2h1YnVuZ2thbiBiZXJiYWdhaSBhc3BlayBwZW5naXJpbWFuLCBtdWxhaSBkYXJpIG1hbmFqZW1lbiBpbnZlbnRhcmlzIGhpbmdnYSBkaXN0cmlidXNpLiBIYWwgaW5pIG1lbXVuZ2tpbmthbiBhbGlyYW4gaW5mb3JtYXNpIHlhbmcgbGViaWggbGFuY2FyIGRhbiBtZW1wZXJjZXBhdCBwcm9zZXMgcGVuZ2FtYmlsYW4ga2VwdXR1c2FuLg0KICAgLSBQZXJ0aW1iYW5na2FuIHBlbmdndW5hYW4gcGxhdGZvcm0geWFuZyBtZW5nZ2FidW5na2FuIGRhdGEgZGFyaSBiZXJiYWdhaSBzdW1iZXIgdW50dWsgbWVtYmVyaWthbiBnYW1iYXJhbiB5YW5nIGxlYmloIGxlbmdrYXAgdGVudGFuZyByYW50YWkgcGFzb2thbi4NCg0KMi4gKipQZW5nZW1iYW5nYW4gSW5mcmFzdHJ1a3R1cioqOg0KICAgLSBJbnZlc3Rhc2kgZGFsYW0gcGVuaW5na2F0YW4gaW5mcmFzdHJ1a3R1ciB0cmFuc3BvcnRhc2kgZGkgd2lsYXlhaCB5YW5nIHRlcnBlbmdhcnVoLCBzZXBlcnRpIHBlcmJhaWthbiBqYWxhbiBhdGF1IHBlbmdlbWJhbmdhbiBqYWx1ciBwZW5naXJpbWFuIGtodXN1cy4gSW5pIGRhcGF0IG1lbmd1cmFuZ2kgd2FrdHUgcGVuZ2lyaW1hbiBkYW4gbWVuaW5na2F0a2FuIGtlc2VsYW1hdGFuIGtlbmRhcmFhbi4NCiAgIC0gQmVya29sYWJvcmFzaSBkZW5nYW4gcGVtZXJpbnRhaCBkYWVyYWggdW50dWsgbWVuZ2lkZW50aWZpa2FzaSBkYW4gbWVueWVsZXNhaWthbiBrZW5kYWxhIGluZnJhc3RydWt0dXIgeWFuZyBtZW5naGFtYmF0IGVmaXNpZW5zaSBwZW5naXJpbWFuLg0KDQozLiAqKk9wdGltYWxpc2FzaSBTdG9rIGRhbiBJbnZlbnRhcmlzKio6DQogICAtIExha3VrYW4gYW5hbGlzaXMgcGVybWludGFhbiB1bnR1ayBtZW5nb3B0aW1hbGthbiB0aW5na2F0IHN0b2sgZGFuIG1lbmd1cmFuZ2kgYmlheWEgcGVueWltcGFuYW4uIFBhc3Rpa2FuIHByb2R1ayB0ZXJzZWRpYSBkaSBsb2thc2kgeWFuZyB0ZXBhdCB1bnR1ayBtZW1wZXJjZXBhdCBwcm9zZXMgcGVuZ2lyaW1hbi4NCiAgIC0gSW1wbGVtZW50YXNpa2FuIHN0cmF0ZWdpIGp1c3QtaW4tdGltZSAoSklUKSB1bnR1ayBtZW1pbmltYWxrYW4gaW52ZW50YXJpcyBkYW4gbWVtYWtzaW1hbGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbi4NCg0KNC4gKipQZW5lcmFwYW4gUHJpbnNpcCBMZWFuIExvZ2lzdGljcyoqOg0KICAgLSBUZXJhcGthbiBwcmluc2lwIGxlYW4gbG9naXN0aWNzIHVudHVrIG1lbmdpZGVudGlmaWthc2kgZGFuIG1lbmdoaWxhbmdrYW4gcGVtYm9yb3NhbiBkYWxhbSBwcm9zZXMgcGVuZ2lyaW1hbi4gRm9rdXMgcGFkYSBwZW5ndXJhbmdhbiB3YWt0dSB0dW5nZ3UsIHBlbmd1cmFuZ2FuIGxhbmdrYWggeWFuZyB0aWRhayBwZXJsdSwgZGFuIHBlbmdvcHRpbWFsYW4gcGVuZ2d1bmFhbiBzdW1iZXIgZGF5YS4NCiAgIC0gTGliYXRrYW4gc2VsdXJ1aCB0aW0gZGFsYW0gcHJvc2VzIHBlcmJhaWthbiBiZXJrZWxhbmp1dGFuIHVudHVrIG1lbWFzdGlrYW4gc2VtdWEgYW5nZ290YSB0aW0gbWVtYWhhbWkgdHVqdWFuIGVmaXNpZW5zaS4NCg0KNS4gKipQZW5pbmdrYXRhbiBLb211bmlrYXNpIGRhbiBLb29yZGluYXNpKio6DQogICAtIE1lbWJhbmd1biBzYWx1cmFuIGtvbXVuaWthc2kgeWFuZyBsZWJpaCBiYWlrIGFudGFyYSBzZW11YSBwaWhhayB0ZXJrYWl0IGRhbGFtIHByb3NlcyBwZW5naXJpbWFuLCB0ZXJtYXN1ayBwZW5nZW11ZGksIHB1c2F0IGRpc3RyaWJ1c2ksIGRhbiBwZWxhbmdnYW4uIEluaSBkYXBhdCBtZW5ndXJhbmdpIGtlc2FsYWhhbiBkYW4gbWVuaW5na2F0a2FuIHJlc3BvbnMgdGVyaGFkYXAgbWFzYWxhaCB5YW5nIG11bmN1bC4NCiAgIC0gTWVuZ2d1bmFrYW4gYXBsaWthc2kgYXRhdSBwbGF0Zm9ybSBrb2xhYm9yYXNpIHVudHVrIG1lbWFzdGlrYW4gc2VtdWEgcGloYWsgbWVtaWxpa2kgYWtzZXMga2UgaW5mb3JtYXNpIHRlcmtpbmkgbWVuZ2VuYWkgcGVuZ2lyaW1hbi4NCg0KRGVuZ2FuIG1lbmVyYXBrYW4gcmVrb21lbmRhc2kgaW5pLCBkaWhhcmFwa2FuIHBlcnVzYWhhYW4gZGFwYXQgbWVuY2FwYWkgZWZpc2llbnNpIHBlbmdpcmltYW4geWFuZyBsZWJpaCB0aW5nZ2kgZGkgd2lsYXlhaCBUZW5nYWggZGFuIFV0YXJhLCB5YW5nIHBhZGEgZ2lsaXJhbm55YSBha2FuIG1lbmluZ2thdGthbiBraW5lcmphIG9wZXJhc2lvbmFsIGRhbiBrZXB1YXNhbiBwZWxhbmdnYW4uDQoNCiMjIyBLZXNpbXB1bGFuDQpEZW5nYW4gbWVuZXJhcGthbiByZWtvbWVuZGFzaSBpbmksIGRpaGFyYXBrYW4gYmlheWEgZGFuIHdha3R1IHBlbmdpcmltYW4gZGFwYXQgZGlrdXJhbmdpIHNlY2FyYSBzaWduaWZpa2FuLiBTdHJhdGVnaSB5YW5nIHRlcmVuY2FuYSBkYW4gaW5vdmF0aWYgYWthbiBtZW1iYW50dSBkYWxhbSBtZW5pbmdrYXRrYW4gZWZpc2llbnNpIG9wZXJhc2lvbmFsIGRhbiBtZW1iZXJpa2FuIGxheWFuYW4geWFuZyBsZWJpaCBiYWlrIGtlcGFkYSBwZWxhbmdnYW4sIHNla2FsaWd1cyBtZW5qYWdhIGJpYXlhIHRldGFwIHJlbmRhaC4gVXBheWEgaW5pIGFrYW4gYmVya29udHJpYnVzaSBwYWRhIHBlcnR1bWJ1aGFuIGJpc25pcyB5YW5nIGJlcmtlbGFuanV0YW4gZGFuIGtlcHVhc2FuIHBlbGFuZ2dhbiB5YW5nIGxlYmloIHRpbmdnaS4NCg0KDQojIyAzLktpbmVyamEgQmVyZGFzYXJrYW4gSmVuaXMgQmFyYW5nOg0KDQojIyMgQW5hbGlzaXMgS2luZXJqYSBQZW5naXJpbWFuIEJlcmRhc2Fya2FuIEplbmlzIEJhcmFuZyBkYW4gV2lsYXlhaA0KDQoxLiAqKkJhcmFuZyBFbGVrdHJvbmlrKio6DQogICAtICpXaWxheWFoIFV0YXJhKjogRGVuZ2FuIHBlbmdpcmltYW4gMjAwIHVuaXQgZGFsYW0gd2FrdHUgNSBqYW0sIGJpYXlhIHBlciB1bml0IGFkYWxhaCBScCAxNSwwMDAuDQogICAtICpXaWxheWFoIFRlbmdhaCo6IE1lbmNhdGF0IHBlbmdpcmltYW4gdGVyYmVzYXIgc2ViYW55YWsgMjUwIHVuaXQgZGVuZ2FuIHdha3R1IHRlcmNlcGF0IDQgamFtIGRhbiBiaWF5YSBwZXIgdW5pdCB5YW5nIGtvbXBldGl0aWYgc2ViZXNhciBScCAxNCwwMDAuDQogICAtICpXaWxheWFoIEJhcmF0KjogTWVuY2FwYWkgMTgwIHVuaXQgZGFsYW0gd2FrdHUgNiBqYW0gZGVuZ2FuIGJpYXlhIHBlciB1bml0IFJwIDE0LDUwMC4NCiAgIC0gKldpbGF5YWggU2VsYXRhbio6IE1lbWlsaWtpIGJpYXlhIHRlcnRpbmdnaSBwZXIgdW5pdCBzZWJlc2FyIFJwIDE2LDAwMCwgbWVza2lwdW4ganVtbGFoIHVuaXQgeWFuZyBkaWtpcmltIGN1a3VwIGJhbnlhayAoMjUwIHVuaXQpIGRhbiB3YWt0dSBwZW5naXJpbWFuIHlhbmcgcmVsYXRpZiBjZXBhdCAoNiBqYW0pLg0KDQoyLiAqKlBha2FpYW4qKjoNCiAgIC0gKldpbGF5YWggVXRhcmEqOiBNZW51bmp1a2thbiBwZW5naXJpbWFuIDMwMCB1bml0LCB0ZXRhcGkgZGVuZ2FuIHdha3R1IHlhbmcgbGViaWggbGFtYSAoOSBqYW0pIGRhbiBiaWF5YSBScCA4LDUwMCBwZXIgdW5pdC4NCiAgIC0gKldpbGF5YWggVGVuZ2FoKjogTWVtaWxpa2kgcGVuZ2lyaW1hbiAzNTAgdW5pdCBkZW5nYW4gd2FrdHUgOCBqYW0gZGFuIGJpYXlhIHRlcmVuZGFoIFJwIDcsODAwLg0KICAgLSAqV2lsYXlhaCBTZWxhdGFuKjogTWVuZ2lyaW1rYW4gMTUwIHVuaXQgZGFsYW0gd2FrdHUgOCBqYW0gZGVuZ2FuIGJpYXlhIFJwIDgsMDAwLg0KICAgLSAqV2lsYXlhaCBUaW11cio6IFBlbmdpcmltYW4gMTkwIHVuaXQgZGFsYW0gd2FrdHUgNSBqYW0gZGVuZ2FuIGJpYXlhIHBlciB1bml0IFJwIDgsMjAwLg0KDQozLiAqKk1ha2FuYW4qKjoNCiAgIC0gKldpbGF5YWggVGltdXIqOiBNZW5naXJpbWthbiAxODAgdW5pdCBkYWxhbSA2IGphbSBkZW5nYW4gYmlheWEgUnAgMTAsMDAwIHBlciB1bml0Lg0KICAgLSAqV2lsYXlhaCBTZWxhdGFuKjogTWVuZ2lyaW1rYW4gMjIwIHVuaXQgZGFsYW0gNyBqYW0gZGVuZ2FuIGJpYXlhIFJwIDksNTAwLg0KICAgLSAqV2lsYXlhaCBCYXJhdCo6IE1lbmNhdGF0IDEzMCB1bml0IGRlbmdhbiB3YWt0dSA1IGphbSBkYW4gYmlheWEgUnAgMTAsNTAwLg0KDQo0LiAqKlBlcmFsYXRhbioqOg0KICAgLSAqV2lsYXlhaCBCYXJhdCo6IE1lbmdpcmlta2FuIDEyMCB1bml0IGRhbGFtIDcgamFtIGRlbmdhbiBiaWF5YSBScCAxMiwwMDAuDQogICAtICpXaWxheWFoIFRpbXVyKjogTWVuZ2lyaW1rYW4gMTQwIHVuaXQgZGFsYW0gd2FrdHUgNSBqYW0gZGVuZ2FuIGJpYXlhIFJwIDExLDAwMC4NCiAgIC0gKldpbGF5YWggVGVuZ2FoKjogTWVuZ2lyaW1rYW4gMTgwIHVuaXQgZGFsYW0gd2FrdHUgNiBqYW0gZGVuZ2FuIGJpYXlhIFJwIDExLDUwMC4NCiAgIC0gKldpbGF5YWggVXRhcmEqOiBNZW5jYXRhdCAxNzAgdW5pdCBkYWxhbSB3YWt0dSB0ZXJjZXBhdCA0IGphbSBkZW5nYW4gYmlheWEgUnAgMTIsMDAwLg0KDQojIyMgS2VzaW1wdWxhbg0KQmVyZGFzYXJrYW4gYW5hbGlzaXMgZGkgYXRhcywgZGFwYXQgZGlzaW1wdWxrYW46DQoNCi0gKipXaWxheWFoIGRlbmdhbiB3YWt0dSBwZW5naXJpbWFuIGxlYmloIGNlcGF0Kio6IA0KICAtICpUZW5nYWgqIChFbGVrdHJvbmlrKSBkYW4gKlV0YXJhKiAoUGVyYWxhdGFuKSBkZW5nYW4gd2FrdHUgcGVuZ2lyaW1hbiA0IGphbS4NCg0KLSAqKldpbGF5YWggZGVuZ2FuIGJpYXlhIHBlciB1bml0IGxlYmloIHJlbmRhaCoqOg0KICAtICpTZWxhdGFuKiAoUGFrYWlhbikgZGVuZ2FuIGJpYXlhIHBlciB1bml0IFJwIDguMDAwIA0KDQo=