Tugas Week 10 ~ Essential of Probability

1 . Pendahuluan

Probabilitas adalah dasar penting dalam statistik karena membantu kita memahami hal-hal yang sifatnya tidak pasti. Dengan probabilitas, kita tidak hanya menebak, tetapi bisa menghitung seberapa besar kemungkinan suatu kejadian terjadi. Konsep ini sangat berguna untuk membaca pola dalam data, memahami hasil percobaan, dan membuat keputusan yang lebih tepat berdasarkan bukti.

Bagian ini menjelaskan beberapa prinsip dasar dalam teori probabilitas, yaitu:

  • Konsep Dasar Probabilitas meliputi ruang sampel, kejadian, dan aturan komplemen. Intinya, bagian ini menjelaskan bagaimana probabilitas dibentuk dan bagaimana kita menafsirkan suatu peluang.

  • Peristiwa Independen dan Dependen menjelaskan kapan suatu kejadian memengaruhi kejadian lainnya, dan kapan tidak. Ini penting untuk membuat model dan prediksi yang lebih akurat.

  • Probabilitas Bersyarat dan Teorema Bayes menjelaskan peluang suatu kejadian terjadi dengan syarat kejadian lain telah terjadi. Ini adalah konsep krusial untuk memperbarui peluang berdasarkan informasi baru (disebut juga probabilitas posterior).

  • Gabungan dan Irisan Kejadian membahas peluang terjadinya minimal satu dari beberapa kejadian (gabungan), atau peluang dua kejadian terjadi bersamaan (irisan). Jadi kita melihat kemungkinan bahwa setidaknya satu kejadian terjadi.

  • Peristiwa Saling Lepas (Eksklusif) dan Lengkap menjelaskan bagaimana berbagai kejadian berhubungan dalam ruang sampel apakah mereka bisa terjadi bersamaan atau tidak (saling lepas) dan bagaimana hal itu memengaruhi perhitungan peluang.

  • Percobaan Binomial dan Distribusi Binomial digunakan untuk menganalisis percobaan yang dilakukan berulang dan hanya punya dua hasil (misalnya sukses/gagal). Konsep ini sering dipakai di penelitian ilmiah, uji keandalan, dan survei.

2 . Fundamental Concepts

Probabilitas adalah ilmu matematika yang mengukur kemungkinan atau peluang terjadinya suatu peristiwa yang tidak pasti. Ini adalah alat yang memungkinkan kita untuk bergerak dari sekadar menebak menjadi perhitungan berdasarkan bukti.

2.1 . Rangkuman materi dari video tersebut

  1. Probabilitas : Probabilitas Sederhana (\(P(E)\)): Ini adalah konsep paling mendasar, yaitu peluang atau kemungkinan suatu kejadian akan terjadi.Sederhana dihitung dengan membandingkan hasil yang kita inginkan dengan semua hasil yang mungkin.Pentingnya: Probabilitas mengubah ketidakpastian menjadi fondasi dari seluruh teori probabilitas. Ini menjelaskan bagaimana kita mendefinisikan. Ini adalah peluang dan apa saja unsur-unsur yang membentuk perhitungan tersebut.Angka yang terukur (antara 0 hingga 1).

Rumus Inti:\[P(E) = \frac{\text{Jumlah Hasil yang Menguntungkan}}{\text{Jumlah Total Hasil yang Mungkin}}\]

Contoh: Peluang mendapatkan sisi Ekor saat melempar koin.Hasil menguntungkan (Ekor): 1Total Hasil: 2 (Kepala dan Ekor) \(P(\text{Ekor}) = 1/2 = 0.5\)

  1. Ruang Sampel (Sample Space, \(S\)): Ruang Sampel adalah koleksi lengkap dari semua hasil yang mungkin terjadi dari suatu percobaan. Ini adalah penentu nilai penyebut (pembagi) dalam rumus probabilitas.Pentingnya: Ruang sampel mendefinisikan “alam semesta” dari percobaan kita. Tanpa mendefinisikan \(S\), kita tidak bisa tahu total kemungkinan yang ada. Contoh:Percobaan melempar sebuah dadu enam sisi: \[S = \{1, 2, 3, 4, 5, 6\}\] Percobaan melempar koin dua kali : \[S = \{\text{HH,HT,TH,TT}\}\]

  2. Kejadian (Event, \(E\)):Kejadian adalah satu set hasil spesifik dari ruang sampel yang kita amati atau kita hitung peluangnya. Ini adalah penentu nilai pembilang dalam rumus probabilitas.Pentingnya: Kejadian adalah fokus perhitungan kita. Contoh (dari pelemparan dadu):

