Mengestimasi Distribusi Frekuensi

Estimasi Parameter dan Distribusi Frekuensi MLE


Kontak : \(\downarrow\)
Email
Instagram https://www.instagram.com/boring.garr/
RPubs https://rpubs.com/garr/

2.4 Mengestimasi Distibusi Frekuensi

Pada bagian ini, Anda akan mempelajari bagaimana caranya:

  • Menentukan kemungkinan atau probability suatu sampel pengamatan dari distribusi diskrit

  • Menentukan penaksir kemungkinan maksimum untuk sampel acak pengamatan dari distribusi diskrit

  • Menghitung penaksir kemungkinan maksimum untuk distribusi binomial, distribusi Poisson, dan distribusi binomial negative

2.4.1 Estimasi Parameter

Pada Bagian 2.2 kita telah mempelajari tiga distribusi yang penting dalam memodelkan berbagai jenis data perhitungan yang timbul dari asuransi. Sekarang mari kita anggap bahwa kita memiliki sekumpulan data perhitungan yang ingin kita sesuaikan dengan sebuah distribusi, dan kita telah menentukan bahwa salah satu dari distribusi ini \((a,b,0)\)

distribusi ini lebih tepat daripada yang lain. Karena masing-masing membentuk kelas distribusi jika kita mengizinkan parameter atau nilainya untuk mengambil nilai apa pun yang diizinkan, masih ada tugas untuk menentukan nilai terbaik dari parameter untuk data yang ada. Ini adalah masalah estimasi titik statistik, dan dalam masalah inferensi parametrik, paradigma inferensi statistik kemungkinan maksimum biasanya menghasilkan perkiraan yang efisien. Pada bagian ini kita akan menjelaskan paradigma ini dan menurunkan perkiraan kemungkinan maksimum.

Misalkan kita mengamati bahwa kita mengamati independen dan terdistribusi secara identik, iid, variabel acak \(X_1,X_2,…,X_n\) dari distribusi dengan Prabability Mass Function/pmf \(pθ\), dimana \(θ\) adalah vektor parameter dan nilai yang tidak diketahui dalam ruang parameter \(Θ⊆\mathbb{R}^d\). Sebagai contoh, dalam kasus distribusi Poisson, ada satu parameter sehingga \(d=1\) dan

\[\begin{align*} p_\theta(x)=e^{-\theta}\frac{\theta^x}{x!}, \quad x=0,1,\ldots, \end{align*}\]

dengan \(θ>0\). Dalam kasus distribusi binomial, kita memiliki

\[\begin{align*} p_\theta(x)= {m \choose x} q^x(1-q)^{m-x}, \quad x=0,1,\ldots,m. \end{align*}\]

Untuk beberapa aplikasi, kita dapat melihat m sebagai sebuah parameter dan dengan demikian ambil \(d = 2\) sehingga \(θ = (m,q) ∈{0,1,2,...}× [0,1]\).

Misalkan pengamatannya adalah \(x_1,...,x_n\) nilai pengamatan dari sampel acak \(X_1,X_2,...,X_n\) yang disajikan sebelumnya. Dalam kasus ini, probabilitas pengamatan sampel ini dari \(pθ\) sama dengan

\[\begin{align*} \prod_{i=1}^n p_\theta(x_i). \end{align*}\]

Hal di atas, dilambangkan dengan \(L(θ)\) yang dipandang sebagai fungsi dari \(θ\) disebut dengan kemungkinan. Perhatikan bahwa kita telah menekan ketergantungannya pada data, untuk menekankan bahwa kita melihatnya sebagai fungsi dari vektor parameter. Sebagai contoh, dalam kasus distribusi Poisson, kita memiliki

\[\begin{align*} L(\lambda)=e^{-n\lambda} \lambda^{\sum_{i=1}^n x_i} \left(\prod_{i=1}^n x_i!\right)^{-1}. \end{align*}\]

Dalam kasus distribusi binomial, kita memiliki

\[\begin{align*} L(m,q)=\left(\prod_{i=1}^n {m \choose x_i}\right) q^{\sum_{i=1}^n x_i} (1-q)^{nm-\sum_{i=1}^n x_i} . \end{align*}\]

Penaksir kemungkinan maksimum (mle) untuk \(θ\) adalah pemaksimum dari kemungkinan; dalam artian, mle memilih himpunan nilai parameter yang paling baik menjelaskan pengamatan yang diamati.

Kasus Khusus: Tiga Hasil Bernoulli. Sebagai ilustrasi, pertimbangkan sebuah sampel dengan ukuran \(n=3\) dari distribusi Bernoulli (binomial dengan \(m = 1\)) dengan nilai \(0,1,0\). Peluang dalam kasus ini dengan mudah diperiksa sama dengan

\[\begin{align*} L(q)=q(1-q)^2, \end{align*}\]

dan plot kemungkinan diberikan pada Gambar 2.1. Seperti yang ditunjukkan pada plot, nilai maksimum kemungkinan sama dengan \(4/27\) dan dicapai pada \(q = 1/3\), dan karenanya estimasi kemungkinan maksimum untuk \(q\) adalah \(1/3\) untuk sampel yang diberikan. Dalam hal ini, kita dapat menggunakan aljabar untuk menunjukkan bahwa

\[\begin{align*} q(1-q)^2=\left(q-\frac{1}{3}\right)^2\left(q-\frac{4}{3}\right)+\frac{4}{27}, \end{align*}\]

dan menyimpulkan bahwa nilai maksimumnya sama dengan \(4/27\), dan dicapai pada \(q = 1/3\) (menggunakan fakta bahwa suku pertama tidak positif dalam interval \([0,1]\)).

Tetapi seperti yang terlihat, cara menurunkan mle menggunakan aljabar ini tidak berlaku umum. Secara umum, seseorang menggunakan kalkulus untuk menurunkan mle - perhatikan bahwa untuk beberapa kemungkinan, seseorang mungkin harus menggunakan metode optimasi lainnya, terutama ketika kemungkinan tersebut memiliki banyak ekstrema lokal. Sudah menjadi kebiasaan untuk memaksimalkan secara ekuivalen logaritma dari kemungkinan \(L(⋅)\), dilambangkan dengan \(l(⋅\)), dan melihat himpunan nol dari turunan pertamanya$ l′(⋅)$. Dalam kasus kemungkinan di atas, \(l(q) = log(q) + 2log(1-q)\), dan

\[\begin{align*} l'(q)=\frac{\rm d}{{\rm d}q}l(q)=\frac{1}{q}-\frac{2}{1-q}. \end{align*}\]

Angka nol unik dari \(l′(⋅)\) sama dengan \(1/3\) , dan karena \(l′′(⋅)\) adalah negatif, kita memiliki \(1/3\) adalah pemaksimum unik dari kemungkinan dan karenanya merupakan estimasi kemungkinan maksimum.

library(png)
img <- readPNG("figur.png")
plot(1:3, 1:3, type = "n", xlab = "", ylab = "", xaxt = "n", yaxt = "n")
rasterImage(img, 1, 1, 3, 3)

2.4.2 Distribusi Frekuensi MLE

Berikut ini, kami menurunkan penaksir kemungkinan maksimum, mle(Maximum likelihood estimator), untuk tiga anggota kelas \((a,b,0)\). Kita mulai dengan meringkas pembahasan di atas. Dalam situasi mengamati iid, independen dan berdistribusi identik, variabel acak \(X_1, X_2,...,X_n\) dari sebuah distribusi dengan pmf \(p_θ\), di mana \(θ\) memiliki nilai yang tidak diketahui dalam \(Θ⊆R^d\) , kemungkinan \(L(⋅)\), sebuah fungsi pada \(Θ\) didefinisikan sebagai

\[\begin{align*} L(\theta)=\prod_{i=1}^n p_\theta(x_i), \end{align*}\]

di mana \(x_1,...,x_n\) adalah nilai yang diamati. MLE dari \(θ\), dinotasikan sebagai \(\hat{θ}_{MLE}\), adalah sebuah fungsi yang memetakan observasi ke sebuah elemen dari himpunan pemaksimum \(L(⋅)\), yaitu

\[\begin{align*} \{\theta \vert L(\theta)=\max_{\eta\in\Theta}L(\eta)\}. \end{align*}\]

Perhatikan bahwa himpunan di atas merupakan fungsi dari pengamatan, meskipun ketergantungan ini tidak dibuat secara eksplisit. Dalam kasus tiga distribusi yang kita pelajari, dan secara umum, himpunan di atas adalah himpunan tunggal dengan probabilitas yang cenderung mendekati satu (dengan meningkatnya ukuran sampel). Dengan kata lain, untuk banyak distribusi yang umum digunakan dan ketika ukuran sampel besar, estimasi kemungkinan didefinisikan secara unik dengan probabilitas yang tinggi.

Berikut ini, kita asumsikan bahwa kita telah mengamati n variabel acak ke-i \(X_1,X_2,...,X_n\) dari distribusi yang dipertimbangkan, meskipun nilai parametriknya tidak diketahui. Selain itu, \(x_1,x_2,...,x_n\) akan menunjukkan nilai yang diamati. Kami mencatat bahwa dalam kasus data cacahan, dan data dari distribusi diskrit secara umum, kemungkinannya dapat direpresentasikan sebagai

\[\begin{align*} L(\theta)=\prod_{k\geq 0} \left(p_\theta(k)\right)^{m_k}, \end{align*}\]

dimana \(m_k\) adalah jumlah observasi yang sama dengan \(k\) . Secara matematis, kita memiliki

\[\begin{align*} m_k= \left\vert \{i\vert x_i=k, 1\leq i \leq n\} \right\vert=\sum_{i= 1}^n I(x_i=k), \quad k\geq 0. \end{align*}\]

Perhatikan bahwa transformasi ini mempertahankan semua data, menyusunnya dengan cara yang efisien. Untuk \(n\) yang besar hal ini menyebabkan kompresi data dalam arti kecukupan. Di bawah ini, kami menyajikan ekspresi untuk mle dalam hal \((m_k)_{k≥1}\) juga.

Kasus Khusus: Distribusi Poisson. Dalam kasus ini, seperti yang disebutkan di atas, kemungkinan diberikan oleh

\[\begin{align*} L(\lambda)=\left(\prod_{i=1}^n x_i!\right)^{-1}e^{-n\lambda}\lambda^{\sum_{i=1}^n x_i} . \end{align*}\]

Dengan menggunakan logaritma, log-kemungkinan adalah

\[\begin{align*} l(\lambda)= -\sum_{i=1}^n \log(x_i!) -n\lambda +\log(\lambda) \cdot \sum_{i=1}^n x_i . \end{align*}\]

Mengambil turunannya, kami memiliki

\[\begin{align*} l'(\lambda)= -n +\frac{1}{\lambda}\sum_{i=1}^n x_i. \end{align*}\]

Dalam mengevaluasi \(l′′(λ)\), ketika \(∑^n_{i=1}xi>0\), \(l′′<0\). Akibatnya, maksimum dicapai pada rata-rata sampel, \(\bar{x}\) yang disajikan di bawah ini. Ketika \(∑^n_{i=1}xi=0\) maka kemungkinan adalah fungsi menurun dan karenanya maksimum dicapai pada nilai parameter yang paling kecil; hal ini mengakibatkan estimasi kemungkinan maksimum menjadi nol. Oleh karena itu, kita memiliki

\[\begin{align*} \overline{x} = \hat{\lambda}_{\rm MLE} = \frac{1}{n}\sum_{i=1}^n x_i. \end{align*}\]

Perhatikan bahwa rata-rata sampel juga dapat dihitung sebagai

\[\begin{align*} \overline{x} = \frac{1}{n} \sum_{k\geq 1} k \cdot m_k ~. \end{align*}\]

Patut dicatat bahwa dalam kasus Poisson, distribusi yang tepat dari \(λ_{MLE}\) tersedia dalam bentuk tertutup - ini adalah Poisson berskala - ketika distribusi yang mendasarinya adalah Poisson. Hal ini dikarenakan jumlah variabel acak Poisson independen adalah Poisson juga. Tentu saja, untuk ukuran sampel yang besar, seseorang dapat menggunakan Teorema Batas Tengah/Central Limit Theorem (CLT) biasa untuk mendapatkan perkiraan normal. Perhatikan bahwa perkiraan yang terakhir berlaku bahkan jika distribusi yang mendasari adalah distribusi apa pun dengan momen kedua yang terbatas.

Kasus Khusus: Distribusi Binomial. Tidak seperti kasus distribusi Poisson, ruang parameter dalam kasus binomial adalah \(2\) dimensi. Oleh karena itu, masalah optimasi sedikit lebih menantang. Kita mulai dengan mengamati bahwa kemungkinan diberikan oleh

\[\begin{align*} L(m,q)= \left(\prod_{i=1}^n {m \choose x_i}\right) q^{\sum_{i=1}^n x_i} (1-q)^{nm-\sum_{i=1}^n x_i} . \end{align*}\]

Dengan menggunakan logaritma, log-kemungkinan adalah

\[\begin{align*} \begin{array}{ll} l(m,q) &= \sum_{i=1}^n \log\left({m \choose x_i}\right) + \left({\sum_{i=1}^n x_i}\right)\log(q) \\ & \ \ \ + \left({nm-\sum_{i=1}^n x_i}\right)\log(1-q) \\ &= \sum_{i=1}^n \log\left({m \choose x_i}\right) + n \overline{x}\log(q) + n\left({m- \overline{x}}\right)\log(1-q) , \end{array} \end{align*}\]

di mana \(\bar{x} = n^{-1}∑^n_{i=1}xi\). Perhatikan bahwa karena m hanya mengambil nilai bilangan bulat non-negatif, kita tidak dapat menggunakan kalkulus multivariat untuk menemukan nilai optimal. Namun demikian, kita dapat menggunakan kalkulus variabel tunggal untuk menunjukkan bahwa

\[\begin{equation} \hat{q}_{MLE}\times \hat{m}_{MLE} = \overline{x}. \tag{2.2} \end{equation}\]

verifikasi persamaan 2.2

Terhadap hal ini, kami mencatat bahwa untuk nilai \(m\) yang tetap

\[\begin{align*} \frac{\delta}{\delta q} l(m,q) = \frac{n \overline{x}}{q}- \frac{n\left({m- \overline{x}}\right)}{1-q}, \end{align*}\]

dan itu

\[\begin{align*} \frac{\delta^2}{\delta q^2} l(m,q)= -\frac{n \overline{x}}{q^2}+ \frac{n\left({m- \overline{x}}\right)}{(1-q)^2} \le 0. \end{align*}\]

Hal di atas mengimplikasikan bahwa untuk setiap nilai \(m\) yang tetap yang tetap, nilai maksimum dari \(q\) memenuhi

\[\begin{align*} mq=\overline{x}, \end{align*}\]

dan karenanya kita membuat persamaan (2.2)

Dengan persamaan (2.2), hal di atas mereduksi tugas menjadi pencarian \(\hat{m}_{MLE}\) yang merupakan pemaksimum dari

\[\begin{equation} L\left(m,\frac{\overline{x}}{m} \right). \tag{2.3} \end{equation}\]

Perhatikan bahwa kemungkinan akan menjadi nol untuk nilai \(m\) yang lebih kecil dari \(max_{1≤i≤n}xi\), dan karenanya \(\hat{m}_{MLE}≥max_{1≤i≤n}xi\).

Catatan Teknis tentang Perkiraan Poisson untuk Binomial

Dalam menentukan algoritma untuk menghitung \(\hat{m}_{MLE}\), pertama-tama kami tunjukkan bahwa untuk beberapa set data, \(\hat{m}_{MLE}\) dapat sama dengan \(∞\), yang mengindikasikan bahwa distribusi Poisson akan memberikan kecocokan yang lebih baik dibandingkan distribusi binomial mana pun. Hal ini terjadi karena distribusi binomial dengan parameter \((m, \bar{x}/m)\) mendekati distribusi Poisson dengan parameter \(\bar{x}\) dengan \(m\) mendekati tak terhingga. Fakta bahwa beberapa set data lebih memilih distribusi Poisson seharusnya tidak mengherankan karena dalam pengertian di atas, himpunan distribusi Poisson berada pada batas himpunan distribusi binomial. Menariknya, dalam Olkin, Petkau, dan Zidek (1981) mereka menunjukkan bahwa jika rata-rata sampel kurang dari atau sama dengan varians sampel maka \(\hat{m}_{MLE} = ∞\) jika tidak, maka terdapat sebuah \(m\) berhingga yang memaksimumkan persamaan (2.3).

Pada Gambar 2.2 di bawah ini, kami menampilkan plot \(L(m, \bar{x}/m)\) untuk tiga sampel yang berbeda dengan ukuran \(5\); mereka hanya berbeda dalam nilai maksimum sampel. Sampel pertama dari \((2,2,2,4,5)\) memiliki rasio rata-rata sampel terhadap varians sampel yang lebih besar dari \(1\) \((1.875)\), sampel kedua dari \((2,2,2,4,6)\) memiliki rasio sebesar \(1.25\) yang lebih mendekati \(1\), dan sampel ketiga dari \((2,2,2,4,6)\) memiliki rasio sebesar \(1.25\) yang lebih mendekati \(1\), dan sampel keempat dari \((2,2,2,4,6)\) memiliki rasio sebesar \(1.25\) yang lebih mendekati \(1\). dan sampel ketiga \((2,2,2,4,7)\) memiliki rasio lebih kecil dari \(1\) \((0.885)\). Untuk ketiga sampel ini, seperti yang ditunjukkan pada Gambar 2.2, \(\bar{m}_{MLE}\) sama dengan \(7\), \(18\) dan \(∞\) masing-masing. Perhatikan bahwa nilai pembatas dari \(L(m, \bar{x}/m)\) sebagai \(m\) mendekati tak terhingga sama dengan

\[\begin{equation} \left(\prod_{i=1}^n x_i! \right)^{-1} \exp\left(-n \overline{x}~\right) \left(~\overline{x}~\right)^{n\overline{x}}. \tag{2.4} \end{equation}\]

Juga, perhatikan bahwa Gambar 2.2 menunjukkan bahwa mle dari \(m\) tidak kuat, yaitu perubahan pada sebagian kecil set data dapat menyebabkan perubahan besar pada penaksir.

Diskusi di atas menyarankan algoritma sederhana berikut ini:

  • Langkah 1. Jika rata-rata sampel kurang dari atau sama dengan varians sampel, maka tetapkan \(\hat{m}_{MLE}=∞\). Distribusi yang disarankan oleh MLE adalah distribusi Poisson dengan \(\hat{λ}=\bar{x}\).
  • Langkah 2. Jika rata-rata sampel lebih besar dari varians sampel, maka hitunglah \(L(m,\bar{x}/m)\) untuk \(m\) yang lebih besar atau sama dengan maksimum sampel sampai \(L(m,\bar{x}/m)\) mendekati nilai kemungkinan Poisson yang diberikan dalam (2.4). Nilai \(m\) yang sesuai dengan nilai maksimum \(L(m,\bar{x}/m)\) di antara yang dihitung sama dengan \(\hat{m}_{MLE}\).

Kami mencatat bahwa jika distribusi yang mendasari adalah distribusi binomial dengan parameter \((m,q)\) (dengan \(q>0\)) maka \(\hat{m}_{MLE}\) sama dengan \(m\) untuk ukuran sampel yang besar. Juga, \(\hat{q}_{MLE}\) akan memiliki distribusi normal asimtotik dan konvergen dengan probabilitas satu untuk \(q\) .

library(png)
img <- readPNG("figur2.png")
plot(2:3, 2:3, type = "n", xlab = "", ylab = "", xaxt = "n", yaxt = "n")
rasterImage(img, 2, 2, 3, 3)

Kasus Khusus: Distribusi Binomial Negatif. Kasus distribusi binomial negatif mirip dengan distribusi binomial dalam arti kita memiliki dua parameter dan mles tidak tersedia dalam bentuk tertutup. Perbedaan di antara keduanya adalah bahwa tidak seperti parameter binomial \(m\) yang mengambil nilai bilangan bulat positif, parameter \(r\) dari binomial negatif dapat mengambil nilai real positif. Hal ini membuat masalah optimasi menjadi sedikit lebih kompleks. Kita mulai dengan mengamati bahwa kemungkinan dapat dinyatakan dalam bentuk berikut:

\[\begin{align*} L(r,\beta)=\left(\prod_{i=1}^n {r+x_i-1 \choose x_i}{r+x_i-1 \choose x_i}\right) (1+\beta)^{-n(r+\overline{x})} \beta^{n\overline{x}}. \end{align*}\]

Hal di atas menyiratkan bahwa log-kemungkinan diberikan oleh

\[\begin{align*} l(r,\beta)=\sum_{i=1}^n \log{r+x_i-1 \choose x_i} -n(r+\overline{x}) \log(1+\beta) +n\overline{x}\log\beta, \end{align*}\]

dan karenanya

\[\begin{align*} \frac{\delta}{\delta\beta} l(r,\beta) = -\frac{n(r+\overline{x})}{1+\beta} + \frac{n\overline{x}}{\beta}. \end{align*}\]

Dengan menyamakan nilai di atas dengan nol, kita mendapatkan

\[\begin{align*} \frac{\delta}{\delta\beta} l(r,\beta) = -\frac{n(r+\overline{x})}{1+\beta} + \frac{n\overline{x}}{\beta}. \end{align*}\]

Hal di atas mereduksi masalah optimasi dua dimensi menjadi masalah satu dimensi - kita perlu memaksimalkan

\[\begin{align*} \hat{r}_{MLE}\times \hat{\beta}_{MLE} = \overline{x}. \end{align*}\]

terhadap \(r\), dengan \(r\) yang memaksimumkan adalah mle dan \(\hat{β}_{MLE}=\bar{x}/\hat{r}_{MLE}\). Dalam Levin, Reeds, dan kawan-kawan (1977) ditunjukkan bahwa jika varians sampel lebih besar daripada rata-rata sampel maka terdapat unik \(r >0\) yang memaksimalkan \(l(r, \bar{x}/r)\) dan karenanya merupakan mle yang unik untuk \(r\) dan \(β\). Selain itu, mereka juga menunjukkan bahwa jika \(\hat{σ}^2≤\bar{x}\) , maka kemungkinan binomial negatif akan didominasi oleh kemungkinan Poisson dengan \(\hat{λ} = \bar{x}\) . Dengan kata lain, distribusi Poisson memberikan kecocokan yang lebih baik terhadap data. Jaminan dalam kasus \(\hat{σ}^2>\hat{μ}\) memungkinkan kita untuk menggunakan beberapa algoritma untuk memaksimalkan \(l(r,\bar{x}/r)\) . Untuk metode alternatif dalam menghitung kemungkinan, kita perhatikan bahwa

\[\begin{array}{ll} l(r,\overline{x}/r)&=\sum_{i=1}^n \sum_{j=1}^{x_i}\log(r-1+j) - \sum_{i=1}^n\log(x_i!) \\ & \ \ \ - n(r+\overline{x}) \log(r+\overline{x}) + nr\log(r) + n\overline{x}\log(\overline{x}), \end{array}\]

yang menghasilkan

\[\begin{align*} \left(\frac{1}{n}\right)\frac{\delta}{\delta r}l(r,\overline{x}/r)=\frac{1}{n}\sum_{i=1}^n \sum_{j=1}^{x_i}\frac{1}{r-1+j} - \log(r+\overline{x}) + \log(r). \end{align*}\]

Kita perhatikan bahwa, pada ekspresi di atas untuk suku-suku yang melibatkan penjumlahan ganda, jumlah bagian dalam sama dengan nol jika \(x_i = 0\). Estimasi kemungkinan maksimum untuk \(r\) adalah akar dari ekspresi terakhir dan kita dapat menggunakan algoritma pencarian akar untuk menghitungnya. Selain itu, kita juga memiliki

\[\begin{align*} \left(\frac{1}{n}\right)\frac{\delta^2}{\delta r^2}l(r,\overline{x}/r)=\frac{\overline{x}}{r(r+\overline{x})}-\frac{1}{n}\sum_{i=1}^n \sum_{j=1}^{x_i}\frac{1}{(r-1+j)^2}. \end{align*}\]

Algoritma pencarian akar berulang yang sederhana namun cepat konvergen adalah metode Newton, yang secara kebetulan diyakini telah digunakan oleh orang Babilonia untuk menghitung akar kuadrat. Dalam metode ini, sebuah perkiraan awal dipilih untuk akar dan perkiraan baru untuk akar tersebut dihasilkan secara berurutan sampai konvergen. Menerapkan metode Newton pada masalah kita akan menghasilkan algoritma berikut: Langkah i. Pilih sebuah solusi hampiran, katakanlah \(r_0\) . Tetapkan \(k\) ke \(0\). Langkah ii. Tetapkan \(r_{k+1}\) sebagai

\[\begin{align*} r_{k+1}= r_k - \frac{\frac{1}{n}\sum_{i=1}^n \sum_{j=1}^{x_i}\frac{1}{r_k-1+j} - \log(r_k+\overline{x})+\log(r_k)}{\frac{\overline{x}}{r_k(r_k+\overline{x})}-\frac{1}{n}\sum_{i=1}^n\sum_{j=1}^{x_i}\frac{1}{(r_k-1+j)^2}} \end{align*}\]

Langkah iii. Jika \(r_{k+1} ∼ r_k\) maka laporkan \(r_{k+1}\) sebagai estimasi maksimum kemungkinan; jika tidak, naikkan \(k\) sebesar \(1\) dan ulangi Langkah ii.

Sebagai contoh, kami mensimulasikan \(5\) sampel pengamatan \(41,49,40,27,23\) dari binomial negatif dengan parameter \(r = 10\) dan \(β = 5\). Memilih nilai awal dari \(r\) sedemikian sehingga

\[\begin{align*} r\beta=\hat{\mu} \quad \hbox{and} \quad r\beta(1+\beta)=\hat{\sigma}^2 \end{align*}\]

di mana \(\hat{μ}\) merupakan estimasi rata-rata dan \(\hat{σ}^{2}\) adalah estimasi varians. Hal ini menghasilkan nilai awal untuk \(r\) sebesar \(23,14286\). Iterasi dari \(r\) dari metode Newton adalah

\[\begin{align*} 21.39627, 21.60287, 21.60647, 21.60647; \end{align*}\]

konvergensi cepat yang terlihat di atas adalah tipikal dari metode Newton. Oleh karena itu, dalam contoh ini, \(\hat{r}_{MLE}∼21.60647\) dan \(\hat{β}_{MLE} = 1.66616\).

Newton<-function(x,abserr){
mu<-mean(x);
sigma2<-mean(x^2)-mu^2;
r<-mu^2/(sigma2-mu);
b<-TRUE;
iter<-0;
while (b) {
tr<-r;
m1<-mean(c(x[x==0],sapply(x[x>0],function(z){sum(1/(tr:(tr-1+z)))})));
m2<-mean(c(x[x==0],sapply(x[x>0],function(z){sum(1/(tr:(tr-1+z))^2)})));
r<-tr-(m1-log(1+mu/tr))/(mu/(tr*(tr+mu))-m2);
b<-!(abs(tr-r)<abserr);
iter<-iter+1;
}
c(r,iter)
}

Untuk meringkas pembahasan kita tentang MLE untuk kelas distribusi \((a,b,0)\), pada Gambar 2.3 di bawah ini kita memplot nilai maksimum dari peluang Poisson , \(L(m,\bar{x}/m)\) untuk binomial, dan \(L(r,\bar{x}/r)\) untuk binomial negatif, untuk tiga sampel berukuran 5 yang diberikan pada Tabel 2.1. Data tersebut dibuat untuk mencakup tiga urutan dari rata-rata dan varians sampel. Seperti yang ditunjukkan pada Gambar 2.3, dan didukung oleh teori, jika (\(\hat{μ}\)≤\(\hat{σ}^2\) ) maka binomial negatif menghasilkan nilai kemungkinan maksimum yang lebih tinggi; jika \(\hat{μ}\)=\(\hat{σ}^2\) maka Poisson memiliki nilai kemungkinan tertinggi; dan terakhir dalam kasus \(\hat{μ}\)>\(\hat{σ}^2\) binomial memberikan kecocokan yang lebih baik daripada yang lain. Jadi sebelum mencocokkan data frekuensi dengan distribusi \((a,b,0)\) \((a,b,0)\), yang terbaik adalah memulai dengan memeriksa urutan \(\hat{μ}\) dan \(\hat{σ}^2\) . Sekali lagi kami tekankan bahwa Poisson berada pada batas distribusi binomial negatif dan binomial. Jadi, dalam kasus \(\hat{μ}\)≥\(\hat{σ}^2\) (\(\hat{μ}\)≤\(\hat{σ}^2\)), Poisson menghasilkan kecocokan yang lebih baik daripada binomial negatif (binomial, resp.), yang ditunjukkan oleh \(\hat{r}\) = ∞ (\(\hat{m}\)=∞ masing-masing).

\[\begin{align*} \small{ \begin{array}{c|c|c} \hline \text{Data} & \text{Mean }(\hat{\mu}) & \text{Variance }(\hat{\sigma}^2) \\ \hline (2,3,6,8,9) & 5.60 & 7.44 \\ (2,5,6,8,9) & 6 & 6\\ (4,7,8,10,11) & 8 & 6\\\hline \end{array} } \end{align*}\]

library(png)
img <- readPNG("figur3.png")
plot(2:3, 2:3, type = "n", xlab = "", ylab = "", xaxt = "n", yaxt = "n")
rasterImage(img, 2, 2, 3, 3)

LS0tDQp0aXRsZTogIk1lbmdlc3RpbWFzaSBEaXN0cmlidXNpIEZyZWt1ZW5zaSINCnN1YnRpdGxlOiAiRXN0aW1hc2kgUGFyYW1ldGVyIGRhbiBEaXN0cmlidXNpIEZyZWt1ZW5zaSBNTEUiDQphdXRob3I6ICJHYXJyeSBKdWxpdXMgKDIwMjA0OTIwMDAzKSINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogImhpZGUiDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KDQotLS0NCg0KYGBge3IgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChjbGFzcy5zb3VyY2UgPSAibm9jb3B5IiwNCiAgICAgICAgICAgICAgICAgICAgICBjbGFzcy5vdXRwdXQgPSAibm9jb3B5IiwNCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRiwNCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRikNCmBgYA0KDQoNCjxicj4NCg0KPGltZyBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW46IC03MHB4IDUwcHggMHB4IDUwcHg7IHdpZHRoOjMwJSIgc3JjPSJpbWcvbWF0YW5hX2xvZ28ucG5nIi8+DQoNCjxpbWcgc3R5bGU9ImZsb2F0OiByaWdodDsgbWFyZ2luOiAtNzBweCA1MHB4IDBweCA1MHB4OyB3aWR0aDozMCUiIHNyYz0ibWUucG5nIi8+IA0KDQp8DQo6LS0tLSB8Oi0tLS0NCioqS29udGFrKip8ICoqOiAkXGRvd25hcnJvdyQqKg0KRW1haWx8IGdhcnJ5anVsaXVzcGVybWFuYUBnbWFpbC5jb20NCkluc3RhZ3JhbSB8IGh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYm9yaW5nLmdhcnIvIA0KUlB1YnMgIHwgaHR0cHM6Ly9ycHVicy5jb20vZ2Fyci8gDQoNCioqKg0KIyAyLjQgTWVuZ2VzdGltYXNpIERpc3RpYnVzaSBGcmVrdWVuc2kNCg0KUGFkYSBiYWdpYW4gaW5pLCBBbmRhIGFrYW4gbWVtcGVsYWphcmkgYmFnYWltYW5hIGNhcmFueWE6DQoNCi0gTWVuZW50dWthbiBrZW11bmdraW5hbiBhdGF1IHByb2JhYmlsaXR5IHN1YXR1IHNhbXBlbCBwZW5nYW1hdGFuIGRhcmkgZGlzdHJpYnVzaSBkaXNrcml0DQoNCi0gTWVuZW50dWthbiBwZW5ha3NpciBrZW11bmdraW5hbiBtYWtzaW11bSB1bnR1ayBzYW1wZWwgYWNhayBwZW5nYW1hdGFuIGRhcmkgZGlzdHJpYnVzaSBkaXNrcml0DQoNCi0gTWVuZ2hpdHVuZyBwZW5ha3NpciBrZW11bmdraW5hbiBtYWtzaW11bSB1bnR1ayBkaXN0cmlidXNpIGJpbm9taWFsLCBkaXN0cmlidXNpIFBvaXNzb24sIGRhbiBkaXN0cmlidXNpIGJpbm9taWFsIG5lZ2F0aXZlDQoNCiMjIDIuNC4xIEVzdGltYXNpIFBhcmFtZXRlcg0KDQpQYWRhIEJhZ2lhbiAyLjIga2l0YSB0ZWxhaCBtZW1wZWxhamFyaSB0aWdhIGRpc3RyaWJ1c2kgeWFuZyBwZW50aW5nIGRhbGFtIG1lbW9kZWxrYW4gYmVyYmFnYWkgamVuaXMgZGF0YSBwZXJoaXR1bmdhbiB5YW5nIHRpbWJ1bCBkYXJpIGFzdXJhbnNpLiBTZWthcmFuZyBtYXJpIGtpdGEgYW5nZ2FwIGJhaHdhIGtpdGEgbWVtaWxpa2kgc2VrdW1wdWxhbiBkYXRhIHBlcmhpdHVuZ2FuIHlhbmcgaW5naW4ga2l0YSBzZXN1YWlrYW4gZGVuZ2FuIHNlYnVhaCBkaXN0cmlidXNpLCBkYW4ga2l0YSB0ZWxhaCBtZW5lbnR1a2FuIGJhaHdhIHNhbGFoIHNhdHUgZGFyaSBkaXN0cmlidXNpIGluaSAkKGEsYiwwKSQNCiAgDQpkaXN0cmlidXNpIGluaSBsZWJpaCB0ZXBhdCBkYXJpcGFkYSB5YW5nIGxhaW4uIEthcmVuYSBtYXNpbmctbWFzaW5nIG1lbWJlbnR1ayBrZWxhcyBkaXN0cmlidXNpIGppa2Ega2l0YSBtZW5naXppbmthbiBwYXJhbWV0ZXIgYXRhdSBuaWxhaW55YSB1bnR1ayBtZW5nYW1iaWwgbmlsYWkgYXBhIHB1biB5YW5nIGRpaXppbmthbiwgbWFzaWggYWRhIHR1Z2FzIHVudHVrIG1lbmVudHVrYW4gbmlsYWkgdGVyYmFpayBkYXJpIHBhcmFtZXRlciB1bnR1ayBkYXRhIHlhbmcgYWRhLiBJbmkgYWRhbGFoIG1hc2FsYWggZXN0aW1hc2kgdGl0aWsgc3RhdGlzdGlrLCBkYW4gZGFsYW0gbWFzYWxhaCBpbmZlcmVuc2kgcGFyYW1ldHJpaywgcGFyYWRpZ21hIGluZmVyZW5zaSBzdGF0aXN0aWsga2VtdW5na2luYW4gbWFrc2ltdW0gYmlhc2FueWEgbWVuZ2hhc2lsa2FuIHBlcmtpcmFhbiB5YW5nIGVmaXNpZW4uIFBhZGEgYmFnaWFuIGluaSBraXRhIGFrYW4gbWVuamVsYXNrYW4gcGFyYWRpZ21hIGluaSBkYW4gbWVudXJ1bmthbiBwZXJraXJhYW4ga2VtdW5na2luYW4gbWFrc2ltdW0uDQoNCk1pc2Fsa2FuIGtpdGEgbWVuZ2FtYXRpIGJhaHdhIGtpdGEgbWVuZ2FtYXRpIGluZGVwZW5kZW4gZGFuIHRlcmRpc3RyaWJ1c2kgc2VjYXJhIGlkZW50aWssIGlpZCwgdmFyaWFiZWwgYWNhayAgJFhfMSxYXzIs4oCmLFhfbiQgZGFyaSBkaXN0cmlidXNpIGRlbmdhbiBQcmFiYWJpbGl0eSBNYXNzIEZ1bmN0aW9uLypwbWYqICRwzrgkLCBkaW1hbmEgJM64JCBhZGFsYWggdmVrdG9yIHBhcmFtZXRlciBkYW4gbmlsYWkgeWFuZyB0aWRhayBkaWtldGFodWkgZGFsYW0gcnVhbmcgcGFyYW1ldGVyICTOmOKKhlxtYXRoYmJ7Un1eZCQuIFNlYmFnYWkgY29udG9oLCBkYWxhbSBrYXN1cyBkaXN0cmlidXNpIFBvaXNzb24sIGFkYSBzYXR1IHBhcmFtZXRlciBzZWhpbmdnYSAkZD0xJCBkYW4NCg0KXGJlZ2lue2FsaWduKn0NCnBfXHRoZXRhKHgpPWVeey1cdGhldGF9XGZyYWN7XHRoZXRhXnh9e3ghfSwgXHF1YWQgeD0wLDEsXGxkb3RzLA0KXGVuZHthbGlnbip9DQoNCmRlbmdhbiAkzrg+MCQuIERhbGFtIGthc3VzIGRpc3RyaWJ1c2kgYmlub21pYWwsIGtpdGEgbWVtaWxpa2kNCg0KXGJlZ2lue2FsaWduKn0NCnBfXHRoZXRhKHgpPSB7bSBcY2hvb3NlIHh9IHFeeCgxLXEpXnttLXh9LCBccXVhZCB4PTAsMSxcbGRvdHMsbS4NClxlbmR7YWxpZ24qfQ0KDQpVbnR1ayBiZWJlcmFwYSBhcGxpa2FzaSwga2l0YSBkYXBhdCBtZWxpaGF0IG0gc2ViYWdhaSBzZWJ1YWggcGFyYW1ldGVyIGRhbiBkZW5nYW4gZGVtaWtpYW4gYW1iaWwgJGQgPSAyJCBzZWhpbmdnYSAkzrggPSAobSxxKSDiiIh7MCwxLDIsLi4ufcOXIFswLDFdJC4NCg0KTWlzYWxrYW4gcGVuZ2FtYXRhbm55YSBhZGFsYWggJHhfMSwuLi4seF9uJCBuaWxhaSBwZW5nYW1hdGFuIGRhcmkgc2FtcGVsIGFjYWsgJFhfMSxYXzIsLi4uLFhfbiQgeWFuZyBkaXNhamlrYW4gc2ViZWx1bW55YS4gRGFsYW0ga2FzdXMgaW5pLCBwcm9iYWJpbGl0YXMgcGVuZ2FtYXRhbiBzYW1wZWwgaW5pIGRhcmkgJHDOuCQgc2FtYSBkZW5nYW4NCg0KXGJlZ2lue2FsaWduKn0NClxwcm9kX3tpPTF9Xm4gcF9cdGhldGEoeF9pKS4NClxlbmR7YWxpZ24qfQ0KDQpIYWwgZGkgYXRhcywgZGlsYW1iYW5na2FuIGRlbmdhbiAkTCjOuCkkIHlhbmcgZGlwYW5kYW5nIHNlYmFnYWkgZnVuZ3NpIGRhcmkgJM64JCBkaXNlYnV0IGRlbmdhbiBrZW11bmdraW5hbi4gUGVyaGF0aWthbiBiYWh3YSBraXRhIHRlbGFoIG1lbmVrYW4ga2V0ZXJnYW50dW5nYW5ueWEgcGFkYSBkYXRhLCB1bnR1ayBtZW5la2Fua2FuIGJhaHdhIGtpdGEgbWVsaWhhdG55YSBzZWJhZ2FpIGZ1bmdzaSBkYXJpIHZla3RvciBwYXJhbWV0ZXIuIFNlYmFnYWkgY29udG9oLCBkYWxhbSBrYXN1cyBkaXN0cmlidXNpIFBvaXNzb24sIGtpdGEgbWVtaWxpa2kNCg0KXGJlZ2lue2FsaWduKn0NCkwoXGxhbWJkYSk9ZV57LW5cbGFtYmRhfSBcbGFtYmRhXntcc3VtX3tpPTF9Xm4geF9pfSBcbGVmdChccHJvZF97aT0xfV5uIHhfaSFccmlnaHQpXnstMX0uDQpcZW5ke2FsaWduKn0NCg0KRGFsYW0ga2FzdXMgZGlzdHJpYnVzaSBiaW5vbWlhbCwga2l0YSBtZW1pbGlraQ0KDQpcYmVnaW57YWxpZ24qfQ0KTChtLHEpPVxsZWZ0KFxwcm9kX3tpPTF9Xm4ge20gXGNob29zZSB4X2l9XHJpZ2h0KSBxXntcc3VtX3tpPTF9Xm4geF9pfSAoMS1xKV57bm0tXHN1bV97aT0xfV5uIHhfaX0gLg0KXGVuZHthbGlnbip9DQoNClBlbmFrc2lyIGtlbXVuZ2tpbmFuIG1ha3NpbXVtICgqbWxlKikgdW50dWsgJM64JCBhZGFsYWggcGVtYWtzaW11bSBkYXJpIGtlbXVuZ2tpbmFuOyBkYWxhbSBhcnRpYW4sICptbGUqIG1lbWlsaWggaGltcHVuYW4gbmlsYWkgcGFyYW1ldGVyIHlhbmcgcGFsaW5nIGJhaWsgbWVuamVsYXNrYW4gcGVuZ2FtYXRhbiB5YW5nIGRpYW1hdGkuDQoNCioqS2FzdXMgS2h1c3VzOiBUaWdhIEhhc2lsIEJlcm5vdWxsaSoqLiBTZWJhZ2FpIGlsdXN0cmFzaSwgcGVydGltYmFuZ2thbiBzZWJ1YWggc2FtcGVsIGRlbmdhbiB1a3VyYW4gJG49MyQgZGFyaSBkaXN0cmlidXNpIEJlcm5vdWxsaSAoYmlub21pYWwgZGVuZ2FuICRtID0gMSQpIGRlbmdhbiBuaWxhaSAkMCwxLDAkLiBQZWx1YW5nIGRhbGFtIGthc3VzIGluaSBkZW5nYW4gbXVkYWggZGlwZXJpa3NhIHNhbWEgZGVuZ2FuDQoNClxiZWdpbnthbGlnbip9DQpMKHEpPXEoMS1xKV4yLA0KXGVuZHthbGlnbip9DQoNCmRhbiBwbG90IGtlbXVuZ2tpbmFuIGRpYmVyaWthbiBwYWRhIEdhbWJhciAyLjEuIFNlcGVydGkgeWFuZyBkaXR1bmp1a2thbiBwYWRhIHBsb3QsIG5pbGFpIG1ha3NpbXVtIGtlbXVuZ2tpbmFuIHNhbWEgZGVuZ2FuICQ0LzI3JCBkYW4gZGljYXBhaSBwYWRhICRxID0gMS8zJCwgZGFuIGthcmVuYW55YSBlc3RpbWFzaSBrZW11bmdraW5hbiBtYWtzaW11bSB1bnR1ayAkcSQgYWRhbGFoICQxLzMkIHVudHVrIHNhbXBlbCB5YW5nIGRpYmVyaWthbi4gRGFsYW0gaGFsIGluaSwga2l0YSBkYXBhdCBtZW5nZ3VuYWthbiBhbGphYmFyIHVudHVrIG1lbnVuanVra2FuIGJhaHdhDQoNClxiZWdpbnthbGlnbip9DQpxKDEtcSleMj1cbGVmdChxLVxmcmFjezF9ezN9XHJpZ2h0KV4yXGxlZnQocS1cZnJhY3s0fXszfVxyaWdodCkrXGZyYWN7NH17Mjd9LA0KXGVuZHthbGlnbip9DQoNCmRhbiBtZW55aW1wdWxrYW4gYmFod2EgbmlsYWkgbWFrc2ltdW1ueWEgc2FtYSBkZW5nYW4gJDQvMjckLCBkYW4gZGljYXBhaSBwYWRhICRxID0gMS8zJCAobWVuZ2d1bmFrYW4gZmFrdGEgYmFod2Egc3VrdSBwZXJ0YW1hIHRpZGFrIHBvc2l0aWYgZGFsYW0gaW50ZXJ2YWwgJFswLDFdJCkuDQoNClRldGFwaSBzZXBlcnRpIHlhbmcgdGVybGloYXQsIGNhcmEgbWVudXJ1bmthbiAqbWxlKiBtZW5nZ3VuYWthbiBhbGphYmFyIGluaSB0aWRhayBiZXJsYWt1IHVtdW0uIFNlY2FyYSB1bXVtLCBzZXNlb3JhbmcgbWVuZ2d1bmFrYW4ga2Fsa3VsdXMgdW50dWsgbWVudXJ1bmthbiAqbWxlKiAtIHBlcmhhdGlrYW4gYmFod2EgdW50dWsgYmViZXJhcGEga2VtdW5na2luYW4sIHNlc2VvcmFuZyBtdW5na2luIGhhcnVzIG1lbmdndW5ha2FuIG1ldG9kZSBvcHRpbWFzaSBsYWlubnlhLCB0ZXJ1dGFtYSBrZXRpa2Ega2VtdW5na2luYW4gdGVyc2VidXQgbWVtaWxpa2kgYmFueWFrIGVrc3RyZW1hIGxva2FsLiBTdWRhaCBtZW5qYWRpIGtlYmlhc2FhbiB1bnR1ayBtZW1ha3NpbWFsa2FuIHNlY2FyYSBla3VpdmFsZW4gbG9nYXJpdG1hIGRhcmkga2VtdW5na2luYW4gJEwo4ouFKSQsIGRpbGFtYmFuZ2thbiBkZW5nYW4gJGwo4ouFJCksIGRhbiBtZWxpaGF0IGhpbXB1bmFuIG5vbCBkYXJpIHR1cnVuYW4gcGVydGFtYW55YSQgbOKAsijii4UpJC4gRGFsYW0ga2FzdXMga2VtdW5na2luYW4gZGkgYXRhcywgJGwocSkgPSBsb2cocSkgKyAybG9nKDEtcSkkLCBkYW4NCg0KXGJlZ2lue2FsaWduKn0NCmwnKHEpPVxmcmFje1xybSBkfXt7XHJtIGR9cX1sKHEpPVxmcmFjezF9e3F9LVxmcmFjezJ9ezEtcX0uDQpcZW5ke2FsaWduKn0NCg0KQW5na2Egbm9sIHVuaWsgZGFyaSAkbOKAsijii4UpJCBzYW1hIGRlbmdhbiAkMS8zJCAsIGRhbiBrYXJlbmEgJGzigLLigLIo4ouFKSQgYWRhbGFoIG5lZ2F0aWYsIGtpdGEgbWVtaWxpa2kgJDEvMyQgYWRhbGFoIHBlbWFrc2ltdW0gdW5payBkYXJpIGtlbXVuZ2tpbmFuIGRhbiBrYXJlbmFueWEgbWVydXBha2FuIGVzdGltYXNpIGtlbXVuZ2tpbmFuIG1ha3NpbXVtLg0KDQpgYGB7cn0NCmxpYnJhcnkocG5nKQ0KaW1nIDwtIHJlYWRQTkcoImZpZ3VyLnBuZyIpDQpwbG90KDE6MywgMTozLCB0eXBlID0gIm4iLCB4bGFiID0gIiIsIHlsYWIgPSAiIiwgeGF4dCA9ICJuIiwgeWF4dCA9ICJuIikNCnJhc3RlckltYWdlKGltZywgMSwgMSwgMywgMykNCmBgYA0KDQojIyAyLjQuMiBEaXN0cmlidXNpIEZyZWt1ZW5zaSBNTEUNCg0KQmVyaWt1dCBpbmksIGthbWkgbWVudXJ1bmthbiBwZW5ha3NpciBrZW11bmdraW5hbiBtYWtzaW11bSwgKm1sZSooTWF4aW11bSBsaWtlbGlob29kIGVzdGltYXRvciksIHVudHVrIHRpZ2EgYW5nZ290YSBrZWxhcyAkKGEsYiwwKSQuIEtpdGEgbXVsYWkgZGVuZ2FuIG1lcmluZ2thcyBwZW1iYWhhc2FuIGRpIGF0YXMuIERhbGFtIHNpdHVhc2kgbWVuZ2FtYXRpICppaWQqLCBpbmRlcGVuZGVuIGRhbiBiZXJkaXN0cmlidXNpIGlkZW50aWssIHZhcmlhYmVsIGFjYWsgJFhfMSwgWF8yLC4uLixYX24kICBkYXJpIHNlYnVhaCBkaXN0cmlidXNpIGRlbmdhbiAqcG1mKiAkcF/OuCQsIGRpIG1hbmEgJM64JCBtZW1pbGlraSBuaWxhaSB5YW5nIHRpZGFrIGRpa2V0YWh1aSBkYWxhbSAkzpjiioZSXmQkICwga2VtdW5na2luYW4gJEwo4ouFKSQsIHNlYnVhaCBmdW5nc2kgcGFkYSAkzpgkIGRpZGVmaW5pc2lrYW4gc2ViYWdhaQ0KDQpcYmVnaW57YWxpZ24qfQ0KTChcdGhldGEpPVxwcm9kX3tpPTF9Xm4gcF9cdGhldGEoeF9pKSwNClxlbmR7YWxpZ24qfQ0KDQpkaSBtYW5hICR4XzEsLi4uLHhfbiQgYWRhbGFoIG5pbGFpIHlhbmcgZGlhbWF0aS4gKk1MRSogZGFyaSAkzrgkLCBkaW5vdGFzaWthbiBzZWJhZ2FpICRcaGF0e864fV97TUxFfSQsIGFkYWxhaCBzZWJ1YWggZnVuZ3NpIHlhbmcgbWVtZXRha2FuIG9ic2VydmFzaSBrZSBzZWJ1YWggZWxlbWVuIGRhcmkgaGltcHVuYW4gcGVtYWtzaW11bSAkTCjii4UpJCwgeWFpdHUNCg0KXGJlZ2lue2FsaWduKn0NClx7XHRoZXRhIFx2ZXJ0IEwoXHRoZXRhKT1cbWF4X3tcZXRhXGluXFRoZXRhfUwoXGV0YSlcfS4NClxlbmR7YWxpZ24qfQ0KDQpQZXJoYXRpa2FuIGJhaHdhIGhpbXB1bmFuIGRpIGF0YXMgbWVydXBha2FuIGZ1bmdzaSBkYXJpIHBlbmdhbWF0YW4sIG1lc2tpcHVuIGtldGVyZ2FudHVuZ2FuIGluaSB0aWRhayBkaWJ1YXQgc2VjYXJhIGVrc3BsaXNpdC4gRGFsYW0ga2FzdXMgdGlnYSBkaXN0cmlidXNpIHlhbmcga2l0YSBwZWxhamFyaSwgZGFuIHNlY2FyYSB1bXVtLCBoaW1wdW5hbiBkaSBhdGFzIGFkYWxhaCBoaW1wdW5hbiB0dW5nZ2FsIGRlbmdhbiBwcm9iYWJpbGl0YXMgeWFuZyBjZW5kZXJ1bmcgbWVuZGVrYXRpIHNhdHUgKGRlbmdhbiBtZW5pbmdrYXRueWEgdWt1cmFuIHNhbXBlbCkuIERlbmdhbiBrYXRhIGxhaW4sIHVudHVrIGJhbnlhayBkaXN0cmlidXNpIHlhbmcgdW11bSBkaWd1bmFrYW4gZGFuIGtldGlrYSB1a3VyYW4gc2FtcGVsIGJlc2FyLCBlc3RpbWFzaSBrZW11bmdraW5hbiBkaWRlZmluaXNpa2FuIHNlY2FyYSB1bmlrIGRlbmdhbiBwcm9iYWJpbGl0YXMgeWFuZyB0aW5nZ2kuDQoNCkJlcmlrdXQgaW5pLCBraXRhIGFzdW1zaWthbiBiYWh3YSBraXRhIHRlbGFoIG1lbmdhbWF0aSBuIHZhcmlhYmVsIGFjYWsga2UtaSAkWF8xLFhfMiwuLi4sWF9uJCBkYXJpIGRpc3RyaWJ1c2kgeWFuZyBkaXBlcnRpbWJhbmdrYW4sIG1lc2tpcHVuIG5pbGFpIHBhcmFtZXRyaWtueWEgdGlkYWsgZGlrZXRhaHVpLiBTZWxhaW4gaXR1LCAkeF8xLHhfMiwuLi4seF9uJCBha2FuIG1lbnVuanVra2FuIG5pbGFpIHlhbmcgZGlhbWF0aS4gS2FtaSBtZW5jYXRhdCBiYWh3YSBkYWxhbSBrYXN1cyBkYXRhIGNhY2FoYW4sIGRhbiBkYXRhIGRhcmkgZGlzdHJpYnVzaSBkaXNrcml0IHNlY2FyYSB1bXVtLCBrZW11bmdraW5hbm55YSBkYXBhdCBkaXJlcHJlc2VudGFzaWthbiBzZWJhZ2FpDQoNClxiZWdpbnthbGlnbip9DQpMKFx0aGV0YSk9XHByb2Rfe2tcZ2VxIDB9IFxsZWZ0KHBfXHRoZXRhKGspXHJpZ2h0KV57bV9rfSwNClxlbmR7YWxpZ24qfQ0KDQpkaW1hbmEgJG1fayQgYWRhbGFoIGp1bWxhaCBvYnNlcnZhc2kgeWFuZyBzYW1hIGRlbmdhbiAkayQgLiBTZWNhcmEgbWF0ZW1hdGlzLCBraXRhIG1lbWlsaWtpDQoNClxiZWdpbnthbGlnbip9DQptX2s9IFxsZWZ0XHZlcnQgXHtpXHZlcnQgeF9pPWssIDFcbGVxIGkgXGxlcSBuXH0gXHJpZ2h0XHZlcnQ9XHN1bV97aT0gMX1ebiBJKHhfaT1rKSwgXHF1YWQga1xnZXEgMC4NClxlbmR7YWxpZ24qfQ0KDQpQZXJoYXRpa2FuIGJhaHdhIHRyYW5zZm9ybWFzaSBpbmkgbWVtcGVydGFoYW5rYW4gc2VtdWEgZGF0YSwgbWVueXVzdW5ueWEgZGVuZ2FuIGNhcmEgeWFuZyBlZmlzaWVuLiBVbnR1ayAkbiQgeWFuZyBiZXNhciAgaGFsIGluaSBtZW55ZWJhYmthbiBrb21wcmVzaSBkYXRhIGRhbGFtIGFydGkga2VjdWt1cGFuLiBEaSBiYXdhaCBpbmksIGthbWkgbWVueWFqaWthbiBla3NwcmVzaSB1bnR1ayAqbWxlKiBkYWxhbSBoYWwgJChtX2spX3tr4omlMX0kIGp1Z2EuDQoNCioqS2FzdXMgS2h1c3VzOiBEaXN0cmlidXNpIFBvaXNzb24qKi4gRGFsYW0ga2FzdXMgaW5pLCBzZXBlcnRpIHlhbmcgZGlzZWJ1dGthbiBkaSBhdGFzLCBrZW11bmdraW5hbiBkaWJlcmlrYW4gb2xlaA0KDQpcYmVnaW57YWxpZ24qfQ0KTChcbGFtYmRhKT1cbGVmdChccHJvZF97aT0xfV5uIHhfaSFccmlnaHQpXnstMX1lXnstblxsYW1iZGF9XGxhbWJkYV57XHN1bV97aT0xfV5uIHhfaX0gLg0KXGVuZHthbGlnbip9DQoNCkRlbmdhbiBtZW5nZ3VuYWthbiBsb2dhcml0bWEsIGxvZy1rZW11bmdraW5hbiBhZGFsYWgNCg0KXGJlZ2lue2FsaWduKn0NCmwoXGxhbWJkYSk9IC1cc3VtX3tpPTF9Xm4gXGxvZyh4X2khKSAtblxsYW1iZGEgK1xsb2coXGxhbWJkYSkgXGNkb3QgXHN1bV97aT0xfV5uIHhfaSAuDQpcZW5ke2FsaWduKn0NCg0KTWVuZ2FtYmlsIHR1cnVuYW5ueWEsIGthbWkgbWVtaWxpa2kNCg0KXGJlZ2lue2FsaWduKn0NCmwnKFxsYW1iZGEpPSAtbiArXGZyYWN7MX17XGxhbWJkYX1cc3VtX3tpPTF9Xm4geF9pLg0KXGVuZHthbGlnbip9DQoNCkRhbGFtIG1lbmdldmFsdWFzaSAkbOKAsuKAsijOuykkLCBrZXRpa2EgJOKIkV5uX3tpPTF9eGk+MCQsICRs4oCy4oCyPDAkLiBBa2liYXRueWEsIG1ha3NpbXVtIGRpY2FwYWkgcGFkYSByYXRhLXJhdGEgc2FtcGVsLCAkXGJhcnt4fSQgeWFuZyBkaXNhamlrYW4gZGkgYmF3YWggaW5pLiBLZXRpa2EgJOKIkV5uX3tpPTF9eGk9MCQgbWFrYSBrZW11bmdraW5hbiBhZGFsYWggZnVuZ3NpIG1lbnVydW4gZGFuIGthcmVuYW55YSBtYWtzaW11bSBkaWNhcGFpIHBhZGEgbmlsYWkgcGFyYW1ldGVyIHlhbmcgcGFsaW5nIGtlY2lsOyBoYWwgaW5pIG1lbmdha2liYXRrYW4gZXN0aW1hc2kga2VtdW5na2luYW4gbWFrc2ltdW0gbWVuamFkaSBub2wuIE9sZWgga2FyZW5hIGl0dSwga2l0YSBtZW1pbGlraQ0KDQpcYmVnaW57YWxpZ24qfQ0KXG92ZXJsaW5le3h9ID0gXGhhdHtcbGFtYmRhfV97XHJtIE1MRX0gPSBcZnJhY3sxfXtufVxzdW1fe2k9MX1ebiB4X2kuDQpcZW5ke2FsaWduKn0NCg0KUGVyaGF0aWthbiBiYWh3YSByYXRhLXJhdGEgc2FtcGVsIGp1Z2EgZGFwYXQgZGloaXR1bmcgc2ViYWdhaQ0KDQpcYmVnaW57YWxpZ24qfQ0KXG92ZXJsaW5le3h9ID0gXGZyYWN7MX17bn0gXHN1bV97a1xnZXEgMX0gayBcY2RvdCBtX2sgfi4NClxlbmR7YWxpZ24qfQ0KDQpQYXR1dCBkaWNhdGF0IGJhaHdhIGRhbGFtIGthc3VzIFBvaXNzb24sIGRpc3RyaWJ1c2kgeWFuZyB0ZXBhdCBkYXJpICTOu197TUxFfSQgdGVyc2VkaWEgZGFsYW0gYmVudHVrIHRlcnR1dHVwIC0gaW5pIGFkYWxhaCBQb2lzc29uIGJlcnNrYWxhIC0ga2V0aWthIGRpc3RyaWJ1c2kgeWFuZyBtZW5kYXNhcmlueWEgYWRhbGFoIFBvaXNzb24uIEhhbCBpbmkgZGlrYXJlbmFrYW4ganVtbGFoIHZhcmlhYmVsIGFjYWsgUG9pc3NvbiBpbmRlcGVuZGVuIGFkYWxhaCBQb2lzc29uIGp1Z2EuIFRlbnR1IHNhamEsIHVudHVrIHVrdXJhbiBzYW1wZWwgeWFuZyBiZXNhciwgc2VzZW9yYW5nIGRhcGF0IG1lbmdndW5ha2FuIFRlb3JlbWEgQmF0YXMgVGVuZ2FoL0NlbnRyYWwgTGltaXQgVGhlb3JlbSAoQ0xUKSBiaWFzYSB1bnR1ayBtZW5kYXBhdGthbiBwZXJraXJhYW4gbm9ybWFsLiBQZXJoYXRpa2FuIGJhaHdhIHBlcmtpcmFhbiB5YW5nIHRlcmFraGlyIGJlcmxha3UgYmFoa2FuIGppa2EgZGlzdHJpYnVzaSB5YW5nIG1lbmRhc2FyaSBhZGFsYWggZGlzdHJpYnVzaSBhcGEgcHVuIGRlbmdhbiBtb21lbiBrZWR1YSB5YW5nIHRlcmJhdGFzLg0KDQoqKkthc3VzIEtodXN1czogRGlzdHJpYnVzaSBCaW5vbWlhbCoqLiBUaWRhayBzZXBlcnRpIGthc3VzIGRpc3RyaWJ1c2kgUG9pc3NvbiwgcnVhbmcgcGFyYW1ldGVyIGRhbGFtIGthc3VzIGJpbm9taWFsIGFkYWxhaCAkMiQgZGltZW5zaS4gT2xlaCBrYXJlbmEgaXR1LCBtYXNhbGFoIG9wdGltYXNpIHNlZGlraXQgbGViaWggbWVuYW50YW5nLiBLaXRhIG11bGFpIGRlbmdhbiBtZW5nYW1hdGkgYmFod2Ega2VtdW5na2luYW4gZGliZXJpa2FuIG9sZWgNCg0KXGJlZ2lue2FsaWduKn0NCkwobSxxKT0gXGxlZnQoXHByb2Rfe2k9MX1ebiB7bSBcY2hvb3NlIHhfaX1ccmlnaHQpIHFee1xzdW1fe2k9MX1ebiB4X2l9ICgxLXEpXntubS1cc3VtX3tpPTF9Xm4geF9pfSAuDQpcZW5ke2FsaWduKn0NCg0KRGVuZ2FuIG1lbmdndW5ha2FuIGxvZ2FyaXRtYSwgbG9nLWtlbXVuZ2tpbmFuIGFkYWxhaA0KDQpcYmVnaW57YWxpZ24qfQ0KXGJlZ2lue2FycmF5fXtsbH0NCmwobSxxKSAmPSBcc3VtX3tpPTF9Xm4gXGxvZ1xsZWZ0KHttIFxjaG9vc2UgeF9pfVxyaWdodCkgKyBcbGVmdCh7XHN1bV97aT0xfV5uIHhfaX1ccmlnaHQpXGxvZyhxKSBcXA0KJiBcIFwgXCArIFxsZWZ0KHtubS1cc3VtX3tpPTF9Xm4geF9pfVxyaWdodClcbG9nKDEtcSkgXFwNCiY9IFxzdW1fe2k9MX1ebiBcbG9nXGxlZnQoe20gXGNob29zZSB4X2l9XHJpZ2h0KSArIG4gXG92ZXJsaW5le3h9XGxvZyhxKSArIG5cbGVmdCh7bS0gXG92ZXJsaW5le3h9fVxyaWdodClcbG9nKDEtcSkgLA0KXGVuZHthcnJheX0NClxlbmR7YWxpZ24qfQ0KDQpkaSBtYW5hICRcYmFye3h9ID0gbl57LTF94oiRXm5fe2k9MX14aSQuIFBlcmhhdGlrYW4gYmFod2Ega2FyZW5hIG0gaGFueWEgbWVuZ2FtYmlsIG5pbGFpIGJpbGFuZ2FuIGJ1bGF0IG5vbi1uZWdhdGlmLCBraXRhIHRpZGFrIGRhcGF0IG1lbmdndW5ha2FuIGthbGt1bHVzIG11bHRpdmFyaWF0IHVudHVrIG1lbmVtdWthbiBuaWxhaSBvcHRpbWFsLiBOYW11biBkZW1pa2lhbiwga2l0YSBkYXBhdCBtZW5nZ3VuYWthbiBrYWxrdWx1cyB2YXJpYWJlbCB0dW5nZ2FsIHVudHVrIG1lbnVuanVra2FuIGJhaHdhDQoNClxiZWdpbntlcXVhdGlvbn0NClxoYXR7cX1fe01MRX1cdGltZXMgXGhhdHttfV97TUxFfSA9IFxvdmVybGluZXt4fS4gIA0KXHRhZ3syLjJ9DQpcZW5ke2VxdWF0aW9ufQ0KDQoqKip2ZXJpZmlrYXNpIHBlcnNhbWFhbiAyLjIqKioNCg0KVGVyaGFkYXAgaGFsIGluaSwga2FtaSBtZW5jYXRhdCBiYWh3YSB1bnR1ayBuaWxhaSAkbSQgeWFuZyB0ZXRhcA0KDQpcYmVnaW57YWxpZ24qfQ0KXGZyYWN7XGRlbHRhfXtcZGVsdGEgcX0gbChtLHEpID0gXGZyYWN7biBcb3ZlcmxpbmV7eH19e3F9LSBcZnJhY3tuXGxlZnQoe20tIFxvdmVybGluZXt4fX1ccmlnaHQpfXsxLXF9LA0KXGVuZHthbGlnbip9DQoNCmRhbiBpdHUNCg0KXGJlZ2lue2FsaWduKn0NClxmcmFje1xkZWx0YV4yfXtcZGVsdGEgcV4yfSBsKG0scSk9IC1cZnJhY3tuIFxvdmVybGluZXt4fX17cV4yfSsgXGZyYWN7blxsZWZ0KHttLSBcb3ZlcmxpbmV7eH19XHJpZ2h0KX17KDEtcSleMn0gXGxlIDAuDQpcZW5ke2FsaWduKn0NCg0KSGFsIGRpIGF0YXMgbWVuZ2ltcGxpa2FzaWthbiBiYWh3YSB1bnR1ayBzZXRpYXAgbmlsYWkgJG0kIHlhbmcgdGV0YXAgeWFuZyB0ZXRhcCwgbmlsYWkgbWFrc2ltdW0gZGFyaSAkcSQgbWVtZW51aGkNCg0KXGJlZ2lue2FsaWduKn0NCm1xPVxvdmVybGluZXt4fSwNClxlbmR7YWxpZ24qfQ0KDQpkYW4ga2FyZW5hbnlhIGtpdGEgbWVtYnVhdCBwZXJzYW1hYW4gKDIuMikNCg0KRGVuZ2FuIHBlcnNhbWFhbiAoMi4yKSwgaGFsIGRpIGF0YXMgbWVyZWR1a3NpIHR1Z2FzIG1lbmphZGkgcGVuY2FyaWFuICRcaGF0e219X3tNTEV9JCB5YW5nIG1lcnVwYWthbiBwZW1ha3NpbXVtIGRhcmkNCg0KXGJlZ2lue2VxdWF0aW9ufQ0KTFxsZWZ0KG0sXGZyYWN7XG92ZXJsaW5le3h9fXttfSBccmlnaHQpLg0KXHRhZ3syLjN9DQpcZW5ke2VxdWF0aW9ufQ0KDQpQZXJoYXRpa2FuIGJhaHdhIGtlbXVuZ2tpbmFuIGFrYW4gbWVuamFkaSBub2wgdW50dWsgbmlsYWkgJG0kIHlhbmcgbGViaWgga2VjaWwgZGFyaSAkbWF4X3sx4omkaeKJpG59eGkkLCBkYW4ga2FyZW5hbnlhICRcaGF0e219X3tNTEV94omlbWF4X3sx4omkaeKJpG59eGkkLg0KDQoqKipDYXRhdGFuIFRla25pcyB0ZW50YW5nIFBlcmtpcmFhbiBQb2lzc29uIHVudHVrIEJpbm9taWFsKioqDQoNCkRhbGFtIG1lbmVudHVrYW4gYWxnb3JpdG1hIHVudHVrIG1lbmdoaXR1bmcgJFxoYXR7bX1fe01MRX0kLCBwZXJ0YW1hLXRhbWEga2FtaSB0dW5qdWtrYW4gYmFod2EgdW50dWsgYmViZXJhcGEgc2V0IGRhdGEsICRcaGF0e219X3tNTEV9JCBkYXBhdCBzYW1hIGRlbmdhbiAk4oieJCwgeWFuZyBtZW5naW5kaWthc2lrYW4gYmFod2EgZGlzdHJpYnVzaSBQb2lzc29uIGFrYW4gbWVtYmVyaWthbiBrZWNvY29rYW4geWFuZyBsZWJpaCBiYWlrIGRpYmFuZGluZ2thbiBkaXN0cmlidXNpIGJpbm9taWFsIG1hbmEgcHVuLiBIYWwgaW5pIHRlcmphZGkga2FyZW5hIGRpc3RyaWJ1c2kgYmlub21pYWwgZGVuZ2FuIHBhcmFtZXRlciAkKG0sIFxiYXJ7eH0vbSkkIG1lbmRla2F0aSBkaXN0cmlidXNpIFBvaXNzb24gZGVuZ2FuIHBhcmFtZXRlciAkXGJhcnt4fSQgZGVuZ2FuICRtJCBtZW5kZWthdGkgdGFrIHRlcmhpbmdnYS4gRmFrdGEgYmFod2EgYmViZXJhcGEgc2V0IGRhdGEgKipsZWJpaCBtZW1pbGloKiogZGlzdHJpYnVzaSBQb2lzc29uIHNlaGFydXNueWEgdGlkYWsgbWVuZ2hlcmFua2FuIGthcmVuYSBkYWxhbSBwZW5nZXJ0aWFuIGRpIGF0YXMsIGhpbXB1bmFuIGRpc3RyaWJ1c2kgUG9pc3NvbiBiZXJhZGEgcGFkYSBiYXRhcyBoaW1wdW5hbiBkaXN0cmlidXNpIGJpbm9taWFsLiBNZW5hcmlrbnlhLCBkYWxhbSBPbGtpbiwgUGV0a2F1LCBkYW4gWmlkZWsgKDE5ODEpIG1lcmVrYSBtZW51bmp1a2thbiBiYWh3YSBqaWthIHJhdGEtcmF0YSBzYW1wZWwga3VyYW5nIGRhcmkgYXRhdSBzYW1hIGRlbmdhbiB2YXJpYW5zIHNhbXBlbCBtYWthICRcaGF0e219X3tNTEV9ID0g4oieJCBqaWthIHRpZGFrLCBtYWthIHRlcmRhcGF0IHNlYnVhaCAkbSQgYmVyaGluZ2dhIHlhbmcgbWVtYWtzaW11bWthbiBwZXJzYW1hYW4gKDIuMykuDQoNClBhZGEgR2FtYmFyIDIuMiBkaSBiYXdhaCBpbmksIGthbWkgbWVuYW1waWxrYW4gcGxvdCAkTChtLCBcYmFye3h9L20pJCB1bnR1ayB0aWdhIHNhbXBlbCB5YW5nIGJlcmJlZGEgZGVuZ2FuIHVrdXJhbiAkNSQ7IG1lcmVrYSBoYW55YSBiZXJiZWRhIGRhbGFtIG5pbGFpIG1ha3NpbXVtIHNhbXBlbC4gU2FtcGVsIHBlcnRhbWEgZGFyaSAkKDIsMiwyLDQsNSkkIG1lbWlsaWtpIHJhc2lvIHJhdGEtcmF0YSBzYW1wZWwgdGVyaGFkYXAgdmFyaWFucyBzYW1wZWwgeWFuZyBsZWJpaCBiZXNhciBkYXJpICQxJCAkKDEuODc1KSQsIHNhbXBlbCBrZWR1YSBkYXJpICQoMiwyLDIsNCw2KSQgbWVtaWxpa2kgcmFzaW8gc2ViZXNhciAkMS4yNSQgeWFuZyBsZWJpaCBtZW5kZWthdGkgJDEkLCBkYW4gc2FtcGVsIGtldGlnYSBkYXJpICQoMiwyLDIsNCw2KSQgbWVtaWxpa2kgcmFzaW8gc2ViZXNhciAkMS4yNSQgeWFuZyBsZWJpaCBtZW5kZWthdGkgJDEkLCBkYW4gc2FtcGVsIGtlZW1wYXQgZGFyaSAkKDIsMiwyLDQsNikkIG1lbWlsaWtpIHJhc2lvIHNlYmVzYXIgJDEuMjUkIHlhbmcgbGViaWggbWVuZGVrYXRpICQxJC4gZGFuIHNhbXBlbCBrZXRpZ2EgJCgyLDIsMiw0LDcpJCBtZW1pbGlraSByYXNpbyBsZWJpaCBrZWNpbCBkYXJpICQxJCAkKDAuODg1KSQuIFVudHVrIGtldGlnYSBzYW1wZWwgaW5pLCBzZXBlcnRpIHlhbmcgZGl0dW5qdWtrYW4gcGFkYSBHYW1iYXIgMi4yLCAkXGJhcnttfV97TUxFfSQgc2FtYSBkZW5nYW4gJDckLCAkMTgkIGRhbiAk4oieJCBtYXNpbmctbWFzaW5nLiBQZXJoYXRpa2FuIGJhaHdhIG5pbGFpIHBlbWJhdGFzIGRhcmkgJEwobSwgXGJhcnt4fS9tKSQgc2ViYWdhaSAkbSQgbWVuZGVrYXRpIHRhayB0ZXJoaW5nZ2Egc2FtYSBkZW5nYW4NCg0KXGJlZ2lue2VxdWF0aW9ufQ0KXGxlZnQoXHByb2Rfe2k9MX1ebiB4X2khIFxyaWdodCleey0xfSBcZXhwXGxlZnQoLW4gXG92ZXJsaW5le3h9flxyaWdodCkgXGxlZnQoflxvdmVybGluZXt4fX5ccmlnaHQpXntuXG92ZXJsaW5le3h9fS4gDQpcdGFnezIuNH0NClxlbmR7ZXF1YXRpb259DQoNCkp1Z2EsIHBlcmhhdGlrYW4gYmFod2EgR2FtYmFyIDIuMiBtZW51bmp1a2thbiBiYWh3YSAqbWxlKiBkYXJpICRtJCB0aWRhayBrdWF0LCB5YWl0dSBwZXJ1YmFoYW4gcGFkYSBzZWJhZ2lhbiBrZWNpbCBzZXQgZGF0YSBkYXBhdCBtZW55ZWJhYmthbiBwZXJ1YmFoYW4gYmVzYXIgcGFkYSBwZW5ha3Npci4NCg0KRGlza3VzaSBkaSBhdGFzIG1lbnlhcmFua2FuIGFsZ29yaXRtYSBzZWRlcmhhbmEgYmVyaWt1dCBpbmk6DQoNCi0gTGFuZ2thaCAxLiBKaWthIHJhdGEtcmF0YSBzYW1wZWwga3VyYW5nIGRhcmkgYXRhdSBzYW1hIGRlbmdhbiB2YXJpYW5zIHNhbXBlbCwgbWFrYSB0ZXRhcGthbiAkXGhhdHttfV97TUxFfT3iiJ4kLiBEaXN0cmlidXNpIHlhbmcgZGlzYXJhbmthbiBvbGVoICpNTEUqIGFkYWxhaCBkaXN0cmlidXNpIFBvaXNzb24gZGVuZ2FuICRcaGF0e867fT1cYmFye3h9JC4NCi0gTGFuZ2thaCAyLiBKaWthIHJhdGEtcmF0YSBzYW1wZWwgbGViaWggYmVzYXIgZGFyaSB2YXJpYW5zIHNhbXBlbCwgbWFrYSBoaXR1bmdsYWggJEwobSxcYmFye3h9L20pJCB1bnR1ayAkbSQgeWFuZyBsZWJpaCBiZXNhciBhdGF1IHNhbWEgZGVuZ2FuIG1ha3NpbXVtIHNhbXBlbCBzYW1wYWkgJEwobSxcYmFye3h9L20pJCBtZW5kZWthdGkgbmlsYWkga2VtdW5na2luYW4gUG9pc3NvbiB5YW5nIGRpYmVyaWthbiBkYWxhbSAoMi40KS4gTmlsYWkgJG0kIHlhbmcgc2VzdWFpIGRlbmdhbiBuaWxhaSBtYWtzaW11bSAkTChtLFxiYXJ7eH0vbSkkIGRpIGFudGFyYSB5YW5nIGRpaGl0dW5nIHNhbWEgZGVuZ2FuICRcaGF0e219X3tNTEV9JC4NCg0KS2FtaSBtZW5jYXRhdCBiYWh3YSBqaWthIGRpc3RyaWJ1c2kgeWFuZyBtZW5kYXNhcmkgYWRhbGFoIGRpc3RyaWJ1c2kgYmlub21pYWwgZGVuZ2FuIHBhcmFtZXRlciAkKG0scSkkIChkZW5nYW4gJHE+MCQpIG1ha2EgJFxoYXR7bX1fe01MRX0kIHNhbWEgZGVuZ2FuICRtJCB1bnR1ayB1a3VyYW4gc2FtcGVsIHlhbmcgYmVzYXIuIEp1Z2EsICRcaGF0e3F9X3tNTEV9JCBha2FuIG1lbWlsaWtpIGRpc3RyaWJ1c2kgbm9ybWFsIGFzaW10b3RpayBkYW4ga29udmVyZ2VuIGRlbmdhbiBwcm9iYWJpbGl0YXMgc2F0dSB1bnR1ayAkcSQNCiAuDQpgYGB7cn0NCmxpYnJhcnkocG5nKQ0KaW1nIDwtIHJlYWRQTkcoImZpZ3VyMi5wbmciKQ0KcGxvdCgyOjMsIDI6MywgdHlwZSA9ICJuIiwgeGxhYiA9ICIiLCB5bGFiID0gIiIsIHhheHQgPSAibiIsIHlheHQgPSAibiIpDQpyYXN0ZXJJbWFnZShpbWcsIDIsIDIsIDMsIDMpDQpgYGANCg0KKipLYXN1cyBLaHVzdXM6IERpc3RyaWJ1c2kgQmlub21pYWwgTmVnYXRpZioqLiBLYXN1cyBkaXN0cmlidXNpIGJpbm9taWFsIG5lZ2F0aWYgbWlyaXAgZGVuZ2FuIGRpc3RyaWJ1c2kgYmlub21pYWwgZGFsYW0gYXJ0aSBraXRhIG1lbWlsaWtpIGR1YSBwYXJhbWV0ZXIgZGFuIG1sZXMgdGlkYWsgdGVyc2VkaWEgZGFsYW0gYmVudHVrIHRlcnR1dHVwLiBQZXJiZWRhYW4gZGkgYW50YXJhIGtlZHVhbnlhIGFkYWxhaCBiYWh3YSB0aWRhayBzZXBlcnRpIHBhcmFtZXRlciBiaW5vbWlhbCAkbSQgeWFuZyBtZW5nYW1iaWwgbmlsYWkgYmlsYW5nYW4gYnVsYXQgcG9zaXRpZiwgcGFyYW1ldGVyICRyJCBkYXJpIGJpbm9taWFsIG5lZ2F0aWYgZGFwYXQgbWVuZ2FtYmlsIG5pbGFpIHJlYWwgcG9zaXRpZi4gSGFsIGluaSBtZW1idWF0IG1hc2FsYWggb3B0aW1hc2kgbWVuamFkaSBzZWRpa2l0IGxlYmloIGtvbXBsZWtzLiBLaXRhIG11bGFpIGRlbmdhbiBtZW5nYW1hdGkgYmFod2Ega2VtdW5na2luYW4gZGFwYXQgZGlueWF0YWthbiBkYWxhbSBiZW50dWsgYmVyaWt1dDoNCg0KXGJlZ2lue2FsaWduKn0NCkwocixcYmV0YSk9XGxlZnQoXHByb2Rfe2k9MX1ebiB7cit4X2ktMSBcY2hvb3NlIHhfaX17cit4X2ktMSBcY2hvb3NlIHhfaX1ccmlnaHQpICgxK1xiZXRhKV57LW4ocitcb3ZlcmxpbmV7eH0pfSBcYmV0YV57blxvdmVybGluZXt4fX0uDQpcZW5ke2FsaWduKn0NCg0KSGFsIGRpIGF0YXMgbWVueWlyYXRrYW4gYmFod2EgbG9nLWtlbXVuZ2tpbmFuIGRpYmVyaWthbiBvbGVoDQoNClxiZWdpbnthbGlnbip9DQpsKHIsXGJldGEpPVxzdW1fe2k9MX1ebiBcbG9ne3IreF9pLTEgXGNob29zZSB4X2l9IC1uKHIrXG92ZXJsaW5le3h9KSBcbG9nKDErXGJldGEpICtuXG92ZXJsaW5le3h9XGxvZ1xiZXRhLA0KXGVuZHthbGlnbip9DQoNCmRhbiBrYXJlbmFueWENCg0KXGJlZ2lue2FsaWduKn0NClxmcmFje1xkZWx0YX17XGRlbHRhXGJldGF9IGwocixcYmV0YSkgPSAtXGZyYWN7bihyK1xvdmVybGluZXt4fSl9ezErXGJldGF9ICsgXGZyYWN7blxvdmVybGluZXt4fX17XGJldGF9Lg0KXGVuZHthbGlnbip9DQoNCkRlbmdhbiBtZW55YW1ha2FuIG5pbGFpIGRpIGF0YXMgZGVuZ2FuIG5vbCwga2l0YSBtZW5kYXBhdGthbg0KDQpcYmVnaW57YWxpZ24qfQ0KXGZyYWN7XGRlbHRhfXtcZGVsdGFcYmV0YX0gbChyLFxiZXRhKSA9IC1cZnJhY3tuKHIrXG92ZXJsaW5le3h9KX17MStcYmV0YX0gKyBcZnJhY3tuXG92ZXJsaW5le3h9fXtcYmV0YX0uDQpcZW5ke2FsaWduKn0NCg0KSGFsIGRpIGF0YXMgbWVyZWR1a3NpIG1hc2FsYWggb3B0aW1hc2kgZHVhIGRpbWVuc2kgbWVuamFkaSBtYXNhbGFoIHNhdHUgZGltZW5zaSAtIGtpdGEgcGVybHUgbWVtYWtzaW1hbGthbg0KDQpcYmVnaW57YWxpZ24qfQ0KXGhhdHtyfV97TUxFfVx0aW1lcyBcaGF0e1xiZXRhfV97TUxFfSA9IFxvdmVybGluZXt4fS4NClxlbmR7YWxpZ24qfQ0KDQp0ZXJoYWRhcCAkciQsIGRlbmdhbiAkciQgeWFuZyBtZW1ha3NpbXVta2FuIGFkYWxhaCAqbWxlKiBkYW4gJFxoYXR7zrJ9X3tNTEV9PVxiYXJ7eH0vXGhhdHtyfV97TUxFfSQuIERhbGFtIExldmluLCBSZWVkcywgZGFuIGthd2FuLWthd2FuICgxOTc3KSBkaXR1bmp1a2thbiBiYWh3YSBqaWthIHZhcmlhbnMgc2FtcGVsIGxlYmloIGJlc2FyIGRhcmlwYWRhIHJhdGEtcmF0YSBzYW1wZWwgbWFrYSB0ZXJkYXBhdCB1bmlrICRyID4wJCB5YW5nIG1lbWFrc2ltYWxrYW4gJGwociwgXGJhcnt4fS9yKSQgZGFuIGthcmVuYW55YSBtZXJ1cGFrYW4gKm1sZSogeWFuZyB1bmlrIHVudHVrICRyJCBkYW4gJM6yJC4gU2VsYWluIGl0dSwgbWVyZWthIGp1Z2EgbWVudW5qdWtrYW4gYmFod2EgamlrYSAkXGhhdHvPg31eMuKJpFxiYXJ7eH0kICwgbWFrYSBrZW11bmdraW5hbiBiaW5vbWlhbCBuZWdhdGlmIGFrYW4gZGlkb21pbmFzaSBvbGVoIGtlbXVuZ2tpbmFuIFBvaXNzb24gZGVuZ2FuICRcaGF0e867fSA9IFxiYXJ7eH0kIC4gRGVuZ2FuIGthdGEgbGFpbiwgZGlzdHJpYnVzaSBQb2lzc29uIG1lbWJlcmlrYW4ga2Vjb2Nva2FuIHlhbmcgbGViaWggYmFpayB0ZXJoYWRhcCBkYXRhLiBKYW1pbmFuIGRhbGFtIGthc3VzICRcaGF0e8+DfV4yPlxoYXR7zrx9JCBtZW11bmdraW5rYW4ga2l0YSB1bnR1ayBtZW5nZ3VuYWthbiBiZWJlcmFwYSBhbGdvcml0bWEgdW50dWsgbWVtYWtzaW1hbGthbiAkbChyLFxiYXJ7eH0vcikkIC4gVW50dWsgbWV0b2RlIGFsdGVybmF0aWYgZGFsYW0gbWVuZ2hpdHVuZyBrZW11bmdraW5hbiwga2l0YSBwZXJoYXRpa2FuIGJhaHdhDQoNClxiZWdpbnthcnJheX17bGx9DQpsKHIsXG92ZXJsaW5le3h9L3IpJj1cc3VtX3tpPTF9Xm4gXHN1bV97aj0xfV57eF9pfVxsb2coci0xK2opIC0gXHN1bV97aT0xfV5uXGxvZyh4X2khKSBcXA0KJiBcIFwgXCAtIG4ocitcb3ZlcmxpbmV7eH0pIFxsb2cocitcb3ZlcmxpbmV7eH0pICsgbnJcbG9nKHIpICsgblxvdmVybGluZXt4fVxsb2coXG92ZXJsaW5le3h9KSwNClxlbmR7YXJyYXl9DQoNCnlhbmcgbWVuZ2hhc2lsa2FuDQoNClxiZWdpbnthbGlnbip9DQpcbGVmdChcZnJhY3sxfXtufVxyaWdodClcZnJhY3tcZGVsdGF9e1xkZWx0YSByfWwocixcb3ZlcmxpbmV7eH0vcik9XGZyYWN7MX17bn1cc3VtX3tpPTF9Xm4gXHN1bV97aj0xfV57eF9pfVxmcmFjezF9e3ItMStqfSAtIFxsb2cocitcb3ZlcmxpbmV7eH0pICsgXGxvZyhyKS4NClxlbmR7YWxpZ24qfQ0KDQpLaXRhIHBlcmhhdGlrYW4gYmFod2EsIHBhZGEgZWtzcHJlc2kgZGkgYXRhcyB1bnR1ayBzdWt1LXN1a3UgeWFuZyBtZWxpYmF0a2FuIHBlbmp1bWxhaGFuIGdhbmRhLCBqdW1sYWggYmFnaWFuIGRhbGFtIHNhbWEgZGVuZ2FuIG5vbCBqaWthICR4X2kgPSAwJC4gRXN0aW1hc2kga2VtdW5na2luYW4gbWFrc2ltdW0gdW50dWsgJHIkIGFkYWxhaCBha2FyIGRhcmkgZWtzcHJlc2kgdGVyYWtoaXIgZGFuIGtpdGEgZGFwYXQgbWVuZ2d1bmFrYW4gYWxnb3JpdG1hIHBlbmNhcmlhbiBha2FyIHVudHVrIG1lbmdoaXR1bmdueWEuIFNlbGFpbiBpdHUsIGtpdGEganVnYSBtZW1pbGlraQ0KDQpcYmVnaW57YWxpZ24qfQ0KXGxlZnQoXGZyYWN7MX17bn1ccmlnaHQpXGZyYWN7XGRlbHRhXjJ9e1xkZWx0YSByXjJ9bChyLFxvdmVybGluZXt4fS9yKT1cZnJhY3tcb3ZlcmxpbmV7eH19e3Iocitcb3ZlcmxpbmV7eH0pfS1cZnJhY3sxfXtufVxzdW1fe2k9MX1ebiBcc3VtX3tqPTF9Xnt4X2l9XGZyYWN7MX17KHItMStqKV4yfS4NClxlbmR7YWxpZ24qfQ0KDQpBbGdvcml0bWEgcGVuY2FyaWFuIGFrYXIgYmVydWxhbmcgeWFuZyBzZWRlcmhhbmEgbmFtdW4gY2VwYXQga29udmVyZ2VuIGFkYWxhaCBtZXRvZGUgTmV3dG9uLCB5YW5nIHNlY2FyYSBrZWJldHVsYW4gZGl5YWtpbmkgdGVsYWggZGlndW5ha2FuIG9sZWggb3JhbmcgQmFiaWxvbmlhIHVudHVrIG1lbmdoaXR1bmcgYWthciBrdWFkcmF0LiBEYWxhbSBtZXRvZGUgaW5pLCBzZWJ1YWggcGVya2lyYWFuIGF3YWwgZGlwaWxpaCB1bnR1ayBha2FyIGRhbiBwZXJraXJhYW4gYmFydSB1bnR1ayBha2FyIHRlcnNlYnV0IGRpaGFzaWxrYW4gc2VjYXJhIGJlcnVydXRhbiBzYW1wYWkga29udmVyZ2VuLiBNZW5lcmFwa2FuIG1ldG9kZSBOZXd0b24gcGFkYSBtYXNhbGFoIGtpdGEgYWthbiBtZW5naGFzaWxrYW4gYWxnb3JpdG1hIGJlcmlrdXQ6DQpMYW5na2FoIGkuIFBpbGloIHNlYnVhaCBzb2x1c2kgaGFtcGlyYW4sIGthdGFrYW5sYWggJHJfMCQgLiBUZXRhcGthbiAkayQga2UgJDAkLg0KTGFuZ2thaCBpaS4gVGV0YXBrYW4gJHJfe2srMX0kIHNlYmFnYWkNCg0KXGJlZ2lue2FsaWduKn0NCnJfe2srMX09IHJfayAtIFxmcmFje1xmcmFjezF9e259XHN1bV97aT0xfV5uIFxzdW1fe2o9MX1ee3hfaX1cZnJhY3sxfXtyX2stMStqfSAtIFxsb2cocl9rK1xvdmVybGluZXt4fSkrXGxvZyhyX2spfXtcZnJhY3tcb3ZlcmxpbmV7eH19e3JfayhyX2srXG92ZXJsaW5le3h9KX0tXGZyYWN7MX17bn1cc3VtX3tpPTF9Xm5cc3VtX3tqPTF9Xnt4X2l9XGZyYWN7MX17KHJfay0xK2opXjJ9fQ0KXGVuZHthbGlnbip9DQoNCkxhbmdrYWggaWlpLiBKaWthICRyX3trKzF9IOKIvCByX2skIG1ha2EgbGFwb3JrYW4gJHJfe2srMX0kIHNlYmFnYWkgZXN0aW1hc2kgbWFrc2ltdW0ga2VtdW5na2luYW47IGppa2EgdGlkYWssIG5haWtrYW4gJGskIHNlYmVzYXIgJDEkIGRhbiB1bGFuZ2kgTGFuZ2thaCBpaS4NCg0KU2ViYWdhaSBjb250b2gsIGthbWkgbWVuc2ltdWxhc2lrYW4gJDUkIHNhbXBlbCBwZW5nYW1hdGFuICQ0MSw0OSw0MCwyNywyMyQgZGFyaSBiaW5vbWlhbCBuZWdhdGlmIGRlbmdhbiBwYXJhbWV0ZXIgJHIgPSAxMCQgZGFuICTOsiA9IDUkLiBNZW1pbGloIG5pbGFpIGF3YWwgZGFyaSAkciQgc2VkZW1pa2lhbiBzZWhpbmdnYQ0KDQpcYmVnaW57YWxpZ24qfQ0KclxiZXRhPVxoYXR7XG11fSBccXVhZCBcaGJveHthbmR9IFxxdWFkIHJcYmV0YSgxK1xiZXRhKT1caGF0e1xzaWdtYX1eMg0KXGVuZHthbGlnbip9DQoNCmRpIG1hbmEgJFxoYXR7zrx9JCBtZXJ1cGFrYW4gZXN0aW1hc2kgcmF0YS1yYXRhIGRhbiAkXGhhdHvPg31eezJ9JCBhZGFsYWggZXN0aW1hc2kgdmFyaWFucy4gSGFsIGluaSBtZW5naGFzaWxrYW4gbmlsYWkgYXdhbCB1bnR1ayAkciQgc2ViZXNhciAkMjMsMTQyODYkLiBJdGVyYXNpIGRhcmkgJHIkIGRhcmkgbWV0b2RlIE5ld3RvbiBhZGFsYWgNCg0KXGJlZ2lue2FsaWduKn0NCjIxLjM5NjI3LCAyMS42MDI4NywgMjEuNjA2NDcsIDIxLjYwNjQ3Ow0KXGVuZHthbGlnbip9DQoNCmtvbnZlcmdlbnNpIGNlcGF0IHlhbmcgdGVybGloYXQgZGkgYXRhcyBhZGFsYWggdGlwaWthbCBkYXJpIG1ldG9kZSBOZXd0b24uIE9sZWgga2FyZW5hIGl0dSwgZGFsYW0gY29udG9oIGluaSwgJFxoYXR7cn1fe01MRX3iiLwyMS42MDY0NyQgZGFuICRcaGF0e86yfV97TUxFfSA9IDEuNjY2MTYkLg0KDQpgYGB7cn0NCk5ld3RvbjwtZnVuY3Rpb24oeCxhYnNlcnIpew0KbXU8LW1lYW4oeCk7DQpzaWdtYTI8LW1lYW4oeF4yKS1tdV4yOw0KcjwtbXVeMi8oc2lnbWEyLW11KTsNCmI8LVRSVUU7DQppdGVyPC0wOw0Kd2hpbGUgKGIpIHsNCnRyPC1yOw0KbTE8LW1lYW4oYyh4W3g9PTBdLHNhcHBseSh4W3g+MF0sZnVuY3Rpb24oeil7c3VtKDEvKHRyOih0ci0xK3opKSl9KSkpOw0KbTI8LW1lYW4oYyh4W3g9PTBdLHNhcHBseSh4W3g+MF0sZnVuY3Rpb24oeil7c3VtKDEvKHRyOih0ci0xK3opKV4yKX0pKSk7DQpyPC10ci0obTEtbG9nKDErbXUvdHIpKS8obXUvKHRyKih0cittdSkpLW0yKTsNCmI8LSEoYWJzKHRyLXIpPGFic2Vycik7DQppdGVyPC1pdGVyKzE7DQp9DQpjKHIsaXRlcikNCn0NCmBgYA0KDQpVbnR1ayBtZXJpbmdrYXMgcGVtYmFoYXNhbiBraXRhIHRlbnRhbmcgTUxFIHVudHVrIGtlbGFzIGRpc3RyaWJ1c2kgJChhLGIsMCkkLCBwYWRhIEdhbWJhciAyLjMgZGkgYmF3YWggaW5pIGtpdGEgbWVtcGxvdCBuaWxhaSBtYWtzaW11bSBkYXJpIHBlbHVhbmcgUG9pc3NvbiAsICRMKG0sXGJhcnt4fS9tKSQgdW50dWsgYmlub21pYWwsIGRhbiAkTChyLFxiYXJ7eH0vcikkIHVudHVrIGJpbm9taWFsIG5lZ2F0aWYsIHVudHVrIHRpZ2Egc2FtcGVsIGJlcnVrdXJhbiA1IHlhbmcgZGliZXJpa2FuIHBhZGEgVGFiZWwgMi4xLiBEYXRhIHRlcnNlYnV0IGRpYnVhdCB1bnR1ayBtZW5jYWt1cCB0aWdhIHVydXRhbiBkYXJpIHJhdGEtcmF0YSBkYW4gdmFyaWFucyBzYW1wZWwuIFNlcGVydGkgeWFuZyBkaXR1bmp1a2thbiBwYWRhIEdhbWJhciAyLjMsIGRhbiBkaWR1a3VuZyBvbGVoIHRlb3JpLCBqaWthICgkXGhhdHvOvH0k4omkJFxoYXR7z4N9XjIkICkgbWFrYSBiaW5vbWlhbCBuZWdhdGlmIG1lbmdoYXNpbGthbiBuaWxhaSBrZW11bmdraW5hbiBtYWtzaW11bSB5YW5nIGxlYmloIHRpbmdnaTsgamlrYSAkXGhhdHvOvH0kPSRcaGF0e8+DfV4yJCBtYWthIFBvaXNzb24gbWVtaWxpa2kgbmlsYWkga2VtdW5na2luYW4gdGVydGluZ2dpOyBkYW4gdGVyYWtoaXIgZGFsYW0ga2FzdXMgJFxoYXR7zrx9JD4kXGhhdHvPg31eMiQgYmlub21pYWwgbWVtYmVyaWthbiBrZWNvY29rYW4geWFuZyBsZWJpaCBiYWlrIGRhcmlwYWRhIHlhbmcgbGFpbi4gSmFkaSBzZWJlbHVtIG1lbmNvY29ra2FuIGRhdGEgZnJla3VlbnNpIGRlbmdhbiBkaXN0cmlidXNpICQoYSxiLDApJCAkKGEsYiwwKSQsIHlhbmcgdGVyYmFpayBhZGFsYWggbWVtdWxhaSBkZW5nYW4gbWVtZXJpa3NhIHVydXRhbiAkXGhhdHvOvH0kIGRhbiAkXGhhdHvPg31eMiQgLiBTZWthbGkgbGFnaSBrYW1pIHRla2Fua2FuIGJhaHdhIFBvaXNzb24gYmVyYWRhIHBhZGEgYmF0YXMgZGlzdHJpYnVzaSBiaW5vbWlhbCBuZWdhdGlmIGRhbiBiaW5vbWlhbC4gSmFkaSwgZGFsYW0ga2FzdXMgJFxoYXR7zrx9JOKJpSRcaGF0e8+DfV4yJCAoJFxoYXR7zrx9JOKJpCRcaGF0e8+DfV4yJCksIFBvaXNzb24gbWVuZ2hhc2lsa2FuIGtlY29jb2thbiB5YW5nIGxlYmloIGJhaWsgZGFyaXBhZGEgYmlub21pYWwgbmVnYXRpZiAoYmlub21pYWwsIHJlc3AuKSwgeWFuZyBkaXR1bmp1a2thbiBvbGVoICRcaGF0e3J9JCA9IOKIniAoJFxoYXR7bX0kPeKIniBtYXNpbmctbWFzaW5nKS4NCg0KXGJlZ2lue2FsaWduKn0NClxzbWFsbHsNClxiZWdpbnthcnJheX17Y3xjfGN9DQpcaGxpbmUNClx0ZXh0e0RhdGF9ICYgXHRleHR7TWVhbiB9KFxoYXR7XG11fSkgJiBcdGV4dHtWYXJpYW5jZSB9KFxoYXR7XHNpZ21hfV4yKSBcXA0KXGhsaW5lDQooMiwzLDYsOCw5KSAmIDUuNjAgJiA3LjQ0IFxcIA0KKDIsNSw2LDgsOSkgJiA2ICYgNlxcDQooNCw3LDgsMTAsMTEpICYgOCAmIDZcXFxobGluZQ0KXGVuZHthcnJheX0NCn0NClxlbmR7YWxpZ24qfQ0KDQpgYGB7cn0NCmxpYnJhcnkocG5nKQ0KaW1nIDwtIHJlYWRQTkcoImZpZ3VyMy5wbmciKQ0KcGxvdCgyOjMsIDI6MywgdHlwZSA9ICJuIiwgeGxhYiA9ICIiLCB5bGFiID0gIiIsIHhheHQgPSAibiIsIHlheHQgPSAibiIpDQpyYXN0ZXJJbWFnZShpbWcsIDIsIDIsIDMsIDMpDQpgYGA=