Kejadian A: Munculnya bilangan prima. \(A = \{2, 3, 5\}\) Kejadian B: Munculnya bilangan lebih dari 4. \(B = \{5, 6\}\)

  1. Aturan Komplemen (Complement Rule):Aturan Komplemen sangat berguna untuk mencari peluang suatu kejadian TIDAK terjadi. Komplemen (\(A^c\) atau \(A'\)) mencakup semua hasil di ruang sampel yang bukan merupakan kejadian \(A\).

Logika: Karena jumlah total probabilitas semua hasil dalam ruang sampel adalah 1, maka peluang \(A\) terjadi ditambah peluang \(A\) tidak terjadi pasti sama dengan 1.

Rumus:\[\mathbf{P(A^c) = 1 - P(A)}\]

Contoh: Jika peluang mendapatkan angka 6 adalah \(1/6\), maka peluang tidak mendapatkan angka 6 adalah \(1 - 1/6 = 5/6\).

Bisa di lihat di visualisai berikut:

3 . Independent and Dependent

3.1 . Rangkuman materi dari video tersebut

  1. Peristiwa Independen (Independent Events): adalah dua kejadian di mana hasil dari kejadian pertama sama sekali tidak memengaruhi probabilitas terjadinya kejadian kedua. Penjelasan detail:

Sifat hasil kedua kejadian berdiri sendiri. Kejadian A dan B tidak memiliki keterkaitan sebab akibat.

Contoh Inti: Melempar dadu dan melempar koin. Jika Anda mendapatkan angka 6 pada dadu, peluang koin mendarat di sisi Kepala tetap \(1/2\) (50%). Hasil dadu tidak mengubah probabilitas koin.

Kapan Sering terjadi: Dalam percobaan yang dilakukan dengan pengembalian (misalnya, mengambil kartu, dicatat, lalu dikembalikan lagi) atau percobaan yang secara fisik terpisah (seperti dadu dan koin).

  • Aturan Perkalian untuk Independen:Untuk menghitung peluang kedua kejadian independen terjadi bersamaan (A DAN B), kita cukup mengalikan peluang masing-masing kejadian. \[\mathbf{P(A \text{ dan } B) = P(A) \times P(B)}\] Contoh Perhitungan: Peluang melempar dadu mendapatkan 5 (\(\mathbf{1/6}\)) DAN mendapatkan Kepala pada koin (\(\mathbf{1/2}\)). \[P(5 \text{ dan H}) = \frac{1}{6} \times \frac{1}{2} = \frac{1}{12} \text{ (atau sekitar 0.0833)}\]
  1. Peristiwa Dependen (Dependent Events): Peristiwa Dependen (atau Bersyarat) adalah dua kejadian di mana hasil dari kejadian pertama memengaruhi probabilitas terjadinya kejadian kedua.Penjelasan Detail:

Sifat: Kejadian pertama mengubah komposisi Ruang Sampel (jumlah total hasil yang mungkin) untuk kejadian kedua.

Contoh Inti:Mengambil dua kelereng/kartu tanpa pengembalian .Jika Anda memiliki 10 kelereng, dan Anda mengambil 1 kelereng (Kejadian A), maka untuk Kejadian B (pengambilan kelereng kedua), total kelereng yang tersisa hanya 9. Ruang sampel telah berubah peerubahan jumlah total ini membuat probabilitas kedua berubah, menjadikannya kejadian dependen .

Kapan Sering Terjadi: Dalam percobaan yang dilakukan tanpa pengembalian. Aturan Perkalian untuk Dependen (Probabilitas Bersyarat):Untuk menghitung peluang dua kejadian dependen terjadi secara berurutan, kita menggunakan Probabilitas Bersyarat.

Rumusnya adalah: \[\mathbf{P(A \text{ dan } B) = P(A) \times P(B|A)}\]

Di mana \(\mathbf{P(B|A)}\) dibaca: “Peluang Kejadian B terjadi, setelah diketahui Kejadian A sudah terjadi.

“Contoh Perhitungan: Peluang mengambil kelereng Hijau (A) lalu kelereng Biru (B), tanpa pengembalian. (Awal: 7 Hijau, 3 Biru; Total 10) .Peluang A (Ambil Hijau Pertama): \[P(A) = \frac{\text{7 (Hijau)}}{\text{10 (Total)}}\] Peluang B|A (Ambil Biru Kedua, setelah Hijau diambil):Total kelereng sisa 9.Jumlah Biru tetap 3. \[P(B|A) = \frac{\text{3 (Biru)}}{\text{9 (Total Sisa)}}\]

Peluang A dan B: \[P(A \text{ dan } B) = \frac{7}{10} \times \frac{3}{9} = \frac{21}{90} = \frac{7}{30} \text{ (atau sekitar 0.233)}\]

Penting: Perubahan probabilitas pada kejadian dependen terjadi karena kejadian pertama mengurangi ukuran ruang sampel untuk kejadian kedua.

Berikut bisa lihat video ini:

4 . Union of Events

4.1 . Rangkuman materi dari video tersebut

Peluang Gabungan Kejadian (\(A\) atau \(B\)).Inti dari video ini adalah cara menghitung peluang bahwa setidaknya satu dari dua kejadian (Kejadian A atau Kejadian B) akan terjadi. Dalam probabilitas,kata kunci “ATAU” (dalam bahasa Inggris: or) merujuk pada operasi Gabungan (Union, \(\cup\))

  1. Kapan Kita menggunakan Aturan Gabungan?

Kita menggunakan Aturan Gabungan ketika kita tertarik pada tiga kemungkinan hasil:Kejadian A terjadi, tetapi B tidak;Kejadian B terjadi, tetapi A tidak;Kedua kejadian (A dan B) terjadi bersamaan.

  1. Aturan Aditif Umum (The General Addition Rule): Video ini memperkenalkan rumus utama untuk menghitung peluang gabungan dua kejadian, yaitu Aturan Aditif Umum : \[\mathbf{P(A \cup B) = P(A) + P(B) - P(A \cap B)}\]

Penjelasan Sederhana mengenai rumus: \(P(A) + P(B)\): menghitung total peluang Kejadian A dan total peluang Kejadian

\(P(A \cap B)\) : Ini adalah bagian yang paling penting. Irisan (\(A \cap B\)) adalah peluang A dan B terjadi bersamaan. Ketika Anda menjumlahkan \(P(A)\) dan \(P(B)\), hasil-hasil di area irisan (\(\mathbf{A \cap B}\)) telah dihitung dua kali (sekali sebagai bagian dari A, dan sekali lagi sebagai bagian dari B). Untuk menghindari penghitungan ganda (disebut duplicate outcomes), kita harus menguranginya satu kali.

Contoh pelemparan dua Dddu. Video ini menggunakan contoh pelemparan dua dadu (Ruang Sampel \(S\) = 36 hasil) untuk menjelaskan konsep Gabungan A. Komponen Kejadian Video mendefinisikan dua kejadian spesifik: Kejadian Deskripsi Jumlah Hasil (Pembilang)Probabilitas Sederhana Kejadian A.

Munculnya dua angka genap hasil (e.g., (2,2), (2,4)…) \(P(A) = 9/36\) Kejadian B.Munculnya setidaknya satu angka 211 hasil (e.g., (1,2), (2,1), (2,2)…) \(P(B) = 11/36\). Menghitung Irisan (Komponen Pengurang).Sebelum menghitung Gabungan (\(A\) atau \(B\)), kita harus mencari Irisan (\(A\) dan \(B\)).

Definisi Irisan (\(A \cap B\)): Peluang mendapatkan dua angka genap DAN setidaknya satu angka 2. Perhitungan: Kita mencari hasil mana saja dari 36 hasil yang memenuhi kedua syarat tersebut.Hasil-hasil tersebut adalah: \((2, 2)\), \((2, 4)\), \((2, 6)\), \((4, 2)\), dan \((6, 2)\). Hasil Irisan: Terdapat 5 hasil yang tumpang tindih.\[P(A \cap B) = 5/36\]Perhitungan Gabungan akhir sekarang kita masukkan semua komponen ke dalam Aturan Aditif Umum untuk mencari peluang “Dua Angka Genap ATAU Setidaknya Satu Angka 2”: Peluang A + Peluang B:\[\frac{9}{36} + \frac{11}{36} = \frac{20}{36}\] Kurangi Irisan (Penghitungan Ganda):\[\frac{20}{36} - \frac{5}{36} = \frac{15}{36}\] Hasil Peluang Gabungan Kejadian (\(A \cup B\)) adalah 15/36.

  1. Kasus Khusus: Peristiwa Saling Lepas (Mutually Exclusive)Jika dua kejadian saling lepas (mutually exclusive), artinya mereka tidak mungkin terjadi bersamaan (tidak ada irisan).Jika \(A\) dan \(B\) Saling Lepas, maka \(\mathbf{P(A \cap B) = 0}\).

Rumus Sederhana: \[P(A \cup B) = P(A) + P(B)\](Komponen pengurang (\(P(A \cap B)\)) dihilangkan karena nilainya nol).

Konsep Gabungan ini memastikan bahwa ketika menjumlahkan peluang, setiap hasil unik dari ruang sampel dihitung tepat satu kali, yang merupakan prinsip dasar probabilitas.

Berikut bisa lihat visualisasi ini:

5 . Exclusive and Exhausive

5.1 . Rangkuman materi dari video tersebut

  1. Peristiwa Saling Lepas (Mutually Exclusive Events):Saling Lepas artinya dua kejadian tidak munking terjadi secara bersamaan. Jika yang satu terjadi, maka yang lainnya otomatis tidak terjadi.

Penjelasan Sederhana: Bayangkan dua kejadian tersebut seperti dua kursi yang hanya bisa diduduki oleh satu orang. Jika Kejadian A sudah duduk, Kejadian B tidak bisa ikut duduk di waktu yang sama. Tidak ada irisan atau tumpang tindih di antara keduanya. Karakteristik kunci:Irisan Nol: Peluang terjadinya A dan B bersamaan adalah nol.\[\mathbf{P(A \cap B) = 0}\] Aturan Penjumlahan Sederhana: Karena tidak ada yang tumpang tindih yang perlu dikurangi (tidak ada penghitungan ganda), rumus gabungan (A atau B) menjadi sangat sederhana. \[\mathbf{P(A \cup B) = P(A) + P(B)}\] Contoh (Melempar Dadu Sekali):Kejadian A: Munculnya angka 1. (\(P(A) = 1/6\)) Kejadian B : Munculnya bilangan genap. (\(\{2, 4, 6\}\), \(P(B) = 3/6\))

Analisis: Apakah mungkin mendapatkan angka 1 dan bilangan genap pada lemparan yang sama? Tentu tidak.

Maka, \(A\) dan \(B\) adalah Saling Lepas, dan \(P(A \cap B) = 0\). Peluang A ATAU B: \(P(A) + P(B) = 1/6 + 3/6 = 4/6\)

  1. Peristiwa Lengkap atau Tuntas (Exhaustive Events) Lengkap (atau Tuntas) artinya gabungan dari semua kejadian yang kita definisikan mencakup seluruh Ruang Sampel (S). Ini berarti tidak ada satu pun hasil yang mungkin luput atau tertinggal di luar kejadian-kejadian tersebut.Penjelasan Sederhana: Jika Anda menggabungkan semua kejadian yang ada, total peluangnya harus sama dengan 1 (atau 100%), karena gabungan tersebut mencakup semua kemungkinan hasil yang bisa terjadi dalam percobaan.

Karakteristik Kunci:

Gabungan Penuh: Gabungan seluruh kejadian adalah Ruang Sampel (\(S\)).\[\mathbf{P(A \cup B \cup \dots) = 1}\]Contoh (Melempar Dadu Sekali):

Kejadian A: Munculnya bilangan ganjil. (\(\{1, 3, 5\}\), \(P(A) = 3/6\))

Kejadian B: Munculnya bilangan genap. (\(\{2, 4, 6\}\), \(P(B) = 3/6\))

Analisis: Jika digabungkan, \(A \cup B = \{1, 2, 3, 4, 5, 6\}\), yang merupakan seluruh Ruang Sampel.

Peluang Gabungan: \(P(A) + P(B) = 3/6 + 3/6 = 6/6 = 1\).

  1. Peristiwa Saling Lepas DAN Lengkap (Partition) Ketika sebuah set kejadian memenuhi kedua kriteria di atas yaitu, tidak ada yang tumpang tindih dan gabungannya mencakup seluruh ruang sampel maka kejadian-kejadian tersebut disebut Partisi (Partition) dari ruang sampel.

Penjelasan Sederhana:Ini adalah pembagian Ruang Sampel menjadi beberapa “kotak” yang rapi. Setiap hasil yang mungkin pasti masuk ke dalam salah satu kotak, dan tidak ada hasil yang masuk ke lebih dari satu kotak.

Karakteristik Partisi: Saling Lepas: \(P(A \cap B) = 0\)Lengkap: \(P(A) + P(B) + \dots = 1\)

Contoh (Komplemen):Hubungan antara suatu kejadian \(A\) dan komplemennya (\(A^c\)) adalah contoh paling sempurna dari Partisi: Kejadian A: Anda lulus ujian.Kejadian \(A^c\) (Komplemen): Anda tidak lulus ujian.Saling Lepas? Ya, Anda tidak mungkin lulus dan tidak lulus secara bersamaan.Lengkap? Ya, Anda pasti akan lulus atau tidak lulus. Kedua kemungkinan ini mencakup 100% dari semua hasil yang mungkin.

Berikut bisa lihat visualisasi ini:

6 . Binominal Experiment

6.1 . Rangkuman materi dari video tersebut

Probabilitas Binomial adalah cara menghitung peluang terjadinya sejumlah keberhasilan (success) tertentu dalam serangkaian percobaan yang diulang. Kata “Bi” (Binomial) berarti dua, merujuk pada fakta bahwa setiap percobaan hanya memiliki dua hasil yang mungkin: Sukses atau Gagal.

  1. Empat Kondisi Percobaan Binomial (Syarat Wajib) Sebuah percobaan hanya bisa disebut Percobaan Binomial jika memenuhi empat syarat ketat berikut: Contoh (Melempar Koin n=3)1. Jumlah Percobaan Tetap (Fixed \(n\))Percobaan harus diulang dalam jumlah yang sudah ditentukan (fixed) dan tidak berubah.\(n=3\) karena koin dilempar sebanyak 3 kali.

  2. Hanya dua hasil setiap ulangan percobaan hanya memiliki dua hasil: Sukses (S) atau Gagal (F).Sukses (S) = Mendapat Kepala (H). Gagal (F) = Mendapat Ekor (T).

  3. Peluang Sukses Konstan (\(p\))Probabilitas Sukses (\(p\)) harus sama di setiap ulangan percobaan. \(P(\text{Kepala}) = 0.5\), dan nilai ini tidak berubah pada lemparan ke-1, ke-2, atau ke-3.

  4. Independen hasil dari satu percobaan tidak memengaruhi hasil dari percobaan berikutnya.Hasil lemparan pertama tidak mengubah peluang hasil lemparan kedua. Jika percobaan melibatkan pengambilan tanpa pengembalian, syarat (3) dan (4) biasanya dilanggar, dan itu bukan lagi percobaan Binomial. Menghitung Probabilitas Binomial setelah memastikan percobaan adalah Binomial, ada dua cara untuk menghitung peluang, yang keduanya menghasilkan jawaban yang sama.

Cara 1: Pendekatan Enumerasi (Mendaftar Semua Kemungkinan) metode ini dilakukan dengan mendaftar semua urutan hasil yang mungkin mencapai jumlah sukses (\(k\)) yang diinginkan, kemudian menjumlahkan peluang setiap urutan tersebut:

Langkah 1: Tentukan semua urutan yang mungkin. Contoh: Peluang mendapat tepat 1 Kepala (\(k=1\)) dalam 3 lemparan (\(n=3\)).

Urutan yang mungkin adalah: \(\mathbf{HFF}\), \(\mathbf{FHF}\), dan \(\mathbf{FFH}\). (Total ada 3 cara).

Langkah 2: Hitung peluang setiap urutan.\(P(\mathbf{HFF}) = P(H) \times P(F) \times P(F) = 0.5 \times 0.5 \times 0.5 = 0.125\) Karena setiap urutan memiliki 1 Sukses (H) dan 2 Gagal (F), peluangnya pasti sama: 0.125.

Langkah 3: Jumlahkan peluang semua urutan.

\(P(\text{tepat } 1H) = 0.125 + 0.125 + 0.125 = \mathbf{0.375}\) Cara 2: Menggunakan Rumus Binomial untuk kasus yang lebih kompleks (misalnya, 10 kali ulangan), mendaftar semua kemungkinan urutan akan memakan waktu. Rumus Binomial adalah jalan pintas yang elegan untuk menghitung hasilnya.

Rumus Binomial:\[\mathbf{P(X = k) = \binom{n}{k} \cdot p^k \cdot (1-p)^{n-k}}\]

Penjelasan Komponen Rumus:

Komponen Nama

Keterangan Fungsi\(\binom{n}{k}\)Kombinasi (n choose k) Dibaca: “Jumlah cara memilih \(k\) sukses dari \(n\) percobaan.”Menghitung jumlah total urutan yang mungkin (menggantikan Langkah 1 di atas).\(p^k\) Peluang Sukses \(p\) adalah peluang sukses, dipangkatkan dengan jumlah sukses yang diinginkan (\(k\)).Menghitung peluang terjadinya \(k\) kali Sukses \((1-p)^{n-k}\) Peluang Gagal\((1-p)\) adalah peluang Gagal (sering dinotasikan sebagai \(q\)), dipangkatkan dengan jumlah Gagal yang tersisa (\(n-k\)).Menghitung peluang terjadinya \((n-k)\) kali Gagal.

Contoh Perhitungan dengan Rumus:Melanjutkan contoh kelereng (ambil tepat 2 Hijau (\(k=2\)) dari 5 kali ambil (\(n=5\)) dengan pengembalian):

\(n=5\)\(k=2\)\(p = P(\text{Hijau}) = 2/10 = 0.2\) \(1-p = P(\text{Bukan Hijau}) = 0.8\)

Hitung Kombinasi (\(\binom{n}{k}\)):\[\binom{5}{2} = 10\] (Ini berarti ada 10 urutan berbeda yang mungkin, seperti yang ditemukan pada contoh video)

Hitung Peluang:\[P(X=2) = 10 \cdot (0.2)^2 \cdot (0.8)^{5-2}\]\[P(X=2) = 10 \cdot (0.04) \cdot (0.8)^3\]\[P(X=2) = 10 \cdot 0.04 \cdot 0.512\]\[P(X=2) = \mathbf{0.2048}\] Rumus Binomial ini memberikan jalan pintas yang cepat dan andal, asalkan empat kondisi Percobaan Binomial terpenuhi. Berikut bisa lihat visualisasi ini:

7 . Binominal Distribuition

7.1 . Rangkuman materi dari video tersebut

Distribusi Binomial adalah grafik atau diagram yang menunjukkan peluang (probabilitas) untuk setiap kemungkinan jumlah sukses (\(k\)) dari total percobaan (\(n\)) yang kita lakukan.

  1. Dasar Visualisasi (Menggunakan Diagram Batang) untuk memvisualisasikan Distribusi Binomial, kita menggunakan Diagram Batang (Bar Chart):Sumbu X (Horizontal): Menunjukkan Jumlah Sukses (\(k\)) yang mungkin (mulai dari 0 hingga \(n\)).Sumbu Y (Vertikal): Menunjukkan Probabilitas (\(P\)) terjadinya jumlah sukses tersebut.

Contoh (Koin 2 Kali, \(n=2\)): Kita menghitung \(P(k=0), P(k=1),\) dan \(P(k=2)\) menggunakan rumus Binomial.\(P(k=0) = 0.25\)\(P(k=1) = 0.50\)\(P(k=2) = 0.25\)

Visualisasi menunjukkan diagram tertinggi ada di \(k=1\), karena itu adalah hasil yang paling mungkin.

  1. Parameter Penting Distribusi Binomial Setiap Distribusi Binomial dapat dijelaskan menggunakan tiga parameter statistik utama:

Parameter Rumus Keterangan rata-rata (\(\mu\))\(\mathbf{\mu = n \times p}\)

Ini adalah nilai sukses yang paling diharapkan (expected number of success).Varians (\(\sigma^2\))\(\mathbf{\sigma^2 = n \times p \times (1-p)}\)

Mengukur seberapa besar penyebaran data di sekitar rata-rata. Simpangan Baku (\(\sigma\))\(\mathbf{\sigma = \sqrt{n \times p \times (1-p)}}\) Akar kuadrat dari Varians; menunjukkan rata-rata jarak data dari rata-rata. Penting: Data dalam Distribusi Binomial akan selalu berkumpul di sekitar nilai rata-rata (\(\mu\)).

  1. Faktor Penentu Bentuk Distribusi: bentuk dari Diagram Batang Binomial sangat dipengaruhi oleh dua variabel: Jumlah Percobaan (\(n\)) dan Peluang Sukses (\(p\)).

Peran Peluang Sukses (\(p\)) Nilai \(p\) menentukan apakah distribusi akan simetris atau menceng/miring (skewed): Nilai p Bentuk Distribusi Penjelasan \(p = 0.5\) Simetris rata-rata (\(\mu\)) berada tepat di tengah. Peluang sukses sama dengan peluang gagal (contoh: koin seimbang). \(p < 0.5\). Menceng ke kanan (Skewed Right) Peluang sukses rendah (misalnya \(p=0.1\)). Data berkumpul di sisi kiri (dekat angka 0), karena kita berharap mendapatkan sedikit sukses.\(p > 0.5\)Menceng ke Kiri (Skewed Left)Peluang sukses tinggi (misalnya \(p=0.8\)). Data berkumpul di sisi kanan (dekat angka \(n\)), karena kita berharap mendapatkan banyak sukses.

Peran Jumlah Percobaan (\(n\)) Nilai \(n\) mengendalikan seberapa dekat Distribusi Binomial dengan Distribusi Normal (Normal Distribution): Semakin besar nilai \(n\), bagan batang Binomial akan semakin mulus dan semakin menyerupai lonceng (bentuk Distribusi Normal).Ketika \(n\) sangat besar, kita dapat mengaproksimasi (mendekati) hasil Binomial menggunakan tabel Distribusi Normal.

  1. Pedoman Aproksimasi Normal (Normal Approximation) Kapan kita boleh menganggap Distribusi Binomial sudah cukup Normal untuk menggunakan perhitungan Distribusi Normal yang lebih mudah? Ada dua aturan umum yang harus dipenuhi keduanya:

\(n \times p \ge 10\) (Rata-rata sukses harus minimal 10)\(n \times (1-p) \ge 10\) (Rata-rata gagal harus minimal 10)

Tujuan: Kedua syarat ini memastikan bahwa distribusi memiliki cukup banyak hasil yang tersebar di tengah sehingga tidak terlalu menceng/miring.

Berikut bisa lihat visualisasi ini:

8 . Referensi

Rangkuman materi Essential of Probability ini diambil dari konsep-konsep inti yang diajarkan dalam referensi buku teks statistika dan probabilitas standar, antara lain:

  1. Bluman, Allan G. (2021). Elementary Statistics: A Step by Step Approach (11th ed.). McGraw-Hill Education.

  2. Walpole, Ronald E., Myers, Raymond H., et al. (2017). Probability and Statistics for Engineers and Scientists (9th ed.). Pearson.

  3. Montgomery, Douglas C., dan Runger, George C. Applied Statistics and Probability for Engineers.

  4. Spiegel, Murray R., Schiller, John, dan Srinivasan, R. Alu. Schaum’s Outline of Probability and Statistics.

  5. Moore, David S., McCabe, George P., et al. Introduction to the Practice of Statistics.

LS0tDQphdXRob3I6ICJDaHJpY3llc2lhIFdpbm5lcmxhZHkgRnJleGlzb3ZhcmEgVXZhcyINCnRpdGxlOiAiVHVnYXMgV2VlayAxMCB+IEVzc2VudGlhbCBvZiBQcm9iYWJpbGl0eSINCmRhdGU6ICIyMDI1LTExLTI2Ig0KDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOg0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIiAgICAgIyDihpAgVGFtYmFoa2FuIGluaSB1bnR1ayBtZW1hbmdnaWwgZmlsZSBDU1MNCi0tLQ0KDQpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgb3V0LmV4dHJhPSdzdHlsZT0iZGlzcGxheTpibG9jazsgbWFyZ2luLWxlZnQ6YXV0bzsgbWFyZ2luLXJpZ2h0OmF1dG87Iid9DQpsaWJyYXJ5KG1hZ2ljaykNCmdhbWJhciA8LSBpbWFnZV9yZWFkKCJmb3RvXzIuanBnIikNCmdhbWJhcg0KYGBgDQoNCg0KIyMgLiBQZW5kYWh1bHVhbg0KDQpQcm9iYWJpbGl0YXMgYWRhbGFoIGRhc2FyIHBlbnRpbmcgZGFsYW0gc3RhdGlzdGlrIGthcmVuYSBtZW1iYW50dSBraXRhIG1lbWFoYW1pIGhhbC1oYWwgeWFuZyBzaWZhdG55YSB0aWRhayBwYXN0aS4gRGVuZ2FuIHByb2JhYmlsaXRhcywga2l0YSB0aWRhayBoYW55YSBtZW5lYmFrLCB0ZXRhcGkgYmlzYSBtZW5naGl0dW5nIHNlYmVyYXBhIGJlc2FyIGtlbXVuZ2tpbmFuIHN1YXR1IGtlamFkaWFuIHRlcmphZGkuIEtvbnNlcCBpbmkgc2FuZ2F0IGJlcmd1bmEgdW50dWsgbWVtYmFjYSBwb2xhIGRhbGFtIGRhdGEsIG1lbWFoYW1pIGhhc2lsIHBlcmNvYmFhbiwgZGFuIG1lbWJ1YXQga2VwdXR1c2FuIHlhbmcgbGViaWggdGVwYXQgYmVyZGFzYXJrYW4gYnVrdGkuDQoNCkJhZ2lhbiBpbmkgbWVuamVsYXNrYW4gYmViZXJhcGEgcHJpbnNpcCBkYXNhciBkYWxhbSB0ZW9yaSBwcm9iYWJpbGl0YXMsIHlhaXR1Og0KDQotIEtvbnNlcCBEYXNhciBQcm9iYWJpbGl0YXMgbWVsaXB1dGkgcnVhbmcgc2FtcGVsLCBrZWphZGlhbiwgZGFuIGF0dXJhbiBrb21wbGVtZW4uIEludGlueWEsIGJhZ2lhbiBpbmkgbWVuamVsYXNrYW4gYmFnYWltYW5hIHByb2JhYmlsaXRhcyBkaWJlbnR1ayBkYW4gYmFnYWltYW5hIGtpdGEgbWVuYWZzaXJrYW4gc3VhdHUgcGVsdWFuZy4NCg0KLSBQZXJpc3Rpd2EgSW5kZXBlbmRlbiBkYW4gRGVwZW5kZW4gbWVuamVsYXNrYW4ga2FwYW4gc3VhdHUga2VqYWRpYW4gbWVtZW5nYXJ1aGkga2VqYWRpYW4gbGFpbm55YSwgZGFuIGthcGFuIHRpZGFrLiBJbmkgcGVudGluZyB1bnR1ayBtZW1idWF0IG1vZGVsIGRhbiBwcmVkaWtzaSB5YW5nIGxlYmloIGFrdXJhdC4NCg0KLSBQcm9iYWJpbGl0YXMgQmVyc3lhcmF0IGRhbiBUZW9yZW1hIEJheWVzIG1lbmplbGFza2FuIHBlbHVhbmcgc3VhdHUga2VqYWRpYW4gdGVyamFkaSBkZW5nYW4gc3lhcmF0IGtlamFkaWFuIGxhaW4gdGVsYWggdGVyamFkaS4gSW5pIGFkYWxhaCBrb25zZXAga3J1c2lhbCB1bnR1ayBtZW1wZXJiYXJ1aSBwZWx1YW5nIGJlcmRhc2Fya2FuIGluZm9ybWFzaSBiYXJ1IChkaXNlYnV0IGp1Z2EgcHJvYmFiaWxpdGFzIHBvc3RlcmlvcikuDQoNCi0gR2FidW5nYW4gZGFuIElyaXNhbiBLZWphZGlhbiBtZW1iYWhhcyBwZWx1YW5nIHRlcmphZGlueWEgbWluaW1hbCBzYXR1IGRhcmkgYmViZXJhcGEga2VqYWRpYW4gKGdhYnVuZ2FuKSwgYXRhdSBwZWx1YW5nIGR1YSBrZWphZGlhbiB0ZXJqYWRpIGJlcnNhbWFhbiAoaXJpc2FuKS4gSmFkaSBraXRhIG1lbGloYXQga2VtdW5na2luYW4gYmFod2Egc2V0aWRha255YSBzYXR1IGtlamFkaWFuIHRlcmphZGkuDQoNCi0gUGVyaXN0aXdhIFNhbGluZyBMZXBhcyAoRWtza2x1c2lmKSBkYW4gTGVuZ2thcCBtZW5qZWxhc2thbiBiYWdhaW1hbmEgYmVyYmFnYWkga2VqYWRpYW4gYmVyaHVidW5nYW4gZGFsYW0gcnVhbmcgc2FtcGVsIGFwYWthaCBtZXJla2EgYmlzYSB0ZXJqYWRpIGJlcnNhbWFhbiBhdGF1IHRpZGFrIChzYWxpbmcgbGVwYXMpICBkYW4gYmFnYWltYW5hIGhhbCBpdHUgbWVtZW5nYXJ1aGkgcGVyaGl0dW5nYW4gcGVsdWFuZy4NCiANCi0gUGVyY29iYWFuIEJpbm9taWFsIGRhbiBEaXN0cmlidXNpIEJpbm9taWFsIGRpZ3VuYWthbiB1bnR1ayBtZW5nYW5hbGlzaXMgcGVyY29iYWFuIHlhbmcgZGlsYWt1a2FuIGJlcnVsYW5nIGRhbiBoYW55YSBwdW55YSBkdWEgaGFzaWwgKG1pc2FsbnlhIHN1a3Nlcy9nYWdhbCkuIEtvbnNlcCBpbmkgc2VyaW5nIGRpcGFrYWkgZGkgcGVuZWxpdGlhbiBpbG1pYWgsIHVqaSBrZWFuZGFsYW4sIGRhbiBzdXJ2ZWkuDQoNCiMjIC4gRnVuZGFtZW50YWwgQ29uY2VwdHMNCg0KUHJvYmFiaWxpdGFzIGFkYWxhaCBpbG11IG1hdGVtYXRpa2EgeWFuZyBtZW5ndWt1ciBrZW11bmdraW5hbiBhdGF1IHBlbHVhbmcgdGVyamFkaW55YSBzdWF0dSBwZXJpc3Rpd2EgeWFuZyB0aWRhayBwYXN0aS4gSW5pIGFkYWxhaCBhbGF0IHlhbmcgbWVtdW5na2lua2FuIGtpdGEgdW50dWsgYmVyZ2VyYWsgZGFyaSBzZWthZGFyIG1lbmViYWsgbWVuamFkaSBwZXJoaXR1bmdhbiBiZXJkYXNhcmthbiBidWt0aS4NCg0KDQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3luakhLQkNpR1hZIiB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIyAuIFJhbmdrdW1hbiBtYXRlcmkgZGFyaSB2aWRlbyB0ZXJzZWJ1dA0KDQoxLiBQcm9iYWJpbGl0YXMgOiBQcm9iYWJpbGl0YXMgU2VkZXJoYW5hICgkUChFKSQpOg0KSW5pIGFkYWxhaCBrb25zZXAgcGFsaW5nIG1lbmRhc2FyLCB5YWl0dSBwZWx1YW5nIGF0YXUga2VtdW5na2luYW4gc3VhdHUga2VqYWRpYW4gYWthbiB0ZXJqYWRpLlNlZGVyaGFuYSBkaWhpdHVuZyBkZW5nYW4gbWVtYmFuZGluZ2thbiBoYXNpbCB5YW5nIGtpdGEgaW5naW5rYW4gZGVuZ2FuIHNlbXVhIGhhc2lsIHlhbmcgbXVuZ2tpbi5QZW50aW5nbnlhOiBQcm9iYWJpbGl0YXMgbWVuZ3ViYWgga2V0aWRha3Bhc3RpYW4gbWVuamFkaSBmb25kYXNpIGRhcmkgc2VsdXJ1aCB0ZW9yaSBwcm9iYWJpbGl0YXMuIEluaSBtZW5qZWxhc2thbiBiYWdhaW1hbmEga2l0YSBtZW5kZWZpbmlzaWthbi4gSW5pIGFkYWxhaCBwZWx1YW5nIGRhbiBhcGEgc2FqYSB1bnN1ci11bnN1ciB5YW5nIG1lbWJlbnR1ayBwZXJoaXR1bmdhbiB0ZXJzZWJ1dC5BbmdrYSB5YW5nIHRlcnVrdXIgKGFudGFyYSAwIGhpbmdnYSAxKS4NCg0KUnVtdXMgSW50aTokJFAoRSkgPSBcZnJhY3tcdGV4dHtKdW1sYWggSGFzaWwgeWFuZyBNZW5ndW50dW5na2FufX17XHRleHR7SnVtbGFoIFRvdGFsIEhhc2lsIHlhbmcgTXVuZ2tpbn19JCQNCg0KQ29udG9oOiBQZWx1YW5nIG1lbmRhcGF0a2FuIHNpc2kgRWtvciBzYWF0IG1lbGVtcGFyIGtvaW4uSGFzaWwgbWVuZ3VudHVuZ2thbiAoRWtvcik6IA0KMVRvdGFsIEhhc2lsOiAyIChLZXBhbGEgZGFuIEVrb3IpICRQKFx0ZXh0e0Vrb3J9KSA9IDEvMiA9IDAuNSQNCg0KDQoyLiBSdWFuZyBTYW1wZWwgKFNhbXBsZSBTcGFjZSwgJFMkKTogUnVhbmcgU2FtcGVsIGFkYWxhaCBrb2xla3NpIGxlbmdrYXAgZGFyaSBzZW11YSBoYXNpbCB5YW5nIG11bmdraW4gdGVyamFkaSBkYXJpIHN1YXR1IHBlcmNvYmFhbi4gSW5pIGFkYWxhaCBwZW5lbnR1IG5pbGFpIHBlbnllYnV0IChwZW1iYWdpKSBkYWxhbSBydW11cyBwcm9iYWJpbGl0YXMuUGVudGluZ255YToNClJ1YW5nIHNhbXBlbCBtZW5kZWZpbmlzaWthbiAiYWxhbSBzZW1lc3RhIiBkYXJpIHBlcmNvYmFhbiBraXRhLg0KVGFucGEgbWVuZGVmaW5pc2lrYW4gJFMkLCBraXRhIHRpZGFrIGJpc2EgdGFodSB0b3RhbCBrZW11bmdraW5hbiB5YW5nIGFkYS4NCkNvbnRvaDpQZXJjb2JhYW4gbWVsZW1wYXIgc2VidWFoIGRhZHUgZW5hbSBzaXNpOg0KJCRTID0gXHsxLCAyLCAzLCA0LCA1LCA2XH0kJA0KUGVyY29iYWFuIG1lbGVtcGFyIGtvaW4gZHVhIGthbGkgOiAkJFMgPSBce1x0ZXh0e0hILEhULFRILFRUfVx9JCQNCg0KMy4gS2VqYWRpYW4gKEV2ZW50LCAkRSQpOktlamFkaWFuIGFkYWxhaCBzYXR1IHNldCBoYXNpbCBzcGVzaWZpayBkYXJpIHJ1YW5nIHNhbXBlbCB5YW5nIGtpdGEgYW1hdGkgYXRhdSBraXRhIGhpdHVuZyBwZWx1YW5nbnlhLiBJbmkgYWRhbGFoIHBlbmVudHUgbmlsYWkgcGVtYmlsYW5nIGRhbGFtIHJ1bXVzIHByb2JhYmlsaXRhcy5QZW50aW5nbnlhOiBLZWphZGlhbiBhZGFsYWggZm9rdXMgcGVyaGl0dW5nYW4ga2l0YS4NCkNvbnRvaCAoZGFyaSBwZWxlbXBhcmFuIGRhZHUpOg0KDQpLZWphZGlhbiBBOiBNdW5jdWxueWEgYmlsYW5nYW4gcHJpbWEuICRBID0gXHsyLCAzLCA1XH0kDQpLZWphZGlhbiBCOiBNdW5jdWxueWEgYmlsYW5nYW4gbGViaWggZGFyaSA0LiAkQiA9IFx7NSwgNlx9JA0KDQo0LiBBdHVyYW4gS29tcGxlbWVuIChDb21wbGVtZW50IFJ1bGUpOkF0dXJhbiBLb21wbGVtZW4gc2FuZ2F0IGJlcmd1bmEgdW50dWsgbWVuY2FyaSBwZWx1YW5nIHN1YXR1IGtlamFkaWFuIFRJREFLIHRlcmphZGkuIEtvbXBsZW1lbiAoJEFeYyQgYXRhdSAkQSckKSBtZW5jYWt1cCBzZW11YSBoYXNpbCBkaSBydWFuZyBzYW1wZWwgeWFuZyBidWthbiBtZXJ1cGFrYW4ga2VqYWRpYW4gJEEkLg0KDQpMb2dpa2E6IA0KS2FyZW5hIGp1bWxhaCB0b3RhbCBwcm9iYWJpbGl0YXMgc2VtdWEgaGFzaWwgZGFsYW0gcnVhbmcgc2FtcGVsIGFkYWxhaCAxLCBtYWthIHBlbHVhbmcgJEEkIHRlcmphZGkgZGl0YW1iYWggcGVsdWFuZyAkQSQgdGlkYWsgdGVyamFkaSBwYXN0aSBzYW1hIGRlbmdhbiAxLg0KDQpSdW11czokJFxtYXRoYmZ7UChBXmMpID0gMSAtIFAoQSl9JCQNCg0KQ29udG9oOiBKaWthIHBlbHVhbmcgbWVuZGFwYXRrYW4gYW5na2EgNiBhZGFsYWggJDEvNiQsIG1ha2EgcGVsdWFuZyB0aWRhayBtZW5kYXBhdGthbiBhbmdrYSA2IGFkYWxhaCAkMSAtIDEvNiA9IDUvNiQuDQoNCkJpc2EgZGkgbGloYXQgZGkgdmlzdWFsaXNhaSBiZXJpa3V0Og0KYGBge3IgZWNobz0gRkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHRyZWVfZGlhZ3JhbSwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OX0NCmxpYnJhcnkoaWdyYXBoKQ0KDQplZGdlcyA8LSBkYXRhLmZyYW1lICgNCiAgZnJvbSA9IGMoIlN0YXJ0IiwgIlN0YXJ0IiwgIktvaW4xX0giLCAiS29pbjFfSCIsICJLb2luMV9UIiwgIktvaW4xX1QiKSwNCiAgdG8gPSBjKCJLb2luMV9IIiwgIktvaW4xX1QiLCAiSEgiLCAiSFQiLCAiVEgiLCAiVFQiKQ0KDQopDQoNCiMgQnVhdCBncmFwaCBvYmplY3QNCmcgPC0gZ3JhcGhfZnJvbV9kYXRhX2ZyYW1lKGVkZ2VzKQ0KDQojIEF0dXIgbGF5b3V0IHBvc2lzaSBub2RlIChYLCBZKQ0KbGF5b3V0X21hdHJpeCA8LSBtYXRyaXgoYygNCiAgMCwgMCwgICAgICAjIFN0YXJ0DQogIDEsIDAuNSwgICAgIyBLb2luMV9IIA0KICAxLCAtMC41LCAgICMgS29pbjFfVA0KICAyLCAwLjg1LCAgICMgSEggDQogIDIsIDAuMzUsICAgIyBIVA0KICAyLCAtMC4zNSwgICMgVEgNCiAgMiwgLTAuODUgICAjIFRUIA0KKSwgbmNvbCA9IDIsIGJ5cm93ID0gVFJVRSkNCg0KIyAuLi4gKFN0eWxpbmcgV2FybmEgZGFuIExhYmVsIFNhbWEgU2VwZXJ0aSBTZWJlbHVtbnlhKSAuLi4NCnZlcnRleF9jb2xvcnMgPC0gYygNCiAgIlN0YXJ0IiA9ICIjRkY2QjZCIiwgICAgDQogICJLb2luMV9IIiA9ICIjNEVDREM0IiwgIA0KICAiS29pbjFfVCIgPSAiIzRFQ0RDNCIsICANCiAgIkhIIiA9ICIjNDVCN0QxIiwgICAgICANCiAgIkhUIiA9ICIjNDVCN0QxIiwNCiAgIlRIIiA9ICIjNDVCN0QxIiwNCiAgIlRUIiA9ICIjNDVCN0QxIg0KKQ0KDQp2ZXJ0ZXhfbGFiZWxzIDwtIGMoDQogICJTdGFydCIsDQogICJLb2luIDEgPSBIXG5QID0gMC41IiwNCiAgIktvaW4gMSA9IFRcblAgPSAwLjUiLA0KICAiSEhcblAgPSAwLjI1IiwgDQogICJIVFxuUCA9IDAuMjUiLA0KICAiVEhcblAgPSAwLjI1IiwNCiAgIlRUXG5QID0gMC4yNSINCikNCg0KZWRnZV9sYWJlbHMgPC0gYygNCiAgIlAoSCkgPSAwLjUiLA0KICAiUChUKSA9IDAuNSIsDQogICJQKEgpID0gMC41IiwNCiAgIlAoVCkgPSAwLjUiLA0KICAiUChIKSA9IDAuNSIsDQogICJQKFQpID0gMC41Ig0KKQ0KDQojIFBsb3QgZGlhZ3JhbSBwb2hvbiBob3Jpem9udGFsDQpwbG90KGcsDQogICAgICMgLS0tIExheW91dCBkYW4gTm9kZSBTdHlsaW5nIC0tLQ0KICAgICBsYXlvdXQgPSBsYXlvdXRfbWF0cml4LA0KICAgICB2ZXJ0ZXgubGFiZWwgPSB2ZXJ0ZXhfbGFiZWxzLA0KICAgICB2ZXJ0ZXguc2l6ZSA9IDU1LCAjIFVrdXJhbiBub2RlDQogICAgIHZlcnRleC5jb2xvciA9IHZlcnRleF9jb2xvcnMsDQogICAgIHZlcnRleC5mcmFtZS5jb2xvciA9ICJibGFjayIsDQogICAgIHZlcnRleC5sYWJlbC5jb2xvciA9ICJibGFjayIsDQogICAgIHZlcnRleC5sYWJlbC5jZXggPSAwLjgsDQogICAgIA0KICAgICAjIC0tLSBFZGdlIFN0eWxpbmcgLS0tDQogICAgIGVkZ2UubGFiZWwgPSBlZGdlX2xhYmVscywNCiAgICAgZWRnZS5sYWJlbC5jb2xvciA9ICJkYXJrZ3JlZW4iLA0KICAgICBlZGdlLmxhYmVsLmNleCA9IDEuMCwNCiAgICAgZWRnZS53aWR0aCA9IDIsDQogICAgIGVkZ2UuYXJyb3cuc2l6ZSA9IDEuMCwgIyBQZXJiYWlrYW4gZGFyaSAncnJvdy5zaXplJw0KICAgICANCiAgICAgIyAtLS0gSnVkdWwgZGFuIExheW91dCBQbG90IFVtdW0gLS0tDQogICAgIG1haW4gPSAiRElBR1JBTSBQT0hPTiBQUk9CQUJJTElUQVNcblBlbGVtYXBhcmFuIDIgS29pbiIsICMgUGVyYmFpa2FuIHNpbnRha3Npcw0KICAgICBhc3AgPSAwLjksICMgQXNwZWsgcmFzaW8gcGxvdA0KICAgICBtYXJnaW4gPSAtMC4xICMgTWVuZ2F0dXIgbWFyZ2luIGFnYXIgZGlhZ3JhbSB0aWRhayB0ZXJwb3RvbmcgKGRpc2FyYW5rYW4gbWVuZ2d1bmFrYW4gbmlsYWkgbmVnYXRpZikNCikNCmBgYA0KDQoNCg0KIyMgLiBJbmRlcGVuZGVudCBhbmQgRGVwZW5kZW50DQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0xTLV9paERLcjJNIndpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiB3aWR0aD0iNzY4IiBoZWlnaHQ9IjQwMHB4IiBkYXRhLWV4dGVybmFsPSIxIj4gPC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMjIC4gUmFuZ2t1bWFuIG1hdGVyaSBkYXJpIHZpZGVvIHRlcnNlYnV0DQoxLiBQZXJpc3Rpd2EgSW5kZXBlbmRlbiAoSW5kZXBlbmRlbnQgRXZlbnRzKTogYWRhbGFoIGR1YSBrZWphZGlhbiBkaSBtYW5hIGhhc2lsIGRhcmkga2VqYWRpYW4gcGVydGFtYSBzYW1hIHNla2FsaSB0aWRhayBtZW1lbmdhcnVoaSBwcm9iYWJpbGl0YXMgdGVyamFkaW55YSBrZWphZGlhbiBrZWR1YS4NClBlbmplbGFzYW4gZGV0YWlsOiANCg0KU2lmYXQgaGFzaWwga2VkdWEga2VqYWRpYW4gYmVyZGlyaSBzZW5kaXJpLiBLZWphZGlhbiBBIGRhbiBCIHRpZGFrIG1lbWlsaWtpIGtldGVya2FpdGFuIHNlYmFiIGFraWJhdC4NCg0KQ29udG9oIEludGk6IE1lbGVtcGFyIGRhZHUgZGFuIG1lbGVtcGFyIGtvaW4uIEppa2EgQW5kYSBtZW5kYXBhdGthbiBhbmdrYSA2IHBhZGEgZGFkdSwgcGVsdWFuZyBrb2luIG1lbmRhcmF0IGRpIHNpc2kgS2VwYWxhIHRldGFwICQxLzIkICg1MCUpLiBIYXNpbCBkYWR1IHRpZGFrIG1lbmd1YmFoIHByb2JhYmlsaXRhcyBrb2luLg0KDQpLYXBhbiBTZXJpbmcgdGVyamFkaTogRGFsYW0gcGVyY29iYWFuIHlhbmcgZGlsYWt1a2FuIGRlbmdhbiBwZW5nZW1iYWxpYW4gKG1pc2FsbnlhLCBtZW5nYW1iaWwga2FydHUsIGRpY2F0YXQsIGxhbHUgZGlrZW1iYWxpa2FuIGxhZ2kpIGF0YXUgcGVyY29iYWFuIHlhbmcgc2VjYXJhIGZpc2lrIHRlcnBpc2FoIChzZXBlcnRpIGRhZHUgZGFuIGtvaW4pLg0KDQotIEF0dXJhbiBQZXJrYWxpYW4gdW50dWsgSW5kZXBlbmRlbjpVbnR1ayBtZW5naGl0dW5nIHBlbHVhbmcga2VkdWEga2VqYWRpYW4gaW5kZXBlbmRlbiB0ZXJqYWRpIGJlcnNhbWFhbiAoQSBEQU4gQiksIGtpdGEgY3VrdXAgbWVuZ2FsaWthbiBwZWx1YW5nIG1hc2luZy1tYXNpbmcga2VqYWRpYW4uDQokJFxtYXRoYmZ7UChBIFx0ZXh0eyBkYW4gfSBCKSA9IFAoQSkgXHRpbWVzIFAoQil9JCQgDQpDb250b2ggUGVyaGl0dW5nYW46IFBlbHVhbmcgbWVsZW1wYXIgZGFkdSBtZW5kYXBhdGthbiA1ICgkXG1hdGhiZnsxLzZ9JCkgREFOIG1lbmRhcGF0a2FuIEtlcGFsYSBwYWRhIGtvaW4gKCRcbWF0aGJmezEvMn0kKS4NCiQkUCg1IFx0ZXh0eyBkYW4gSH0pID0gXGZyYWN7MX17Nn0gXHRpbWVzIFxmcmFjezF9ezJ9ID0gXGZyYWN7MX17MTJ9IFx0ZXh0eyAoYXRhdSBzZWtpdGFyIDAuMDgzMyl9JCQgDQoNCjIuIFBlcmlzdGl3YSBEZXBlbmRlbiAoRGVwZW5kZW50IEV2ZW50cyk6IFBlcmlzdGl3YSBEZXBlbmRlbiAoYXRhdSBCZXJzeWFyYXQpIGFkYWxhaCBkdWEga2VqYWRpYW4gZGkgbWFuYSBoYXNpbCBkYXJpIGtlamFkaWFuIHBlcnRhbWEgbWVtZW5nYXJ1aGkgcHJvYmFiaWxpdGFzIHRlcmphZGlueWEga2VqYWRpYW4ga2VkdWEuUGVuamVsYXNhbiBEZXRhaWw6DQoNClNpZmF0OiBLZWphZGlhbiBwZXJ0YW1hIG1lbmd1YmFoIGtvbXBvc2lzaSBSdWFuZyBTYW1wZWwgKGp1bWxhaCB0b3RhbCBoYXNpbCB5YW5nIG11bmdraW4pIHVudHVrIGtlamFkaWFuIGtlZHVhLg0KDQpDb250b2ggSW50aTpNZW5nYW1iaWwgZHVhIGtlbGVyZW5nL2thcnR1IHRhbnBhIHBlbmdlbWJhbGlhbiAuSmlrYSBBbmRhIG1lbWlsaWtpIDEwIGtlbGVyZW5nLCBkYW4gQW5kYSBtZW5nYW1iaWwgMSBrZWxlcmVuZyAoS2VqYWRpYW4gQSksIG1ha2EgdW50dWsgS2VqYWRpYW4gQiAocGVuZ2FtYmlsYW4ga2VsZXJlbmcga2VkdWEpLCB0b3RhbCBrZWxlcmVuZyB5YW5nIHRlcnNpc2EgaGFueWEgOS4gDQpSdWFuZyBzYW1wZWwgdGVsYWggYmVydWJhaCBwZWVydWJhaGFuIGp1bWxhaCB0b3RhbCBpbmkgbWVtYnVhdCBwcm9iYWJpbGl0YXMga2VkdWEgYmVydWJhaCwgbWVuamFkaWthbm55YSBrZWphZGlhbiBkZXBlbmRlbiAuIA0KDQpLYXBhbiBTZXJpbmcgVGVyamFkaTogRGFsYW0gcGVyY29iYWFuIHlhbmcgZGlsYWt1a2FuIHRhbnBhIHBlbmdlbWJhbGlhbi4gQXR1cmFuIFBlcmthbGlhbiB1bnR1ayBEZXBlbmRlbiAoUHJvYmFiaWxpdGFzIEJlcnN5YXJhdCk6VW50dWsgbWVuZ2hpdHVuZyBwZWx1YW5nIGR1YSBrZWphZGlhbiBkZXBlbmRlbiB0ZXJqYWRpIHNlY2FyYSBiZXJ1cnV0YW4sIGtpdGEgbWVuZ2d1bmFrYW4gUHJvYmFiaWxpdGFzIEJlcnN5YXJhdC4gDQoNClJ1bXVzbnlhIGFkYWxhaDogJCRcbWF0aGJme1AoQSBcdGV4dHsgZGFuIH0gQikgPSBQKEEpIFx0aW1lcyBQKEJ8QSl9JCQNCg0KRGkgbWFuYSAkXG1hdGhiZntQKEJ8QSl9JCBkaWJhY2E6ICJQZWx1YW5nIEtlamFkaWFuIEIgdGVyamFkaSwgc2V0ZWxhaCBkaWtldGFodWkgS2VqYWRpYW4gQSBzdWRhaCB0ZXJqYWRpLg0KDQoiQ29udG9oIFBlcmhpdHVuZ2FuOiBQZWx1YW5nIG1lbmdhbWJpbCBrZWxlcmVuZyBIaWphdSAoQSkgbGFsdSBrZWxlcmVuZyBCaXJ1IChCKSwgdGFucGEgcGVuZ2VtYmFsaWFuLiANCihBd2FsOiA3IEhpamF1LCAzIEJpcnU7IFRvdGFsIDEwKSAuUGVsdWFuZyBBIChBbWJpbCBIaWphdSBQZXJ0YW1hKToNCiQkUChBKSA9IFxmcmFje1x0ZXh0ezcgKEhpamF1KX19e1x0ZXh0ezEwIChUb3RhbCl9fSQkIFBlbHVhbmcgQnxBIChBbWJpbCBCaXJ1IEtlZHVhLCBzZXRlbGFoIEhpamF1IGRpYW1iaWwpOlRvdGFsIGtlbGVyZW5nIHNpc2EgOS5KdW1sYWggQmlydSB0ZXRhcCAzLg0KJCRQKEJ8QSkgPSBcZnJhY3tcdGV4dHszIChCaXJ1KX19e1x0ZXh0ezkgKFRvdGFsIFNpc2EpfX0kJCANCg0KUGVsdWFuZyBBIGRhbiBCOiANCiQkUChBIFx0ZXh0eyBkYW4gfSBCKSA9IFxmcmFjezd9ezEwfSBcdGltZXMgXGZyYWN7M317OX0gPSBcZnJhY3syMX17OTB9ID0gXGZyYWN7N317MzB9IFx0ZXh0eyAoYXRhdSBzZWtpdGFyIDAuMjMzKX0kJCANCg0KUGVudGluZzogUGVydWJhaGFuIHByb2JhYmlsaXRhcyBwYWRhIGtlamFkaWFuIGRlcGVuZGVuIHRlcmphZGkga2FyZW5hIGtlamFkaWFuIHBlcnRhbWEgbWVuZ3VyYW5naSB1a3VyYW4gcnVhbmcgc2FtcGVsIHVudHVrIGtlamFkaWFuIGtlZHVhLg0KDQpCZXJpa3V0IGJpc2EgbGloYXQgdmlkZW8gaW5pOg0KYGBge3IgZWNobz0gRkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTl9DQpsaWJyYXJ5KGdncGxvdDIpDQoNCiMgYS4gUGVyaXN0aXdhIEluZGVwZW5kZW4gKERhZHUgNSBBTkQgS29pbiBLZXBhbGEpDQojIFAoQSkgPSAxLzY7IFAoQikgPSAxLzINCnBlbHVhbmdfaW5kZXBlbmRlbiA8LSAoMS82KSAqICgxLzIpICMgSGFzaWw6IDEvMTIgYXRhdSAwLjA4MzMNCg0KIyBiLiBQZXJpc3Rpd2EgRGVwZW5kZW4gKEhpamF1IFRBTlBBIHBlbmdlbWJhbGlhbiBBTkQgQmlydSkNCiMgUChBKSA9IDcvMTA7IFAoQnxBKSA9IDMvOSANCnBlbHVhbmdfZGVwZW5kZW4gPC0gKDcvMTApICogKDMvOSkgIyBIYXNpbDogMjEvOTAgYXRhdSA3LzMwIGF0YXUgMC4yMzMzDQoNCiMgMy4gTWVtYnVhdCBEYXRhIEZyYW1lIEdhYnVuZ2FuIHVudHVrIFZpc3VhbGlzYXNpDQpkYXRhX3Zpc3VhbCA8LSBkYXRhLmZyYW1lKA0KICBKZW5pc19QZXJpc3Rpd2EgPSBjKCJQZXJpc3Rpd2EgSW5kZXBlbmRlblxuKERhZHUgJiBLb2luKSIsICJQZXJpc3Rpd2EgRGVwZW5kZW5cbihLZWxlcmVuZyBUYW5wYSBQZW5nZW1iYWxpYW4pIiksDQogIFBlbHVhbmdfR2FidW5nYW4gPSBjKHBlbHVhbmdfaW5kZXBlbmRlbiwgcGVsdWFuZ19kZXBlbmRlbiksDQogIExhYmVsX1Rla3MgPSBjKCIxLzEyICjiiYg4LjMzJSkiLCAiNy8zMCAo4omIMjMuMzMlKSIpDQopDQoNCiMgNC4gTWVtYnVhdCBCYXIgUGxvdCAoRGlhZ3JhbSBCYXRhbmcpDQp2aXN1YWxpc2FzaV9wZXJiYW5kaW5nYW4gPC0gZ2dwbG90KGRhdGFfdmlzdWFsLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBKZW5pc19QZXJpc3Rpd2EsIHkgPSBQZWx1YW5nX0dhYnVuZ2FuLCBmaWxsID0gSmVuaXNfUGVyaXN0aXdhKSkgKw0KICANCiAgIyBNZW1idWF0IEJhciBQbG90DQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCB3aWR0aCA9IDAuNSkgKw0KICANCiAgIyBNZW5hbWJhaGthbiBMYWJlbCBBbmdrYSBkaSBBdGFzIEJhcg0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gTGFiZWxfVGVrcyksIA0KICAgICAgICAgICAgdmp1c3QgPSAtMC41LCAgICAgICAgICAgIyBQb3Npc2kgdmVydGlrYWwgKGRpIGF0YXMgYmFyKQ0KICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCANCiAgICAgICAgICAgIHNpemUgPSA1LCANCiAgICAgICAgICAgIGZvbnRmYWNlID0gImJvbGQiKSArDQogIA0KICAjIEt1c3RvbWlzYXNpIEp1ZHVsIGRhbiBMYWJlbCBTdW1idQ0KICBsYWJzKA0KICAgIHRpdGxlID0gIlBlcmJhbmRpbmdhbiBQZWx1YW5nIEdhYnVuZ2FuIChQKEEgZGFuIEIpKSIsDQogICAgc3VidGl0bGUgPSAiQmVyZGFzYXJrYW4gQ29udG9oIGRhcmkgVmlkZW8iLA0KICAgIHggPSAiSmVuaXMgUGVyaXN0aXdhIiwNCiAgICB5ID0gIk5pbGFpIFBlbHVhbmcgR2FidW5nYW4gKDAgaGluZ2dhIDEpIiwNCiAgICBjYXB0aW9uID0gcGFzdGUwKCJQZXJpc3Rpd2EgSW5kZXBlbmRlbjogUCg1KSAqIFAoSCkgPSAiLCByb3VuZChwZWx1YW5nX2luZGVwZW5kZW4sIDQpLCANCiAgICAgICAgICAgICAgICAgICAgICJcblBlcmlzdGl3YSBEZXBlbmRlbjogUChIKSAqIFAoQnxIKSA9ICIsIHJvdW5kKHBlbHVhbmdfZGVwZW5kZW4sIDQpKQ0KICApICsNCiAgDQogICMgS3VzdG9taXNhc2kgV2FybmEgZGFuIFRlbWENCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiUGVyaXN0aXdhIEluZGVwZW5kZW5cbihEYWR1ICYgS29pbikiID0gIiM0Q0FGNTAiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyaXN0aXdhIERlcGVuZGVuXG4oS2VsZXJlbmcgVGFucGEgUGVuZ2VtYmFsaWFuKSIgPSAiIzIxOTZGMyIpKSArDQogIA0KICAjIE1lbWFzdGlrYW4gU2thbGEgWSAoUGVsdWFuZykgZGFyaSAwIGhpbmdnYSAwLjMgKGF0YXUgbGViaWggZGFyaSBuaWxhaSBtYWtzaW11bSkNCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgbWF4KGRhdGFfdmlzdWFsJFBlbHVhbmdfR2FidW5nYW4pICsgMC4wNSksDQogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBzZXEoMCwgMC4zLCBieSA9IDAuMDUpKSArDQogIA0KICAjIE1lbmdndW5ha2FuIHRlbWEgbWluaW1hbGlzIGFnYXIgcmFwaQ0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiLCBzaXplID0gMTYpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIHNpemUgPSAxMiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIgIyBMZWdlbmRhIHRpZGFrIGRpcGVybHVrYW4ga2FyZW5hIHN1bWJ1IFggc3VkYWggamVsYXMNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIFZpc3VhbGlzYXNpDQpwcmludCh2aXN1YWxpc2FzaV9wZXJiYW5kaW5nYW4pDQoNCmBgYA0KDQoNCiMjIC4gVW5pb24gb2YgRXZlbnRzDQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3ZxS0FiaENxU1RjIiB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIyAuIFJhbmdrdW1hbiBtYXRlcmkgZGFyaSB2aWRlbyB0ZXJzZWJ1dA0KUGVsdWFuZyBHYWJ1bmdhbiBLZWphZGlhbiAoJEEkIGF0YXUgJEIkKS5JbnRpIGRhcmkgdmlkZW8gaW5pIGFkYWxhaCBjYXJhIG1lbmdoaXR1bmcgcGVsdWFuZyBiYWh3YSBzZXRpZGFrbnlhIHNhdHUgZGFyaSBkdWEga2VqYWRpYW4gKEtlamFkaWFuIEEgYXRhdSBLZWphZGlhbiBCKSBha2FuIHRlcmphZGkuIERhbGFtIHByb2JhYmlsaXRhcyxrYXRhIGt1bmNpICJBVEFVIiAoZGFsYW0gYmFoYXNhIEluZ2dyaXM6IG9yKSBtZXJ1anVrIHBhZGEgb3BlcmFzaSBHYWJ1bmdhbiAoVW5pb24sICRcY3VwJCkNCg0KMS4gS2FwYW4gS2l0YSBtZW5nZ3VuYWthbiBBdHVyYW4gR2FidW5nYW4/DQoNCktpdGEgbWVuZ2d1bmFrYW4gQXR1cmFuIEdhYnVuZ2FuIGtldGlrYSBraXRhIHRlcnRhcmlrIHBhZGEgdGlnYSBrZW11bmdraW5hbiBoYXNpbDpLZWphZGlhbiBBIHRlcmphZGksIHRldGFwaSBCIHRpZGFrO0tlamFkaWFuIEIgdGVyamFkaSwgdGV0YXBpIEEgdGlkYWs7S2VkdWEga2VqYWRpYW4gKEEgZGFuIEIpIHRlcmphZGkgYmVyc2FtYWFuLg0KDQoyLiBBdHVyYW4gQWRpdGlmIFVtdW0gKFRoZSBHZW5lcmFsIEFkZGl0aW9uIFJ1bGUpOiBWaWRlbyBpbmkgbWVtcGVya2VuYWxrYW4gcnVtdXMgdXRhbWEgdW50dWsgbWVuZ2hpdHVuZyBwZWx1YW5nIGdhYnVuZ2FuIGR1YSBrZWphZGlhbiwgeWFpdHUgQXR1cmFuIEFkaXRpZiBVbXVtIDoNCiQkXG1hdGhiZntQKEEgXGN1cCBCKSA9IFAoQSkgKyBQKEIpIC0gUChBIFxjYXAgQil9JCQgDQoNClBlbmplbGFzYW4gU2VkZXJoYW5hIG1lbmdlbmFpIHJ1bXVzOiAkUChBKSArIFAoQikkOiANCm1lbmdoaXR1bmcgdG90YWwgcGVsdWFuZyBLZWphZGlhbiBBIGRhbiB0b3RhbCBwZWx1YW5nIEtlamFkaWFuDQoNCiRQKEEgXGNhcCBCKSQgOiBJbmkgYWRhbGFoIGJhZ2lhbiB5YW5nIHBhbGluZyBwZW50aW5nLiBJcmlzYW4gKCRBIFxjYXAgQiQpIGFkYWxhaCBwZWx1YW5nIEEgZGFuIEIgdGVyamFkaSBiZXJzYW1hYW4uDQpLZXRpa2EgQW5kYSBtZW5qdW1sYWhrYW4gJFAoQSkkIGRhbiAkUChCKSQsIGhhc2lsLWhhc2lsIGRpIGFyZWEgaXJpc2FuICgkXG1hdGhiZntBIFxjYXAgQn0kKSB0ZWxhaCBkaWhpdHVuZyBkdWEga2FsaSAoc2VrYWxpIHNlYmFnYWkgYmFnaWFuIGRhcmkgQSwgZGFuIHNla2FsaSBsYWdpIHNlYmFnYWkgYmFnaWFuIGRhcmkgQikuDQpVbnR1ayBtZW5naGluZGFyaSBwZW5naGl0dW5nYW4gZ2FuZGEgKGRpc2VidXQgZHVwbGljYXRlIG91dGNvbWVzKSwga2l0YSBoYXJ1cyBtZW5ndXJhbmdpbnlhIHNhdHUga2FsaS4gDQoNCkNvbnRvaCBwZWxlbXBhcmFuIGR1YSBEZGR1LiBWaWRlbyBpbmkgbWVuZ2d1bmFrYW4gY29udG9oIHBlbGVtcGFyYW4gZHVhIGRhZHUgKFJ1YW5nIFNhbXBlbCAkUyQgPSAzNiBoYXNpbCkgdW50dWsgbWVuamVsYXNrYW4ga29uc2VwIEdhYnVuZ2FuIEEuIEtvbXBvbmVuIEtlamFkaWFuIFZpZGVvIG1lbmRlZmluaXNpa2FuIGR1YSBrZWphZGlhbiBzcGVzaWZpazogS2VqYWRpYW4gRGVza3JpcHNpIEp1bWxhaCBIYXNpbCAoUGVtYmlsYW5nKVByb2JhYmlsaXRhcyBTZWRlcmhhbmEgS2VqYWRpYW4gQS4NCg0KTXVuY3VsbnlhIGR1YSBhbmdrYSBnZW5hcCBoYXNpbCAoZS5nLiwgKDIsMiksICgyLDQpLi4uKSAkUChBKSA9IDkvMzYkIEtlamFkaWFuIEIuTXVuY3VsbnlhIHNldGlkYWtueWEgc2F0dSBhbmdrYSAyMTEgaGFzaWwgKGUuZy4sICgxLDIpLCAoMiwxKSwgKDIsMikuLi4pICRQKEIpID0gMTEvMzYkLiANCk1lbmdoaXR1bmcgSXJpc2FuIChLb21wb25lbiBQZW5ndXJhbmcpLlNlYmVsdW0gbWVuZ2hpdHVuZyBHYWJ1bmdhbiAoJEEkIGF0YXUgJEIkKSwga2l0YSBoYXJ1cyBtZW5jYXJpIElyaXNhbiAoJEEkIGRhbiAkQiQpLg0KDQpEZWZpbmlzaSBJcmlzYW4gKCRBIFxjYXAgQiQpOiBQZWx1YW5nIG1lbmRhcGF0a2FuIGR1YSBhbmdrYSBnZW5hcCBEQU4gc2V0aWRha255YSBzYXR1IGFuZ2thIDIuDQpQZXJoaXR1bmdhbjogS2l0YSBtZW5jYXJpIGhhc2lsIG1hbmEgc2FqYSBkYXJpIDM2IGhhc2lsIHlhbmcgbWVtZW51aGkga2VkdWEgc3lhcmF0IHRlcnNlYnV0Lkhhc2lsLWhhc2lsIHRlcnNlYnV0IGFkYWxhaDogJCgyLCAyKSQsICQoMiwgNCkkLCAkKDIsIDYpJCwgJCg0LCAyKSQsIGRhbiAkKDYsIDIpJC4NCkhhc2lsIElyaXNhbjogVGVyZGFwYXQgNSBoYXNpbCB5YW5nIHR1bXBhbmcgdGluZGloLiQkUChBIFxjYXAgQikgPSA1LzM2JCRQZXJoaXR1bmdhbiBHYWJ1bmdhbiBha2hpciBzZWthcmFuZyBraXRhIG1hc3Vra2FuIHNlbXVhIGtvbXBvbmVuIGtlIGRhbGFtIEF0dXJhbiBBZGl0aWYgVW11bSB1bnR1ayBtZW5jYXJpIHBlbHVhbmcgIkR1YSBBbmdrYSBHZW5hcCBBVEFVIFNldGlkYWtueWEgU2F0dSBBbmdrYSAyIjogUGVsdWFuZyBBICsgUGVsdWFuZyBCOiQkXGZyYWN7OX17MzZ9ICsgXGZyYWN7MTF9ezM2fSA9IFxmcmFjezIwfXszNn0kJA0KS3VyYW5naSBJcmlzYW4gKFBlbmdoaXR1bmdhbiBHYW5kYSk6JCRcZnJhY3syMH17MzZ9IC0gXGZyYWN7NX17MzZ9ID0gXGZyYWN7MTV9ezM2fSQkDQpIYXNpbCBQZWx1YW5nIEdhYnVuZ2FuIEtlamFkaWFuICgkQSBcY3VwIEIkKSBhZGFsYWggMTUvMzYuDQoNCjMuIEthc3VzIEtodXN1czogUGVyaXN0aXdhIFNhbGluZyBMZXBhcyAoTXV0dWFsbHkgRXhjbHVzaXZlKUppa2EgZHVhIGtlamFkaWFuIHNhbGluZyBsZXBhcyAobXV0dWFsbHkgZXhjbHVzaXZlKSwgYXJ0aW55YSBtZXJla2EgdGlkYWsgbXVuZ2tpbiB0ZXJqYWRpIGJlcnNhbWFhbiAodGlkYWsgYWRhIGlyaXNhbikuSmlrYSAkQSQgZGFuICRCJCBTYWxpbmcgTGVwYXMsIG1ha2EgJFxtYXRoYmZ7UChBIFxjYXAgQikgPSAwfSQuDQoNClJ1bXVzIFNlZGVyaGFuYToNCiQkUChBIFxjdXAgQikgPSBQKEEpICsgUChCKSQkKEtvbXBvbmVuIHBlbmd1cmFuZyAoJFAoQSBcY2FwIEIpJCkgZGloaWxhbmdrYW4ga2FyZW5hIG5pbGFpbnlhIG5vbCkuDQoNCktvbnNlcCBHYWJ1bmdhbiBpbmkgbWVtYXN0aWthbiBiYWh3YSBrZXRpa2EgbWVuanVtbGFoa2FuIHBlbHVhbmcsIHNldGlhcCBoYXNpbCB1bmlrIGRhcmkgcnVhbmcgc2FtcGVsIGRpaGl0dW5nIHRlcGF0IHNhdHUga2FsaSwgeWFuZyBtZXJ1cGFrYW4gcHJpbnNpcCBkYXNhciBwcm9iYWJpbGl0YXMuDQoNCkJlcmlrdXQgYmlzYSBsaWhhdCB2aXN1YWxpc2FzaSBpbmk6DQpgYGB7ciBlY2hvPSBGQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgVmVubl9kaWFncmFtLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD05fQ0KbGlicmFyeShWZW5uRGlhZ3JhbSkNCg0KIyBhLiBQZXJpc3Rpd2EgVHVtcGFuZyBUaW5kaWggKE5vbi1NdXR1YWxseSBFeGNsdXNpdmUpIC0gQ29udG9oIHVtdW0gUChBIFUgQikNCiMgQSA9IDI1IGVsZW1lbiB1bmlrLCBCID0gMzUgZWxlbWVuIHVuaWssIEEgSU5URVJTRUNUIEIgPSAxMA0KbGlzdF90dW1wYW5nX3RpbmRpaCA8LSBsaXN0KA0KICBQZXJpc3Rpd2FfQSA9IDE6MzUsICAgICAgICMgMTAgZGkgaXJpc2FuICgxOjEwKSwgMjUgdW5payAoMTE6MzUpDQogIFBlcmlzdGl3YV9CID0gMjY6NjAgICAgICAgIyAxMCBkaSBpcmlzYW4gKDI2OjM1KSwgMjUgdW5payAoMzY6NjApDQopDQoNCiMgYi4gUGVyaXN0aXdhIFNhbGluZyBMZXBhcyAoTXV0dWFsbHkgRXhjbHVzaXZlKSAtIENvbnRvaCBQKEEgVSBCKSA9IFAoQSkgKyBQKEIpDQojIEEgPSAyNSBlbGVtZW4sIEIgPSAzNSBlbGVtZW4sIEEgSU5URVJTRUNUIEIgPSAwDQpsaXN0X3NhbGluZ19sZXBhcyA8LSBsaXN0KA0KICBQZXJpc3Rpd2FfQSA9IDE6MjUsDQogIFBlcmlzdGl3YV9CID0gMjY6NjANCikNCg0KIyBNZW1idWF0IERpYWdyYW0gVmVubg0KdmVubi5wbG90X3R1bXBhbmcgPC0gdmVubi5kaWFncmFtKA0KICB4ID0gbGlzdF90dW1wYW5nX3RpbmRpaCwNCiAgY2F0ZWdvcnkubmFtZXMgPSBjKCJQZXJpc3Rpd2EgQSIsICJQZXJpc3Rpd2EgQiIpLA0KICBmaWxlbmFtZSA9IE5VTEwsICMgVGlkYWsgbWVueWltcGFuIGtlIGZpbGUsIGxhbmdzdW5nIHRhbXBpbCBkaSBSIE1hcmtkb3duDQogIA0KICAjIFN0eWxpbmcNCiAgZmlsbCA9IGMoIiNGNEI0MDAiLCAiIzQyODVGNCIpLCAjIFdhcm5hIGZpbGwNCiAgYWxwaGEgPSAwLjUsDQogIGNvbCA9ICJ0cmFuc3BhcmVudCIsDQogIA0KICAjIEp1ZHVsDQogIG1haW4gPSAiRGlhZ3JhbSBWZW5uOiBQZXJpc3Rpd2EgVHVtcGFuZyBUaW5kaWggKEludGVyc2VjdGlvbiDiiaAgMCkiLA0KICBtYWluLmZvbnRmYWNlID0gImJvbGQiLA0KICANCiAgIyBMYWJlbCBBcmVhDQogIGNhdC5jZXggPSAxLjIsDQogIGNleCA9IDEuMg0KKQ0KDQojIE1lbmFtcGlsa2FuIERpYWdyYW0gVmVubiAoV2FqaWIgdW50dWsgUiBNYXJrZG93bikNCmdyaWQ6OmdyaWQuZHJhdyh2ZW5uLnBsb3RfdHVtcGFuZykNCg0KIyBNZW1idWF0IERpYWdyYW0gVmVubg0KdmVubi5wbG90X2xlcGFzIDwtIHZlbm4uZGlhZ3JhbSgNCiAgeCA9IGxpc3Rfc2FsaW5nX2xlcGFzLA0KICBjYXRlZ29yeS5uYW1lcyA9IGMoIlBlcmlzdGl3YSBBIiwgIlBlcmlzdGl3YSBCIiksDQogIGZpbGVuYW1lID0gTlVMTCwgIyBUaWRhayBtZW55aW1wYW4ga2UgZmlsZSwgbGFuZ3N1bmcgdGFtcGlsIGRpIFIgTWFya2Rvd24NCiAgDQogICMgU3R5bGluZw0KICBmaWxsID0gYygiI0RCNDQzNyIsICIjMEY5RDU4IiksDQogIGFscGhhID0gMC41LA0KICBjb2wgPSAidHJhbnNwYXJlbnQiLA0KICANCiAgIyBKdWR1bA0KICBtYWluID0gIkRpYWdyYW0gVmVubjogUGVyaXN0aXdhIFNhbGluZyBMZXBhcyAoSW50ZXJzZWN0aW9uID0gMCkiLA0KICBtYWluLmZvbnRmYWNlID0gImJvbGQiLA0KICANCiAgIyBMYWJlbCBBcmVhDQogIGNhdC5jZXggPSAxLjIsDQogIGNleCA9IDEuMg0KKQ0KDQojIE1lbmFtcGlsa2FuIERpYWdyYW0gVmVubiAoV2FqaWIgdW50dWsgUiBNYXJrZG93bikNCmdyaWQ6OmdyaWQuZHJhdyh2ZW5uLnBsb3RfbGVwYXMpDQpgYGANCg0KDQojIyAuIEV4Y2x1c2l2ZSBhbmQgRXhoYXVzaXZlDQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2Y3YWdUdjluQTVrIiB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIyAuIFJhbmdrdW1hbiBtYXRlcmkgZGFyaSB2aWRlbyB0ZXJzZWJ1dA0KMS4gUGVyaXN0aXdhIFNhbGluZyBMZXBhcyAoTXV0dWFsbHkgRXhjbHVzaXZlIEV2ZW50cyk6U2FsaW5nIExlcGFzIGFydGlueWEgZHVhIGtlamFkaWFuIHRpZGFrIG11bmtpbmcgdGVyamFkaSBzZWNhcmEgYmVyc2FtYWFuLiBKaWthIHlhbmcgc2F0dSB0ZXJqYWRpLCBtYWthIHlhbmcgbGFpbm55YSBvdG9tYXRpcyB0aWRhayB0ZXJqYWRpLg0KDQpQZW5qZWxhc2FuIFNlZGVyaGFuYTogQmF5YW5na2FuIGR1YSBrZWphZGlhbiB0ZXJzZWJ1dCBzZXBlcnRpIGR1YSBrdXJzaSB5YW5nIGhhbnlhIGJpc2EgZGlkdWR1a2kgb2xlaCBzYXR1IG9yYW5nLiBKaWthIEtlamFkaWFuIEEgc3VkYWggZHVkdWssIEtlamFkaWFuIEIgdGlkYWsgYmlzYSBpa3V0IGR1ZHVrIGRpIHdha3R1IHlhbmcgc2FtYS4gVGlkYWsgYWRhIGlyaXNhbiBhdGF1IHR1bXBhbmcgdGluZGloIGRpIGFudGFyYSBrZWR1YW55YS4gDQpLYXJha3RlcmlzdGlrIGt1bmNpOklyaXNhbiBOb2w6IFBlbHVhbmcgdGVyamFkaW55YSBBIGRhbiBCIGJlcnNhbWFhbiBhZGFsYWggbm9sLiQkXG1hdGhiZntQKEEgXGNhcCBCKSA9IDB9JCQgDQpBdHVyYW4gUGVuanVtbGFoYW4gU2VkZXJoYW5hOiBLYXJlbmEgdGlkYWsgYWRhIHlhbmcgdHVtcGFuZyB0aW5kaWggeWFuZyBwZXJsdSBkaWt1cmFuZ2kgKHRpZGFrIGFkYSBwZW5naGl0dW5nYW4gZ2FuZGEpLCBydW11cyBnYWJ1bmdhbiAoQSBhdGF1IEIpIG1lbmphZGkgc2FuZ2F0IHNlZGVyaGFuYS4NCiQkXG1hdGhiZntQKEEgXGN1cCBCKSA9IFAoQSkgKyBQKEIpfSQkIA0KQ29udG9oIChNZWxlbXBhciBEYWR1IFNla2FsaSk6S2VqYWRpYW4gQTogTXVuY3VsbnlhIGFuZ2thIA0KMS4gKCRQKEEpID0gMS82JCkgS2VqYWRpYW4gQiA6IE11bmN1bG55YSBiaWxhbmdhbiBnZW5hcC4NCigkXHsyLCA0LCA2XH0kLCAkUChCKSA9IDMvNiQpDQoNCkFuYWxpc2lzOiBBcGFrYWggbXVuZ2tpbiBtZW5kYXBhdGthbiBhbmdrYSAxIGRhbiBiaWxhbmdhbiBnZW5hcCBwYWRhIGxlbXBhcmFuIHlhbmcgc2FtYT8gVGVudHUgdGlkYWsuDQoNCk1ha2EsICRBJCBkYW4gJEIkIGFkYWxhaCBTYWxpbmcgTGVwYXMsIGRhbiAkUChBIFxjYXAgQikgPSAwJC4gDQpQZWx1YW5nIEEgQVRBVSBCOiAkUChBKSArIFAoQikgPSAxLzYgKyAzLzYgPSA0LzYkDQoNCg0KMi4gUGVyaXN0aXdhIExlbmdrYXAgYXRhdSBUdW50YXMgKEV4aGF1c3RpdmUgRXZlbnRzKSBMZW5na2FwIChhdGF1IFR1bnRhcykgYXJ0aW55YSBnYWJ1bmdhbiBkYXJpIHNlbXVhIGtlamFkaWFuIHlhbmcga2l0YSBkZWZpbmlzaWthbiBtZW5jYWt1cCBzZWx1cnVoIFJ1YW5nIFNhbXBlbCAoUykuIEluaSBiZXJhcnRpIHRpZGFrIGFkYSBzYXR1IHB1biBoYXNpbCB5YW5nIG11bmdraW4gbHVwdXQgYXRhdSB0ZXJ0aW5nZ2FsIGRpIGx1YXIga2VqYWRpYW4ta2VqYWRpYW4gdGVyc2VidXQuUGVuamVsYXNhbiBTZWRlcmhhbmE6IEppa2EgQW5kYSBtZW5nZ2FidW5na2FuIHNlbXVhIGtlamFkaWFuIHlhbmcgYWRhLCB0b3RhbCBwZWx1YW5nbnlhIGhhcnVzIHNhbWEgZGVuZ2FuIDEgKGF0YXUgMTAwJSksIGthcmVuYSBnYWJ1bmdhbiB0ZXJzZWJ1dCBtZW5jYWt1cCBzZW11YSBrZW11bmdraW5hbiBoYXNpbCB5YW5nIGJpc2EgdGVyamFkaSBkYWxhbSBwZXJjb2JhYW4uDQoNCkthcmFrdGVyaXN0aWsgS3VuY2k6DQoNCkdhYnVuZ2FuIFBlbnVoOiBHYWJ1bmdhbiBzZWx1cnVoIGtlamFkaWFuIGFkYWxhaCBSdWFuZyBTYW1wZWwNCigkUyQpLiQkXG1hdGhiZntQKEEgXGN1cCBCIFxjdXAgXGRvdHMpID0gMX0kJENvbnRvaCAoTWVsZW1wYXIgRGFkdSBTZWthbGkpOg0KDQpLZWphZGlhbiBBOiBNdW5jdWxueWEgYmlsYW5nYW4gZ2FuamlsLiAoJFx7MSwgMywgNVx9JCwgJFAoQSkgPSAzLzYkKSANCg0KS2VqYWRpYW4gQjogTXVuY3VsbnlhIGJpbGFuZ2FuIGdlbmFwLg0KKCRcezIsIDQsIDZcfSQsICRQKEIpID0gMy82JCkNCg0KQW5hbGlzaXM6IEppa2EgZGlnYWJ1bmdrYW4sICRBIFxjdXAgQiA9IFx7MSwgMiwgMywgNCwgNSwgNlx9JCwgeWFuZyBtZXJ1cGFrYW4gc2VsdXJ1aCBSdWFuZyBTYW1wZWwuDQoNClBlbHVhbmcgR2FidW5nYW46ICRQKEEpICsgUChCKSA9IDMvNiArIDMvNiA9IDYvNiA9IDEkLg0KDQozLiBQZXJpc3Rpd2EgU2FsaW5nIExlcGFzIERBTiBMZW5na2FwIChQYXJ0aXRpb24pIEtldGlrYSBzZWJ1YWggc2V0IGtlamFkaWFuIG1lbWVudWhpIGtlZHVhIGtyaXRlcmlhIGRpIGF0YXMgeWFpdHUsIHRpZGFrIGFkYSB5YW5nIHR1bXBhbmcgdGluZGloIGRhbiBnYWJ1bmdhbm55YSBtZW5jYWt1cCBzZWx1cnVoIHJ1YW5nIHNhbXBlbCBtYWthIGtlamFkaWFuLWtlamFkaWFuIHRlcnNlYnV0IGRpc2VidXQgUGFydGlzaSAoUGFydGl0aW9uKSBkYXJpIHJ1YW5nIHNhbXBlbC4gIA0KDQpQZW5qZWxhc2FuIFNlZGVyaGFuYTpJbmkgYWRhbGFoIHBlbWJhZ2lhbiBSdWFuZyBTYW1wZWwgbWVuamFkaSBiZWJlcmFwYSAia290YWsiIHlhbmcgcmFwaS4gU2V0aWFwIGhhc2lsIHlhbmcgbXVuZ2tpbiBwYXN0aSBtYXN1ayBrZSBkYWxhbSBzYWxhaCBzYXR1IGtvdGFrLCBkYW4gdGlkYWsgYWRhIGhhc2lsIHlhbmcgbWFzdWsga2UgbGViaWggZGFyaSBzYXR1IGtvdGFrLg0KDQpLYXJha3RlcmlzdGlrIFBhcnRpc2k6IFNhbGluZyBMZXBhczogJFAoQSBcY2FwIEIpID0gMCRMZW5na2FwOiAkUChBKSArIFAoQikgKyBcZG90cyA9IDEkDQoNCkNvbnRvaCAoS29tcGxlbWVuKTpIdWJ1bmdhbiBhbnRhcmEgc3VhdHUga2VqYWRpYW4gJEEkIGRhbiBrb21wbGVtZW5ueWEgKCRBXmMkKSBhZGFsYWggY29udG9oIHBhbGluZyBzZW1wdXJuYSBkYXJpIFBhcnRpc2k6DQpLZWphZGlhbiBBOiBBbmRhIGx1bHVzIHVqaWFuLktlamFkaWFuICRBXmMkIChLb21wbGVtZW4pOiBBbmRhIHRpZGFrIGx1bHVzIHVqaWFuLlNhbGluZyBMZXBhcz8gWWEsIEFuZGEgdGlkYWsgbXVuZ2tpbiBsdWx1cyBkYW4gdGlkYWsgbHVsdXMgc2VjYXJhIGJlcnNhbWFhbi5MZW5na2FwPyBZYSwgQW5kYSBwYXN0aSBha2FuIGx1bHVzIGF0YXUgdGlkYWsgbHVsdXMuIEtlZHVhIGtlbXVuZ2tpbmFuIGluaSBtZW5jYWt1cCAxMDAlIGRhcmkgc2VtdWEgaGFzaWwgeWFuZyBtdW5na2luLg0KDQpCZXJpa3V0IGJpc2EgbGloYXQgdmlzdWFsaXNhc2kgaW5pOg0KYGBge3Igc2tlbmFyaW9fdmVubl9nYWJ1bmdhbiwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcud2lkdGg9MTYsIGZpZy5oZWlnaHQ9Nywgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRX0NCmxpYnJhcnkoVmVubkRpYWdyYW0pDQpsaWJyYXJ5KGdyaWQpDQpsaWJyYXJ5KGdyaWRFeHRyYSkgIyBEaWd1bmFrYW4gdW50dWsgbWVuZ2F0dXIgYmFueWFrIHBsb3QgZGFsYW0gc2F0dSBmaWd1cmUNCg0KIyBSdWFuZyBTYW1wZWwgUyA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH0NCg0KIyBTa2VuYXJpbyAxOiBUaWRhayBTYWxpbmcgTGVwYXMgJiBUaWRhayBMZW5na2FwDQpsaXN0XzEgPC0gbGlzdCgNCiAgQV9JcmlzYW4gPSAxOjYsICAjIFRlcm1hc3VrIDEsIDIsIDMgZGkgaXJpc2FuDQogIEJfSXJpc2FuID0gMzo4ICAgIyBUZXJtYXN1ayAzLCA0LCA1IGRpIGlyaXNhbg0KKSANCg0KIyBTa2VuYXJpbyAyOiBTYWxpbmcgTGVwYXMgJiBUaWRhayBMZW5na2FwDQpsaXN0XzIgPC0gbGlzdCgNCiAgQV9QaXNhaCA9IDE6MywgICAjIFBpc2FoIGRhcmkgQg0KICBCX1Bpc2FoID0gNzo5ICAgICMgUGlzYWggZGFyaSBBDQopDQoNCiMgU2tlbmFyaW8gMzogU2FsaW5nIExlcGFzICYgTGVuZ2thcCAoRXhoYXVzdGl2ZS9QYXJ0aXNpKQ0KbGlzdF8zIDwtIGxpc3QoDQogIENfR2VuYXAgPSBjKDIsIDQsIDYsIDgsIDEwKSwNCiAgRF9HYW5qaWwgPSBjKDEsIDMsIDUsIDcsIDkpDQopDQoNCg0KYnVhdF92ZW5uX3Bsb3QgPC0gZnVuY3Rpb24oZGF0YV9saXN0LCB0aXRsZSwgc3VidGl0bGUsIGZpbGxfY29sb3JzKSB7DQogIHZlbm4uZGlhZ3JhbSgNCiAgICB4ID0gZGF0YV9saXN0LA0KICAgIGNhdGVnb3J5Lm5hbWVzID0gbmFtZXMoZGF0YV9saXN0KSwNCiAgICBmaWxlbmFtZSA9IE5VTEwsIA0KICAgIGZpbGwgPSBmaWxsX2NvbG9ycywgDQogICAgYWxwaGEgPSAwLjYsDQogICAgY29sID0gInRyYW5zcGFyZW50IiwNCiAgICANCiAgICAjIEp1ZHVsIGRhbiBMYWJlbA0KICAgIG1haW4gPSB0aXRsZSwNCiAgICBzdWIgPSBzdWJ0aXRsZSwNCiAgICBtYWluLmZvbnRmYWNlID0gImJvbGQiLA0KICAgIG1haW4uY2V4ID0gMS4wLA0KICAgIHN1Yi5jZXggPSAwLjgsDQogICAgY2F0LmNleCA9IDAuOCwgDQogICAgY2V4ID0gMC43LCAjIFVrdXJhbiB0ZWtzIGRpIGFyZWEgaXJpc2FuL3VuaWsNCiAgICBtYXJnaW4gPSAwLjA1DQogICkNCn0NCg0KDQpwbG90XzEgPC0gYnVhdF92ZW5uX3Bsb3QoDQogIGxpc3RfMSwgDQogICIxLiBUaWRhayBTYWxpbmcgTGVwYXMiLCANCiAgIkEg4oipIEIg4omgIOKIhSAmIFRpZGFrIEV4aGF1c3RpZiIsIA0KICBjKCIjRkY5ODAwIiwgIiMyMTk2RjMiKQ0KKQ0KDQpwbG90XzIgPC0gYnVhdF92ZW5uX3Bsb3QoDQogIGxpc3RfMiwgDQogICIyLiBTYWxpbmcgTGVwYXMiLCANCiAgIkEg4oipIEIgPSDiiIUgJiBUaWRhayBFeGhhdXN0aWYiLCANCiAgYygiIzRDQUY1MCIsICIjOUMyN0IwIikNCikNCg0KcGxvdF8zIDwtIGJ1YXRfdmVubl9wbG90KA0KICBsaXN0XzMsIA0KICAiMy4gU2FsaW5nIExlcGFzICYgTGVuZ2thcCIsIA0KICAiQSDiiKkgQiA9IOKIhSAmIEEg4oiqIEIgPSBTIiwgDQogIGMoIiNEMzJGMkYiLCAiIzAwOTY4OCIpDQopDQoNCg0KIyBGdW5nc2kgZ3JpZC5hcnJhbmdlIChkYXJpIGdyaWRFeHRyYSkgbWVuZ2F0dXIgdGF0YSBsZXRhayAzIHBsb3QgZGFsYW0gMSBiYXJpcw0KZ3JpZC5hcnJhbmdlKGdUcmVlKGNoaWxkcmVuID0gcGxvdF8xKSwgDQogICAgICAgICAgICAgZ1RyZWUoY2hpbGRyZW4gPSBwbG90XzIpLCANCiAgICAgICAgICAgICBnVHJlZShjaGlsZHJlbiA9IHBsb3RfMyksIA0KICAgICAgICAgICAgIG5jb2wgPSAzKQ0KYGBgDQoNCiMjIC4gQmlub21pbmFsIEV4cGVyaW1lbnQNCjxjZW50ZXI+DQo8aWZyYW1lIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvblJ1UUF0YWpKWWs/c2k9MkZlZVVKUkM0RU45MnQybCIgd2lkdGg9IjU2MCIgaGVpZ2h0PSIzMTUiIHdpZHRoPSI3NjgiIGhlaWdodD0iNDAwcHgiIGRhdGEtZXh0ZXJuYWw9IjEiPiA8L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyMgLiBSYW5na3VtYW4gbWF0ZXJpIGRhcmkgdmlkZW8gdGVyc2VidXQNClByb2JhYmlsaXRhcyBCaW5vbWlhbCBhZGFsYWggY2FyYSBtZW5naGl0dW5nIHBlbHVhbmcgdGVyamFkaW55YSBzZWp1bWxhaCBrZWJlcmhhc2lsYW4gKHN1Y2Nlc3MpIHRlcnRlbnR1IGRhbGFtIHNlcmFuZ2thaWFuIHBlcmNvYmFhbiB5YW5nIGRpdWxhbmcuIEthdGEgIkJpIiAoQmlub21pYWwpIGJlcmFydGkgZHVhLCBtZXJ1anVrIHBhZGEgZmFrdGEgYmFod2Egc2V0aWFwIHBlcmNvYmFhbiBoYW55YSBtZW1pbGlraSBkdWEgaGFzaWwgeWFuZyBtdW5na2luOiBTdWtzZXMgYXRhdSBHYWdhbC4NCg0KMS4gRW1wYXQgS29uZGlzaSBQZXJjb2JhYW4gQmlub21pYWwgKFN5YXJhdCBXYWppYikgU2VidWFoIHBlcmNvYmFhbiBoYW55YSBiaXNhIGRpc2VidXQgUGVyY29iYWFuIEJpbm9taWFsIGppa2EgbWVtZW51aGkgZW1wYXQgc3lhcmF0IGtldGF0IGJlcmlrdXQ6DQpDb250b2ggKE1lbGVtcGFyIEtvaW4gbj0zKTEuIEp1bWxhaCBQZXJjb2JhYW4gVGV0YXAgKEZpeGVkICRuJClQZXJjb2JhYW4gaGFydXMgZGl1bGFuZyBkYWxhbSBqdW1sYWggeWFuZyBzdWRhaCBkaXRlbnR1a2FuIChmaXhlZCkgZGFuIHRpZGFrIGJlcnViYWguJG49MyQga2FyZW5hIGtvaW4gZGlsZW1wYXIgc2ViYW55YWsgMyBrYWxpLg0KDQoyLiBIYW55YSBkdWEgaGFzaWwgc2V0aWFwIHVsYW5nYW4gcGVyY29iYWFuIGhhbnlhIG1lbWlsaWtpIGR1YSBoYXNpbDogU3Vrc2VzIChTKSBhdGF1IEdhZ2FsIChGKS5TdWtzZXMgKFMpID0gTWVuZGFwYXQgS2VwYWxhIChIKS4gR2FnYWwgKEYpID0gTWVuZGFwYXQgRWtvciAoVCkuDQoNCjMuIFBlbHVhbmcgU3Vrc2VzIEtvbnN0YW4gKCRwJClQcm9iYWJpbGl0YXMgU3Vrc2VzICgkcCQpIGhhcnVzIHNhbWEgZGkgc2V0aWFwIHVsYW5nYW4gcGVyY29iYWFuLg0KJFAoXHRleHR7S2VwYWxhfSkgPSAwLjUkLCBkYW4gbmlsYWkgaW5pIHRpZGFrIGJlcnViYWggcGFkYSBsZW1wYXJhbiBrZS0xLCBrZS0yLCBhdGF1IGtlLTMuDQoNCjQuIEluZGVwZW5kZW4gaGFzaWwgZGFyaSBzYXR1IHBlcmNvYmFhbiB0aWRhayBtZW1lbmdhcnVoaSBoYXNpbCBkYXJpIHBlcmNvYmFhbiBiZXJpa3V0bnlhLkhhc2lsIGxlbXBhcmFuIHBlcnRhbWEgdGlkYWsgbWVuZ3ViYWggcGVsdWFuZyBoYXNpbCBsZW1wYXJhbiBrZWR1YS4NCkppa2EgcGVyY29iYWFuIG1lbGliYXRrYW4gcGVuZ2FtYmlsYW4gdGFucGEgcGVuZ2VtYmFsaWFuLCBzeWFyYXQgKDMpIGRhbiAoNCkgYmlhc2FueWEgZGlsYW5nZ2FyLCBkYW4gaXR1IGJ1a2FuIGxhZ2kgcGVyY29iYWFuIEJpbm9taWFsLg0KTWVuZ2hpdHVuZyBQcm9iYWJpbGl0YXMgQmlub21pYWwgc2V0ZWxhaCBtZW1hc3Rpa2FuIHBlcmNvYmFhbiBhZGFsYWggQmlub21pYWwsIGFkYSBkdWEgY2FyYSB1bnR1ayBtZW5naGl0dW5nIHBlbHVhbmcsIHlhbmcga2VkdWFueWEgbWVuZ2hhc2lsa2FuIGphd2FiYW4geWFuZyBzYW1hLg0KDQpDYXJhIDE6IFBlbmRla2F0YW4gRW51bWVyYXNpIChNZW5kYWZ0YXIgU2VtdWEgS2VtdW5na2luYW4pIG1ldG9kZSBpbmkgZGlsYWt1a2FuIGRlbmdhbiBtZW5kYWZ0YXIgc2VtdWEgdXJ1dGFuIGhhc2lsIHlhbmcgbXVuZ2tpbiBtZW5jYXBhaSBqdW1sYWggc3Vrc2VzICgkayQpIHlhbmcgZGlpbmdpbmthbiwga2VtdWRpYW4gbWVuanVtbGFoa2FuIHBlbHVhbmcgc2V0aWFwIHVydXRhbiB0ZXJzZWJ1dDoNCg0KTGFuZ2thaCAxOiBUZW50dWthbiBzZW11YSB1cnV0YW4geWFuZyBtdW5na2luLg0KQ29udG9oOiBQZWx1YW5nIG1lbmRhcGF0IHRlcGF0IDEgS2VwYWxhICgkaz0xJCkgZGFsYW0gMyBsZW1wYXJhbiAoJG49MyQpLg0KDQpVcnV0YW4geWFuZyBtdW5na2luIGFkYWxhaDogJFxtYXRoYmZ7SEZGfSQsICRcbWF0aGJme0ZIRn0kLCBkYW4gJFxtYXRoYmZ7RkZIfSQuIChUb3RhbCBhZGEgMyBjYXJhKS4NCg0KTGFuZ2thaCAyOiBIaXR1bmcgcGVsdWFuZyBzZXRpYXAgdXJ1dGFuLiRQKFxtYXRoYmZ7SEZGfSkgPSBQKEgpIFx0aW1lcyBQKEYpIFx0aW1lcyBQKEYpID0gMC41IFx0aW1lcyAwLjUgXHRpbWVzIDAuNSA9IDAuMTI1JCANCkthcmVuYSBzZXRpYXAgdXJ1dGFuIG1lbWlsaWtpIDEgU3Vrc2VzIChIKSBkYW4gMiBHYWdhbCAoRiksIHBlbHVhbmdueWEgcGFzdGkgc2FtYTogMC4xMjUuDQoNCkxhbmdrYWggMzogSnVtbGFoa2FuIHBlbHVhbmcgc2VtdWEgdXJ1dGFuLg0KDQokUChcdGV4dHt0ZXBhdCB9IDFIKSA9IDAuMTI1ICsgMC4xMjUgKyAwLjEyNSA9IFxtYXRoYmZ7MC4zNzV9JCANCkNhcmEgMjogTWVuZ2d1bmFrYW4gUnVtdXMgQmlub21pYWwgdW50dWsga2FzdXMgeWFuZyBsZWJpaCBrb21wbGVrcyAobWlzYWxueWEsIDEwIGthbGkgdWxhbmdhbiksIG1lbmRhZnRhciBzZW11YSBrZW11bmdraW5hbiB1cnV0YW4gYWthbiBtZW1ha2FuIHdha3R1LiBSdW11cyBCaW5vbWlhbCBhZGFsYWggamFsYW4gcGludGFzIHlhbmcgZWxlZ2FuIHVudHVrIG1lbmdoaXR1bmcgaGFzaWxueWEuDQoNClJ1bXVzIEJpbm9taWFsOiQkXG1hdGhiZntQKFggPSBrKSA9IFxiaW5vbXtufXtrfSBcY2RvdCBwXmsgXGNkb3QgKDEtcClee24ta319JCQNCg0KUGVuamVsYXNhbiBLb21wb25lbiBSdW11czoNCg0KS29tcG9uZW4gTmFtYSANCg0KS2V0ZXJhbmdhbiBGdW5nc2kkXGJpbm9te259e2t9JEtvbWJpbmFzaSAobiBjaG9vc2UgaykNCkRpYmFjYTogIkp1bWxhaCBjYXJhIG1lbWlsaWggJGskIHN1a3NlcyBkYXJpICRuJCBwZXJjb2JhYW4uIk1lbmdoaXR1bmcganVtbGFoIHRvdGFsIHVydXRhbiB5YW5nIG11bmdraW4gKG1lbmdnYW50aWthbiBMYW5na2FoIDEgZGkgYXRhcykuJHBeayQgUGVsdWFuZyBTdWtzZXMgJHAkIGFkYWxhaCBwZWx1YW5nIHN1a3NlcywgZGlwYW5na2F0a2FuIGRlbmdhbiBqdW1sYWggc3Vrc2VzIHlhbmcgZGlpbmdpbmthbiAoJGskKS5NZW5naGl0dW5nIHBlbHVhbmcgdGVyamFkaW55YSAkayQga2FsaSBTdWtzZXMgJCgxLXApXntuLWt9JCBQZWx1YW5nIEdhZ2FsJCgxLXApJCBhZGFsYWggcGVsdWFuZyBHYWdhbCAoc2VyaW5nIGRpbm90YXNpa2FuIHNlYmFnYWkgJHEkKSwgZGlwYW5na2F0a2FuIGRlbmdhbiBqdW1sYWggR2FnYWwgeWFuZyB0ZXJzaXNhICgkbi1rJCkuTWVuZ2hpdHVuZyBwZWx1YW5nIHRlcmphZGlueWEgJChuLWspJCBrYWxpIEdhZ2FsLg0KDQpDb250b2ggUGVyaGl0dW5nYW4gZGVuZ2FuIFJ1bXVzOk1lbGFuanV0a2FuIGNvbnRvaCBrZWxlcmVuZyAoYW1iaWwgdGVwYXQgMiBIaWphdSAoJGs9MiQpIGRhcmkgNSBrYWxpIGFtYmlsICgkbj01JCkgZGVuZ2FuIHBlbmdlbWJhbGlhbik6DQoNCiRuPTUkJGs9MiQkcCA9IFAoXHRleHR7SGlqYXV9KSA9IDIvMTAgPSAwLjIkICQxLXAgPSBQKFx0ZXh0e0J1a2FuIEhpamF1fSkgPSAwLjgkIA0KDQpIaXR1bmcgS29tYmluYXNpICgkXGJpbm9te259e2t9JCk6JCRcYmlub217NX17Mn0gPSAxMCQkIChJbmkgYmVyYXJ0aSBhZGEgMTAgdXJ1dGFuIGJlcmJlZGEgeWFuZyBtdW5na2luLCBzZXBlcnRpIHlhbmcgZGl0ZW11a2FuIHBhZGEgY29udG9oIHZpZGVvKQ0KDQpIaXR1bmcgUGVsdWFuZzokJFAoWD0yKSA9IDEwIFxjZG90ICgwLjIpXjIgXGNkb3QgKDAuOCleezUtMn0kJCQkUChYPTIpID0gMTAgXGNkb3QgKDAuMDQpIFxjZG90ICgwLjgpXjMkJCQkUChYPTIpID0gMTAgXGNkb3QgMC4wNCBcY2RvdCAwLjUxMiQkJCRQKFg9MikgPSBcbWF0aGJmezAuMjA0OH0kJA0KUnVtdXMgQmlub21pYWwgaW5pIG1lbWJlcmlrYW4gamFsYW4gcGludGFzIHlhbmcgY2VwYXQgZGFuIGFuZGFsLCBhc2Fsa2FuIGVtcGF0IGtvbmRpc2kgUGVyY29iYWFuIEJpbm9taWFsIHRlcnBlbnVoaS4NCkJlcmlrdXQgYmlzYSBsaWhhdCB2aXN1YWxpc2FzaSBpbmk6DQoNCmBgYHtyIGJpbm9taWFsX2NsZWFuX3Bsb3QsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9Niwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRX0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZHBseXIpDQoNCm5fdHJpYWxzIDwtIDEwICAjIEp1bWxhaCBwZXJjb2JhYW4NCnBfc3VjY2VzcyA8LSAwLjMgIyBQZWx1YW5nIHN1a3Nlcw0KbXVfbWVhbiA8LSBuX3RyaWFscyAqIHBfc3VjY2VzcyAjIFJhdGEtcmF0YSAobWVhbik6IDEwICogMC4zID0gMw0KDQojIE1lbWJ1YXQgZGF0YSBmcmFtZSB1bnR1ayBkaXN0cmlidXNpDQpkZl9iaW5vbSA8LSBkYXRhLmZyYW1lKA0KICBrX3N1Y2Nlc3MgPSAwOm5fdHJpYWxzLA0KICBQcm9iYWJpbGl0eSA9IGRiaW5vbSh4ID0gMDpuX3RyaWFscywgc2l6ZSA9IG5fdHJpYWxzLCBwcm9iID0gcF9zdWNjZXNzKQ0KKQ0KDQojIE1lbmVudHVrYW4gYmFyIGRlbmdhbiBwZWx1YW5nIHRlcnRpbmdnaQ0KZGZfYmlub20gPC0gZGZfYmlub20gJT4lDQogIG11dGF0ZShpc19tYXggPSBpZmVsc2UoUHJvYmFiaWxpdHkgPT0gbWF4KFByb2JhYmlsaXR5KSwgIlBlbHVhbmcgTWFrc2ltdW0iLCAiTGFpbm55YSIpKQ0KDQp2aXN1YWxpc2FzaV9yYXBpIDwtIGdncGxvdChkZl9iaW5vbSwgYWVzKHggPSBmYWN0b3Ioa19zdWNjZXNzKSwgeSA9IFByb2JhYmlsaXR5LCBmaWxsID0gaXNfbWF4KSkgKw0KICANCiAgIyBEaWFncmFtIEJhdGFuZw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgY29sb3IgPSAid2hpdGUiLCBhbHBoYSA9IDAuOSkgKw0KICANCiAgIyBNZW5hbWJhaGthbiBMYWJlbCBBbmdrYSBkaSBhdGFzIEJhdGFuZw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcm91bmQoUHJvYmFiaWxpdHksIDMpKSwgDQogICAgICAgICAgICB2anVzdCA9IC0wLjUsIHNpemUgPSAzLjUpICsNCiAgDQogICMgTWVuYW1iYWhrYW4gR2FyaXMgVmVydGlrYWwgdW50dWsgUmF0YS1yYXRhIChNZWFuKQ0KICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBtdV9tZWFuICsgMSwgIyArMSBrYXJlbmEgc3VtYnUgWCBiZXJ0aXBlIGZha3Rvci9kaXNrcmV0DQogICAgICAgICAgICAgbGluZXR5cGUgPSAiZGFzaGVkIiwgY29sb3IgPSAiI0QzMkYyRiIsIGxpbmV3aWR0aCA9IDEpICsNCiAgDQogICMgTWVuYW1iYWhrYW4gTGFiZWwgUmF0YS1yYXRhDQogIGFubm90YXRlKCJ0ZXh0IiwgeCA9IG11X21lYW4gKyAxLjUsIHkgPSBtYXgoZGZfYmlub20kUHJvYmFiaWxpdHkpICogMC45NSwNCiAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoIlJhdGEtcmF0YSAozrwpID0gIiwgbXVfbWVhbiksIA0KICAgICAgICAgICBjb2xvciA9ICIjRDMyRjJGIiwgZm9udGZhY2UgPSAiYm9sZCIsIHNpemUgPSA0KSArDQogIA0KICAjIEt1c3RvbWlzYXNpIEp1ZHVsIGRhbiBMYWJlbCBTdW1idQ0KICBsYWJzKA0KICAgIHRpdGxlID0gcGFzdGUwKCJEaXN0cmlidXNpIEJpbm9taWFsIEIobj0iLCBuX3RyaWFscywgIiwgcD0iLCBwX3N1Y2Nlc3MsICIpIiksDQogICAgc3VidGl0bGUgPSAiVmlzdWFsaXNhc2kgUGVsdWFuZyBUaWFwIEp1bWxhaCBTdWtzZXMgKGspIiwNCiAgICB4ID0gIkp1bWxhaCBTdWtzZXMgKGspIiwNCiAgICB5ID0gIlByb2JhYmlsaXRhcyBQKFggPSBrKSINCiAgKSArDQogIA0KICAjIEt1c3RvbWlzYXNpIFdhcm5hIGRhbiBUZW1hDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIlBlbHVhbmcgTWFrc2ltdW0iID0gIiMwMDk2ODgiLCAiTGFpbm55YSIgPSAiIzQyODVGNCIpKSArDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIG1heChkZl9iaW5vbSRQcm9iYWJpbGl0eSkgKiAxLjIpKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIsIHNpemUgPSAxNSksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLCAjIEhpbGFuZ2thbiBsZWdlbmRhIGthcmVuYSBpc19tYXggc3VkYWggamVsYXMNCiAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gVmlzdWFsaXNhc2kNCnByaW50KHZpc3VhbGlzYXNpX3JhcGkpDQpgYGANCg0KDQojIyAuIEJpbm9taW5hbCBEaXN0cmlidWl0aW9uDQo8Y2VudGVyPg0KPGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1kyLXZTV0ZtZ3lJIiB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI0MDBweCIgZGF0YS1leHRlcm5hbD0iMSI+IDwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIyAuIFJhbmdrdW1hbiBtYXRlcmkgZGFyaSB2aWRlbyB0ZXJzZWJ1dA0KRGlzdHJpYnVzaSBCaW5vbWlhbCBhZGFsYWggZ3JhZmlrIGF0YXUgZGlhZ3JhbSB5YW5nIG1lbnVuanVra2FuIHBlbHVhbmcgKHByb2JhYmlsaXRhcykgdW50dWsgc2V0aWFwIGtlbXVuZ2tpbmFuIGp1bWxhaCBzdWtzZXMgKCRrJCkgZGFyaSB0b3RhbCBwZXJjb2JhYW4gKCRuJCkgeWFuZyBraXRhIGxha3VrYW4uDQoNCjEuIERhc2FyIFZpc3VhbGlzYXNpIChNZW5nZ3VuYWthbiBEaWFncmFtIEJhdGFuZykgdW50dWsgbWVtdmlzdWFsaXNhc2lrYW4gRGlzdHJpYnVzaSBCaW5vbWlhbCwga2l0YSBtZW5nZ3VuYWthbiBEaWFncmFtICBCYXRhbmcgKEJhciBDaGFydCk6U3VtYnUgWCAoSG9yaXpvbnRhbCk6IE1lbnVuanVra2FuIEp1bWxhaCBTdWtzZXMgKCRrJCkgeWFuZyBtdW5na2luIChtdWxhaSBkYXJpIDAgaGluZ2dhICRuJCkuU3VtYnUgWSAoVmVydGlrYWwpOiANCk1lbnVuanVra2FuIFByb2JhYmlsaXRhcyAoJFAkKSB0ZXJqYWRpbnlhIGp1bWxhaCBzdWtzZXMgdGVyc2VidXQuDQoNCkNvbnRvaCAoS29pbiAyIEthbGksICRuPTIkKTogS2l0YSBtZW5naGl0dW5nICRQKGs9MCksIFAoaz0xKSwkIGRhbiAkUChrPTIpJCBtZW5nZ3VuYWthbiBydW11cyBCaW5vbWlhbC4kUChrPTApID0gMC4yNSQkUChrPTEpID0gMC41MCQkUChrPTIpID0gMC4yNSQNCg0KVmlzdWFsaXNhc2kgbWVudW5qdWtrYW4gZGlhZ3JhbSB0ZXJ0aW5nZ2kgYWRhIGRpICRrPTEkLCBrYXJlbmEgaXR1IGFkYWxhaCBoYXNpbCB5YW5nIHBhbGluZyBtdW5na2luLg0KDQoyLiBQYXJhbWV0ZXIgUGVudGluZyBEaXN0cmlidXNpIEJpbm9taWFsIFNldGlhcCBEaXN0cmlidXNpIEJpbm9taWFsIGRhcGF0IGRpamVsYXNrYW4gbWVuZ2d1bmFrYW4gdGlnYSBwYXJhbWV0ZXIgc3RhdGlzdGlrIHV0YW1hOg0KDQpQYXJhbWV0ZXIgUnVtdXMgS2V0ZXJhbmdhbiByYXRhLXJhdGEgKCRcbXUkKSRcbWF0aGJme1xtdSA9IG4gXHRpbWVzIHB9JCANCg0KSW5pIGFkYWxhaCBuaWxhaSBzdWtzZXMgeWFuZyBwYWxpbmcgZGloYXJhcGthbiAoZXhwZWN0ZWQgbnVtYmVyIG9mIHN1Y2Nlc3MpLlZhcmlhbnMgKCRcc2lnbWFeMiQpJFxtYXRoYmZ7XHNpZ21hXjIgPSBuIFx0aW1lcyBwIFx0aW1lcyAoMS1wKX0kIA0KDQpNZW5ndWt1ciBzZWJlcmFwYSBiZXNhciBwZW55ZWJhcmFuIGRhdGEgZGkgc2VraXRhciByYXRhLXJhdGEuDQpTaW1wYW5nYW4gQmFrdSAoJFxzaWdtYSQpJFxtYXRoYmZ7XHNpZ21hID0gXHNxcnR7biBcdGltZXMgcCBcdGltZXMgKDEtcCl9fSQgQWthciBrdWFkcmF0IGRhcmkgVmFyaWFuczsgbWVudW5qdWtrYW4gcmF0YS1yYXRhIGphcmFrIGRhdGEgZGFyaSByYXRhLXJhdGEuIFBlbnRpbmc6IERhdGEgZGFsYW0gRGlzdHJpYnVzaSBCaW5vbWlhbCBha2FuIHNlbGFsdSBiZXJrdW1wdWwgZGkgc2VraXRhciBuaWxhaSByYXRhLXJhdGEgKCRcbXUkKS4NCg0KMy4gRmFrdG9yIFBlbmVudHUgQmVudHVrIERpc3RyaWJ1c2k6IGJlbnR1ayBkYXJpIERpYWdyYW0gQmF0YW5nIEJpbm9taWFsIHNhbmdhdCBkaXBlbmdhcnVoaSBvbGVoIGR1YSB2YXJpYWJlbDogSnVtbGFoIFBlcmNvYmFhbiAoJG4kKSBkYW4gUGVsdWFuZyBTdWtzZXMgKCRwJCkuDQoNClBlcmFuIFBlbHVhbmcgU3Vrc2VzICgkcCQpIE5pbGFpICRwJCBtZW5lbnR1a2FuIGFwYWthaCBkaXN0cmlidXNpIGFrYW4gc2ltZXRyaXMgYXRhdSBtZW5jZW5nL21pcmluZyAoc2tld2VkKToNCk5pbGFpIHAgQmVudHVrIERpc3RyaWJ1c2kgUGVuamVsYXNhbiAkcCA9IDAuNSQgU2ltZXRyaXMgcmF0YS1yYXRhICgkXG11JCkgYmVyYWRhIHRlcGF0IGRpIHRlbmdhaC4gUGVsdWFuZyBzdWtzZXMgc2FtYSBkZW5nYW4gcGVsdWFuZyBnYWdhbCAoY29udG9oOiBrb2luIHNlaW1iYW5nKS4gJHAgPCAwLjUkLiBNZW5jZW5nIGtlIGthbmFuIChTa2V3ZWQgUmlnaHQpIFBlbHVhbmcgc3Vrc2VzIHJlbmRhaCAobWlzYWxueWEgJHA9MC4xJCkuIERhdGEgYmVya3VtcHVsIGRpIHNpc2kga2lyaSAoZGVrYXQgYW5na2EgMCksIGthcmVuYSBraXRhIGJlcmhhcmFwIG1lbmRhcGF0a2FuIHNlZGlraXQgc3Vrc2VzLiRwID4gMC41JE1lbmNlbmcga2UgS2lyaSAoU2tld2VkIExlZnQpUGVsdWFuZyBzdWtzZXMgdGluZ2dpIChtaXNhbG55YSAkcD0wLjgkKS4gRGF0YSBiZXJrdW1wdWwgZGkgc2lzaSBrYW5hbiAoZGVrYXQgYW5na2EgJG4kKSwga2FyZW5hIGtpdGEgYmVyaGFyYXAgbWVuZGFwYXRrYW4gYmFueWFrIHN1a3Nlcy4NCg0KUGVyYW4gSnVtbGFoIFBlcmNvYmFhbiAoJG4kKSBOaWxhaSAkbiQgbWVuZ2VuZGFsaWthbiBzZWJlcmFwYSBkZWthdCBEaXN0cmlidXNpIEJpbm9taWFsIGRlbmdhbiBEaXN0cmlidXNpIE5vcm1hbCAoTm9ybWFsIERpc3RyaWJ1dGlvbik6IFNlbWFraW4gYmVzYXIgbmlsYWkgJG4kLCBiYWdhbiBiYXRhbmcgQmlub21pYWwgYWthbiBzZW1ha2luIG11bHVzIGRhbiBzZW1ha2luIG1lbnllcnVwYWkgbG9uY2VuZyAoYmVudHVrIERpc3RyaWJ1c2kgTm9ybWFsKS5LZXRpa2EgJG4kIHNhbmdhdCBiZXNhciwga2l0YSBkYXBhdCBtZW5nYXByb2tzaW1hc2kgKG1lbmRla2F0aSkgaGFzaWwgQmlub21pYWwgbWVuZ2d1bmFrYW4gdGFiZWwgRGlzdHJpYnVzaSBOb3JtYWwuDQoNCjQuIFBlZG9tYW4gQXByb2tzaW1hc2kgTm9ybWFsIChOb3JtYWwgQXBwcm94aW1hdGlvbikgS2FwYW4ga2l0YSBib2xlaCBtZW5nYW5nZ2FwIERpc3RyaWJ1c2kgQmlub21pYWwgc3VkYWggY3VrdXAgTm9ybWFsIHVudHVrIG1lbmdndW5ha2FuIHBlcmhpdHVuZ2FuIERpc3RyaWJ1c2kgTm9ybWFsIHlhbmcgbGViaWggbXVkYWg/IEFkYSBkdWEgYXR1cmFuIHVtdW0geWFuZyBoYXJ1cyBkaXBlbnVoaSBrZWR1YW55YToNCg0KJG4gXHRpbWVzIHAgXGdlIDEwJCAoUmF0YS1yYXRhIHN1a3NlcyBoYXJ1cyBtaW5pbWFsIDEwKSRuIFx0aW1lcyAoMS1wKSBcZ2UgMTAkIChSYXRhLXJhdGEgZ2FnYWwgaGFydXMgbWluaW1hbCAxMCkNCg0KVHVqdWFuOiBLZWR1YSBzeWFyYXQgaW5pIG1lbWFzdGlrYW4gYmFod2EgZGlzdHJpYnVzaSBtZW1pbGlraSBjdWt1cCBiYW55YWsgaGFzaWwgeWFuZyB0ZXJzZWJhciBkaSB0ZW5nYWggc2VoaW5nZ2EgdGlkYWsgdGVybGFsdSBtZW5jZW5nL21pcmluZy4NCg0KQmVyaWt1dCBiaXNhIGxpaGF0IHZpc3VhbGlzYXNpIGluaToNCmBgYHtyIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbl9wbG90LCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy53aWR0aD0xNCwgZmlnLmhlaWdodD0xMCwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRX0NCg0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkocGF0Y2h3b3JrKSAjIERpZ3VuYWthbiB1bnR1ayBtZW5nZ2FidW5na2FuIHBsb3Qgc2VjYXJhIHJhcGkgc2lkZS1ieS1zaWRlDQoNCm5fdHJpYWxzIDwtIDEwICMgSnVtbGFoIHBlcmNvYmFhbiAobikgZGlwZXJ0YWhhbmthbiBrb25zdGFuDQpwX3ZhbHVlcyA8LSBjKDAuMSwgMC41LCAwLjgpICMgVGlnYSBuaWxhaSBwZWx1YW5nIHN1a3NlcyAocCkNCg0KIyBNZW1idWF0IGRhdGEgZnJhbWUgdW50dWsgc2VtdWEgc2tlbmFyaW8NCmRmX2Jpbm9tIDwtIGRhdGEuZnJhbWUoKQ0KZm9yIChwX3ZhbCBpbiBwX3ZhbHVlcykgew0KICAjIE1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzIGJpbm9taWFsIHVudHVrIGs9MCBoaW5nZ2Egaz1uDQogIHByb2JfayA8LSBkYmlub20oeCA9IDA6bl90cmlhbHMsIHNpemUgPSBuX3RyaWFscywgcHJvYiA9IHBfdmFsKQ0KICANCiAgIyBNZW5hbWJhaGthbiBkYXRhIGtlIGRhdGEgZnJhbWUgdXRhbWENCiAgZGZfdGVtcCA8LSBkYXRhLmZyYW1lKA0KICAgIGtfc3VjY2VzcyA9IDA6bl90cmlhbHMsICMgSnVtbGFoIHN1a3NlcyAoeC1heGlzKQ0KICAgIFByb2JhYmlsaXR5ID0gcHJvYl9rLCAgICAjIFBlbHVhbmcgKHktYXhpcykNCiAgICBwX2xhYmVsID0gcGFzdGUwKCJQZWx1YW5nIFN1a3NlcyAocCkgPSAiLCBwX3ZhbCkNCiAgKQ0KICBkZl9iaW5vbSA8LSByYmluZChkZl9iaW5vbSwgZGZfdGVtcCkNCn0NCg0KIyBNZW5ndWJhaCBwX2xhYmVsIG1lbmphZGkgZmFrdG9yIHVudHVrIHBlbmd1cnV0YW4gcGxvdCB5YW5nIGJlbmFyDQpkZl9iaW5vbSRwX2xhYmVsIDwtIGZhY3RvcihkZl9iaW5vbSRwX2xhYmVsLCBsZXZlbHMgPSBwYXN0ZTAoIlBlbHVhbmcgU3Vrc2VzIChwKSA9ICIsIHBfdmFsdWVzKSkNCg0KIyBNZW5nZ3VuYWthbiBmYWNldF93cmFwIHVudHVrIG1lbWJ1YXQgMyBwbG90IGJlcmRhc2Fya2FuIG5pbGFpICdwJw0KbWFpbl9wbG90IDwtIGdncGxvdChkZl9iaW5vbSwgYWVzKHggPSBmYWN0b3Ioa19zdWNjZXNzKSwgeSA9IFByb2JhYmlsaXR5KSkgKw0KICANCiAgIyBEaWFncmFtIEJhdGFuZyAoQmFyIFBsb3QpDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBmaWxsID0gIiMzRjUxQjUiLCBjb2xvciA9ICJ3aGl0ZSIpICsNCiAgDQogICMgTWVuYW1iYWhrYW4gZ2FyaXMgaG9yaXpvbnRhbCBwYWRhIHk9MA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjUpICsNCiAgDQogICMgTWVuZ2F0dXIgc2thbGEgWQ0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDAuNSwgMC4xKSwgbGltaXRzID0gYygwLCBtYXgoZGZfYmlub20kUHJvYmFiaWxpdHkpICogMS4wNSkpICsNCiAgDQogICMgSnVkdWwgZGFuIExhYmVsIFN1bWJ1DQogIGxhYnMoDQogICAgdGl0bGUgPSAiVmlzdWFsaXNhc2kgRGlzdHJpYnVzaSBCaW5vbWlhbCAobiA9IDEwKSIsDQogICAgeCA9ICJKdW1sYWggU3Vrc2VzIChrKSIsDQogICAgeSA9ICJQcm9iYWJpbGl0YXMgUChYID0gaykiDQogICkgKw0KICANCiAgIyBNZW1iYWdpIHBsb3QgYmVyZGFzYXJrYW4gbmlsYWkgcCAobWVtYnVhdCAzIHBhbmVsIGJlcmRhbXBpbmdhbikNCiAgZmFjZXRfd3JhcCh+IHBfbGFiZWwsIG5jb2wgPSAzKSArDQogIA0KICAjIEt1c3RvbWlzYXNpIFRlbWEgYWdhciBiZXJzaWggZGFuIHJhcGkNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIiwgc2l6ZSA9IDE2KSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHNpemUgPSAxMSksICMgTGFiZWwgZmFjZXQgKHA9MC4xLCBkbGwpDQogICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9ibGFuaygpLCAjIEhpbGFuZ2thbiBnYXJpcyBncmlkIHZlcnRpa2FsDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiKQ0KICApDQoNCiMgTWVuYW1waWxrYW4gUGxvdCBVdGFtYQ0KcHJpbnQobWFpbl9wbG90KQ0KYGBgDQoNCiMjIC4gUmVmZXJlbnNpDQoNClJhbmdrdW1hbiBtYXRlcmkgRXNzZW50aWFsIG9mIFByb2JhYmlsaXR5IGluaSBkaWFtYmlsIGRhcmkga29uc2VwLWtvbnNlcCBpbnRpIHlhbmcgZGlhamFya2FuIGRhbGFtIHJlZmVyZW5zaSBidWt1IHRla3Mgc3RhdGlzdGlrYSBkYW4gcHJvYmFiaWxpdGFzIHN0YW5kYXIsIGFudGFyYSBsYWluOg0KDQoxLiBCbHVtYW4sIEFsbGFuIEcuICgyMDIxKS4gRWxlbWVudGFyeSBTdGF0aXN0aWNzOiBBIFN0ZXAgYnkgU3RlcCBBcHByb2FjaCAoMTF0aCBlZC4pLiBNY0dyYXctSGlsbCBFZHVjYXRpb24uDQoNCjIuIFdhbHBvbGUsIFJvbmFsZCBFLiwgTXllcnMsIFJheW1vbmQgSC4sIGV0IGFsLiAoMjAxNykuIFByb2JhYmlsaXR5IGFuZCBTdGF0aXN0aWNzIGZvciBFbmdpbmVlcnMgYW5kIFNjaWVudGlzdHMgKDl0aCBlZC4pLiBQZWFyc29uLg0KDQozLiBNb250Z29tZXJ5LCBEb3VnbGFzIEMuLCBkYW4gUnVuZ2VyLCBHZW9yZ2UgQy4gQXBwbGllZCBTdGF0aXN0aWNzIGFuZCBQcm9iYWJpbGl0eSBmb3IgRW5naW5lZXJzLg0KDQo0LiBTcGllZ2VsLCBNdXJyYXkgUi4sIFNjaGlsbGVyLCBKb2huLCBkYW4gU3Jpbml2YXNhbiwgUi4gQWx1LiBTY2hhdW0ncyBPdXRsaW5lIG9mIFByb2JhYmlsaXR5IGFuZCBTdGF0aXN0aWNzLiANCg0KNS4gTW9vcmUsIERhdmlkIFMuLCBNY0NhYmUsIEdlb3JnZSBQLiwgZXQgYWwuIEludHJvZHVjdGlvbiB0byB0aGUgUHJhY3RpY2Ugb2YgU3RhdGlzdGljcy4g