Email             :
RPubs            : https://rpubs.com/brigitatiaraem/
Jurusan          : Statistika
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


Pratinjau Bab. Bab ini memperkenalkan pereservasi kerugian (juga dikenal sebagai pereservasi klaim) untuk produk asuransi harta benda dan kecelakaan (P&C, atau umum, non-hidup). Secara khusus, bab ini menggambarkan beberapa alat analitik dasar, meskipun penting, untuk menilai cadangan pada portofolio produk asuransi P&C. Pertama, Bagian 11.1 memberikan motivasi tentang perlunya pereservasi kerugian, kemudian Bagian 11.2 mempelajari sumber data yang tersedia dan memperkenalkan beberapa notasi formal untuk menangani pereservasi kerugian sebagai tantangan prediksi. Selanjutnya, Bagian 11.3 membahas metode tangga rantai (chain-ladder method) dan model tangga rantai tanpa distribusi Mack. Bagian 11.4 kemudian mengembangkan pendekatan yang sepenuhnya stokastik untuk menentukan cadangan yang belum diselesaikan dengan menggunakan model linear generalisasi (GLM), termasuk teknik bootstrapping untuk mendapatkan distribusi prediktif cadangan yang belum diselesaikan melalui simulasi.

0.1 Motivation

Titik awal adalah masa hidup klaim asuransi P&C. Gambar 11.1 menggambarkan perkembangan klaim tersebut dari waktu ke waktu dan mengidentifikasi peristiwa yang menarik perhatian:

Kejadian yang diasuransikan atau kecelakaan terjadi pada waktu tocc. Kejadian ini dilaporkan kepada perusahaan asuransi pada waktu trep, setelah beberapa keterlambatan. Jika klaim yang diajukan diterima oleh perusahaan asuransi, pembayaran akan dilakukan untuk mengganti kerugian keuangan pemegang polis. Dalam contoh ini, perusahaan asuransi mengganti kerugian yang terjadi dengan pembayaran kerugian pada waktu t1, t2, dan t3. Pada akhirnya, klaim diselesaikan atau ditutup pada waktu tset.

Seringkali klaim tidak langsung diselesaikan karena adanya keterlambatan dalam pelaporan klaim, keterlambatan dalam proses penyelesaian, atau keduanya. Keterlambatan pelaporan adalah waktu yang berlalu antara terjadinya kejadian yang diasuransikan dan pelaporan kejadian ini kepada perusahaan asuransi. Waktu antara pelaporan dan penyelesaian klaim dikenal sebagai keterlambatan penyelesaian. Misalnya, secara intuitif dapat dipahami bahwa klaim kerusakan material atau properti diselesaikan lebih cepat daripada klaim cedera tubuh yang melibatkan jenis cedera yang kompleks. Klaim yang ditutup juga dapat dibuka kembali karena perkembangan baru, misalnya cedera yang membutuhkan perawatan tambahan. Secara keseluruhan, perkembangan klaim biasanya membutuhkan waktu. Adanya keterlambatan ini dalam penyelesaian klaim membutuhkan perusahaan asuransi untuk memiliki modal guna menyelesaikan klaim-kilaim ini di masa depan.

0.1.1 Closed, IBNR, and RBNS Claims

Berdasarkan status run-off klaim, kami membedakan tiga jenis klaim dalam catatan perusahaan asuransi. Jenis pertama adalah klaim yang ditutup. Untuk klaim-klaim ini, perkembangan lengkap telah diamati. Dengan garis merah pada Gambar 11.2 menunjukkan saat ini, semua peristiwa dalam perkembangan klaim terjadi sebelum saat ini. Oleh karena itu, peristiwa-peristiwa ini diamati pada saat ini. Untuk kenyamanan, kami akan mengasumsikan bahwa klaim yang ditutup tidak dapat dibuka kembali.

Klaim RBNS adalah klaim yang Sudah Dilaporkan, Tetapi Belum sepenuhnya Diselesaikan pada saat ini atau saat evaluasi (tanggal penilaian), yaitu saat di mana cadangan harus dihitung dan dicatat oleh perusahaan asuransi. Kejadian, pelaporan, dan mungkin beberapa pembayaran kerugian terjadi sebelum saat ini, tetapi penyelesaian klaim terjadi di masa depan, setelah saat ini.

Klaim IBNR adalah klaim yang Telah Terjadi di masa lalu, Tetapi Belum Dilaporkan. Untuk klaim seperti ini, kejadian yang diasuransikan telah terjadi, tetapi perusahaan asuransi belum menyadari adanya klaim terkait. Klaim ini akan dilaporkan di masa depan dan perkembangannya yang lengkap (dari pelaporan hingga penyelesaian) terjadi di masa depan.

Perusahaan asuransi akan melakukan reservasi modal untuk memenuhi kewajiban masa depan mereka terkait dengan klaim RBNS dan juga klaim IBNR. Perkembangan masa depan dari klaim-klaim tersebut tidak pasti, dan teknik pemodelan prediktif akan digunakan untuk menghitung cadangan yang tepat, berdasarkan data perkembangan historis yang diamati pada klaim-klaim serupa.

0.1.2 Why Reserving?

Siklus produksi terbalik dalam pasar asuransi dan dinamika klaim yang digambarkan dalam Bagian 11.1.1 menjadi motivasi untuk perlunya pereservasi dan perancangan alat pemodelan prediktif untuk mengestimasi cadangan. Dalam asuransi, pendapatan premi mendahului biaya. Seorang perusahaan asuransi akan mengenakan premi kepada klien sebelum sebenarnya mengetahui seberapa mahal kebijakan atau kontrak asuransi tersebut akan menjadi. Hal ini berbeda dengan industri manufaktur yang biasanya seorang produsen mengetahui - sebelum menjual produk - berapa biaya produksi produk tersebut. Pada saat evaluasi yang ditentukan τ, perusahaan asuransi akan memprediksi kewajiban yang belum diselesaikan terkait dengan kontrak yang terjual di masa lalu. Ini adalah cadangan klaim atau cadangan kerugian; ini adalah modal yang diperlukan untuk menyelesaikan klaim terbuka dari paparan masa lalu. Ini adalah elemen yang sangat penting dalam neraca perusahaan asuransi, lebih khususnya pada sisi kewajiban neraca perusahaan.

0.2 Loss Reserve Data

0.2.1 From Micro to Macro

Sekarang kami akan menjelaskan data yang tersedia untuk mengestimasi cadangan yang belum diselesaikan untuk portofolio kontrak asuransi P&C. Perusahaan asuransi biasanya mencatat data mengenai perkembangan klaim individual seperti yang digambarkan dalam garis waktu di sebelah kiri Gambar 11.5. Kami menyebut data yang tercatat pada tingkat ini sebagai data granular atau mikro-level. Biasanya, seorang aktuaris menggabungkan informasi yang tercatat mengenai perkembangan klaim individual dari seluruh klaim dalam sebuah portofolio. Penggabungan ini menghasilkan data yang terstruktur dalam format segitiga seperti yang ditunjukkan di sebelah kanan Gambar 11.5. Data seperti ini disebut data agregat atau makro-level karena setiap sel di segitiga menampilkan informasi yang diperoleh dengan menggabungkan perkembangan dari beberapa klaim.

Tampilan segitiga yang digunakan dalam pereservasi kerugian disebut segitiga run-off atau segitiga perkembangan. Pada sumbu vertikal, segitiga tersebut mencantumkan tahun kejadian atau kecelakaan yang diikuti oleh sebuah portofolio. Pembayaran kerugian yang tercatat untuk klaim tertentu terhubung dengan tahun dimana kejadian yang diasuransikan terjadi. Sumbu horizontal mengindikasikan keterlambatan pembayaran sejak terjadinya kejadian yang diasuransikan.

0.2.2 Run-off Triangles

Contoh pertama dari segitiga run-off dengan pembayaran bertambah ditampilkan dalam Gambar 11.6 (diambil dari Wüthrich dan Merz (2008), Tabel 2.2, juga digunakan dalam Wüthrich dan Merz (2015), Tabel 1.4). Tahun kecelakaan (atau tahun kejadian) ditampilkan pada sumbu vertikal dan mulai dari tahun 2004 hingga 2013. Ini merujuk pada tahun dimana kejadian yang diasuransikan terjadi. Sumbu horizontal mengindikasikan keterlambatan pembayaran dalam tahun sejak terjadinya kejadian yang diasuransikan. Keterlambatan 0 digunakan untuk pembayaran yang dilakukan pada tahun terjadinya kecelakaan atau kejadian yang diasuransikan. Keterlambatan satu tahun digunakan untuk pembayaran yang dilakukan pada tahun setelah terjadinya kecelakaan.

Sementara segitiga pada Gambar 11.6 menampilkan data pembayaran bertambah, Gambar 11.7 menunjukkan informasi yang sama dalam format akumulatif. Sekarang, sel (2004,1) menampilkan total jumlah klaim yang dibayarkan hingga keterlambatan pembayaran 1 untuk semua klaim yang terjadi pada tahun 2004. Oleh karena itu, itu merupakan jumlah dari jumlah yang dibayarkan pada tahun 2004 dan jumlah yang dibayarkan pada tahun 2005 atas kecelakaan yang terjadi pada tahun 2004.

Berbagai informasi dapat disimpan dalam segitiga run-off seperti yang ditunjukkan dalam Gambar 11.6 dan Gambar 11.7. Tergantung pada jenis data yang disimpan, segitiga akan digunakan untuk mengestimasi jumlah yang berbeda.

Sebagai contoh, dalam format bertambah, sebuah sel dapat menampilkan:

  • Pembayaran klaim, seperti yang dijelaskan sebelumnya.
  • Jumlah klaim yang terjadi pada tahun tertentu dan dilaporkan dengan keterlambatan tertentu, ketika tujuannya adalah untuk mengestimasi jumlah klaim IBNR.
  • Perubahan jumlah yang terjadi, di mana jumlah klaim yang terjadi adalah jumlah dari klaim yang dibayarkan secara akumulatif dan estimasi kasus. Estimasi kasus adalah perkiraan ahli penangan klaim mengenai jumlah yang belum diselesaikan dalam suatu klaim.

Dalam format akumulatif, sebuah sel dapat menampilkan:

  • Jumlah pembayaran akumulatif, seperti yang dijelaskan sebelumnya.
  • Total jumlah klaim dari tahun kejadian, dilaporkan hingga keterlambatan tertentu.
  • Jumlah klaim yang terjadi.

Sumber informasi lainnya juga mungkin tersedia, misalnya kovariat (seperti jenis klaim), informasi eksternal (seperti inflasi, perubahan dalam regulasi). Sebagian besar metode pereservasi klaim yang dirancang untuk segitiga run-off didasarkan pada satu sumber informasi, meskipun kontribusi terbaru fokus pada penggunaan data yang lebih terperinci untuk pereservasi kerugian.

0.2.3 Loss Reserve Notation

Run-off Triangles

Untuk memformalkan tampilan yang ditunjukkan dalam Gambar 11.6 dan 11.7, kita akan menggunakan notasi sebagai berikut.

Kita mengasosiasikan i dengan tahun kejadian atau tahun kecelakaan, yaitu tahun di mana kejadian yang diasuransikan terjadi. Dalam notasi kita, tahun kecelakaan pertama yang dipertimbangkan dalam portofolio ditandai dengan 1, dan tahun kecelakaan terakhir yang paling baru ditandai dengan I .

Selanjutnya, j merujuk pada keterlambatan pembayaran atau tahun perkembangan, di mana keterlambatan yang sama dengan 0 sesuai dengan tahun kecelakaan itu sendiri. Gambar 11.8 menunjukkan sebuah segitiga di mana jumlah tahun yang sama dipertimbangkan baik pada sumbu vertikal maupun sumbu horizontal, oleh karena itu j berjalan dari 0 hingga \(J=I−1\) .

Variabel acak \(X_{ij}\) menunjukkan klaim bertambah yang dibayarkan dalam periode perkembangan \(j\) untuk klaim dari tahun kecelakaan \(i\) . Dengan demikian, \(X_{ij}\) adalah total jumlah yang dibayarkan pada tahun perkembangan \(j\) untuk semua klaim yang terjadi pada tahun kejadian \(i\) . Pembayaran ini sebenarnya dilakukan dalam tahun akuntansi atau tahun kalender \(i+j\) . Dalam perspektif akumulatif, \(C_{ij}\) adalah jumlah kumulatif yang dibayarkan hingga (dan termasuk) tahun perkembangan \(j\) untuk kecelakaan yang terjadi pada tahun \(i\) . Pada akhirnya, jumlah total \(C_{ij}\) dibayarkan pada tahun perkembangan akhir \(J\) untuk klaim yang terjadi pada tahun kecelakaan \(i\) . Dalam bab ini, waktu diungkapkan dalam tahun, meskipun unit waktu lainnya juga dapat digunakan, misalnya periode enam bulan atau kuartal.

The Loss Reserve

Pada saat evaluasi \(\tau\) , data pada segitiga atas telah diamati, sedangkan segitiga bawah harus diprediksi. Di sini, saat evaluasi adalah akhir tahun kecelakaan \(I\) , yang berarti bahwa sel \((i,j)\) dengan \(i+j \leq I\) diamati, dan sel \((i,j)\) dengan \(i+j > I\) termasuk masa depan dan harus diprediksi. Oleh karena itu, untuk segitiga run-off kumulatif, tujuan metode pereservasi kerugian adalah memprediksi \(C_i,I−1\) , jumlah klaim akhir untuk tahun kejadian \(i\) , yang sesuai dengan periode perkembangan akhir \(I−1\) dalam Gambar 11.7. Kami mengasumsikan bahwa - setelah periode ini tidak akan ada pembayaran lebih lanjut, meskipun asumsi ini bisa dikendurkan.

Karena \(C_{i,I-1}\) bersifat kumulatif, itu mencakup bagian yang diamati serta bagian yang harus diprediksi. Oleh karena itu, kewajiban yang belum diselesaikan atau cadangan kerugian untuk tahun kecelakaan \(i\) adalah

\[\begin{eqnarray*} \mathcal{R}^{(0)}_{i} = \sum_{\ell=I-i+1}^{I-1} X_{i\ell} = C_{i,I}-C_{i,I-i}. \end{eqnarray*}\]

Kami menyatakan cadangan baik sebagai jumlah data bertambah, \(X_{i\ell}\) , maupun sebagai selisih antara angka kumulatif. Dalam kasus terakhir, jumlah yang belum diselesaikan adalah jumlah kumulatif akhir \(C_{i,I}\) dikurangi dengan jumlah kumulatif yang diamati paling baru \(C_{i,I-i}\) .

Mengikuti Wüthrich dan Merz (2015), notasi \(\mathcal{R}^{(0)}_{i}\) mengacu pada cadangan untuk tahun kejadian \(i\) di mana \(i=1,\ldots,I\) . Superskrip (0) mengacu pada evaluasi cadangan pada saat ini, katakanlah \(\tau = 0\) . Kami memahami \(\tau = 0\) pada akhir tahun kejadian \(I\) , tahun kalender paling baru di mana data diamati dan terdaftar.

0.2.4 R Code to Summarize Loss Reserve Data

Kami menggunakan paket ChainLadder (Gesmann et al. 2019) untuk mengimpor segitiga run-off di R dan untuk menjelajahi tren yang ada dalam segitiga tersebut. Vignette paket ini dengan baik mendokumentasikan fungsi-fungsi untuk bekerja dengan data segitiga. Pertama, kami menjelajahi dua cara untuk mengimpor sebuah segitiga.

Long Format Data

Dataset triangle_W_M_long.txt menyimpan segitiga run-off kumulatif dari Wüthrich dan Merz (2008) (Tabel 2.2) dalam format panjang. Artinya: setiap sel dalam segitiga merupakan satu baris dalam dataset ini, dan tiga fitur disimpan: ukuran pembayaran (kumulatif, dalam contoh ini), tahun kejadian ( \(i\) ) dan penundaan pembayaran ( \(j\) ). Kami mengimpor file .txt tersebut dan menyimpan data frame hasilnya sebagai my_triangle_long:

my_triangle_long <- read.table("Data/triangle_W_M_long.txt", header = TRUE)
head(my_triangle_long)

Kami menggunakan fungsi as.triangle dari paket ChainLadder untuk mengubah data frame menjadi tampilan segitiga. Objek hasilnya, my_triangle,` sekarang merupakan tipe segitiga.

my_triangle <- as.triangle(my_triangle_long, origin = "origin", dev = "dev", value = "payment")
str(my_triangle)

Kami menampilkan segitiga dan mengenali angka-angka (dalam ribuan) dari Gambar 11.7. Sel-sel di segitiga bagian bawah ditandai sebagai tidak tersedia, NA.

round(my_triangle/1000, digits = 0)

Triangular Format Data

Sebagai alternatif, segitiga dapat disimpan dalam file .csv dengan tahun kejadian di baris dan tahun perkembangan di sel-sel kolom. Kami mengimpor file .csv ini dan mengubah my_triangle_csv hasilnya menjadi matriks.

my_triangle_csv <- read.csv2("Data/triangle_W_M.csv", header = FALSE)
my_triangle_matrix <- as.matrix(my_triangle_csv)
dimnames(my_triangle_matrix) <- list(origin = 2004 : 2013, dev = 0:(ncol(my_triangle_matrix)-1))
my_triangle <- as.triangle(my_triangle_matrix) 
round(my_triangle/1000, digits = 0)

From Cumulative to Incremental, and vice versa

Fungsi R cum2incr() dan incr2cum() memungkinkan kita untuk beralih dengan mudah antara tampilan kumulatif dan tampilan incremental, serta sebaliknya.

plot(my_triangle)

Sebagai alternatif, argumen lattice menciptakan satu plot per tahun kejadian.

plot(my_triangle, lattice = TRUE)

Daripada memplot segitiga kumulatif yang disimpan dalam my_triangle, kita dapat memplot segitiga run-off incremental.

plot(my_triangle_incr)
plot(my_triangle_incr, lattice = TRUE)

0.3 The Chain-Ladder Method

Metode yang paling banyak digunakan untuk memperkirakan cadangan kerugian yang belum diselesaikan adalah metode chain-ladder. Asal-usul metode ini tidak jelas tetapi telah terbukti efektif dalam aplikasi praktis pada awal tahun 1970-an, Taylor (1986). Seperti yang akan kita lihat, nama ini merujuk pada penggabungan serangkaian faktor perkembangan (dari tahun ke tahun) menjadi tangga faktor; kerugian yang belum matang naik menuju kedewasaan ketika dikalikan dengan rangkaian rasio ini, maka muncullah deskriptor yang sesuai, yaitu metode chain-ladder. Kita akan memulai dengan menjelajahi metode chain-ladder dalam versi deterministik atau algoritma, tanpa membuat asumsi stokastik apa pun. Kemudian kita akan menggambarkan model chain-ladder distribusi bebas risiko dari Mack.

0.3.1 The Deterministic Chain-Ladder

Metode chain-ladder deterministik berfokus pada run-off triangle dalam bentuk kumulatif. Ingatlah bahwa sel \((i,j)\) dalam segitiga ini menampilkan jumlah kumulatif yang dibayarkan hingga periode pengembangan \(j\) untuk klaim yang terjadi pada tahun \(i\). Metode chain-ladder mengasumsikan bahwa faktor pengembangan \(f_j\) (juga disebut faktor usia-ke-usia, rasio tautan, atau faktor chain-ladder) ada sehingga:

\[C_{i,j+1} = f_j \times C_{i,j}.\]

Maka, faktor pengembangan memberitahu Anda bagaimana jumlah kumulatif dalam tahun pengembangan \(j\) tumbuh menjadi jumlah kumulatif dalam tahun \(j+1\). Kami menyoroti jumlah kumulatif dalam periode 0 dengan warna biru dan jumlah kumulatif dalam periode 1 dengan warna merah pada Gambar 11.10 yang diambil dari Wüthrich dan Merz (2008) (Tabel 2.2, juga digunakan dalam Wüthrich dan Merz (2015), Tabel 1.4).

Metode chain-ladder kemudian menyajikan resep yang intuitif untuk memperkirakan atau menghitung faktor pengembangan ini. Karena faktor pengembangan pertama \(f_0\) menggambarkan perkembangan jumlah klaim kumulatif dari periode pengembangan 0 hingga periode pengembangan 1, faktor ini dapat diestimasi sebagai rasio dari jumlah kumulatif yang ditandai dengan warna merah dan jumlah kumulatif yang ditandai dengan warna biru, seperti yang terlihat pada Gambar 11.10. Dengan demikian, kita memperoleh perkiraan berikut untuk faktor pengembangan pertama \(\hat{f}_0^{CL}\), dengan observasi \(\mathcal{D}_I\).

\[\hat{f}^{CL}_{\color{magenta}{0}} = \frac{\sum_{i=1}^{10-\color{magenta}{0}-1} \color{red}{C_{i,\color{magenta}{0}+1}}}{\sum_{i=1}^{10-\color{magenta}{0}-1} \color{blue}{C_{i\color{magenta}{0}}}}= 1.4925.\]

Perhatikan bahwa indeks i yang digunakan dalam penjumlahan pada pembilang dan penyebut berjalan dari periode kejadian pertama (1) hingga periode kejadian terakhir (9) di mana kedua periode pengembangan 0 dan 1 diamati. Sebagai hasilnya, faktor pengembangan ini mengukur bagaimana data yang ditandai dengan warna biru berkembang menjadi data yang ditandai dengan warna merah, dengan rata-rata di seluruh periode kejadian di mana kedua periode diamati. Metode chain-ladder kemudian menggunakan estimasi faktor pengembangan ini untuk memprediksi jumlah kumulatif \(C_{10,1}\) (yaitu jumlah kumulatif yang dibayarkan hingga dan termasuk tahun pengembangan 1 untuk kecelakaan yang terjadi pada tahun ke-10). Prediksi ini diperoleh dengan mengalikan jumlah klaim kumulatif terakhir yang diamati untuk periode kejadian 10 (yaitu \(C_{10,0}\) dengan periode pengembangan 0) dengan estimasi faktor pengembangan \(\hat{f}^{CL}_0\).

\[\hat{C}_{10, 1} = C_{10,0} \cdot \hat{f}^{CL}_0 = 5,676\cdot 1.4925=8,471.\]

Melanjutkan pemikiran ini, faktor pengembangan berikutnya, \(f_1\), dapat diestimasi. Karena \(f_1\) mencerminkan perkembangan dari periode 1 ke periode 2, dapat diestimasi sebagai rasio angka-angka yang ditandai dengan warna merah dan biru seperti yang ditunjukkan dalam Gambar 11.11.

Notasi matematis untuk perkiraan \(\hat{f}_1^{CL}\) dari faktor pengembangan berikutnya \(f_1\), dengan mengingat observasi DI, adalah sebagai berikut:

\[\hat{f}^{CL}_{\color{magenta}{1}} = \frac{\sum_{i=1}^{10-\color{magenta}{1}-1} \color{red}{C_{i,\color{magenta}{1}+1}}}{\sum_{i=1}^{10-\color{magenta}{1}-1} \color{blue}{C_{i\color{magenta}{1}}}}=1.0778.\]

Dengan demikian, faktor ini mengukur pertumbuhan jumlah yang dibayarkan secara kumulatif pada periode pengembangan 1 menjadi periode 2, dihitung rata-rata untuk semua periode kejadian di mana kedua periode tersebut diamati. Indeks i sekarang berjalan dari periode 1 hingga 8, karena ini adalah periode kejadian di mana kedua periode pengembangan 1 dan 2 diamati. Perkiraan untuk faktor pengembangan kedua ini kemudian digunakan untuk memprediksi sel-sel yang hilang dan tidak teramati pada periode pengembangan 2:

\[\begin{array}{rl} \hat{C}_{10,2} &= C_{10,0} \cdot \hat{f}^{CL}_0 \cdot \hat{f}_1^{CL} = \hat{C}_{10,1} \cdot \hat{f}_1^{CL} = 8,471 \cdot 1.0778 = 9,130 \\ \hat{C}_{9,2} &= C_{9,1} \cdot \hat{f}^{CL}_1 = 7,649 \cdot 1.0778 = 8,244. \end{array}\]

Perlu diperhatikan bahwa untuk \(\hat{C}_{10,2}\), Anda sebenarnya menggunakan perkiraan \(\hat{C}_{10,1}\) dan mengalikannya dengan perkiraan faktor pengembangan \(\hat{f}_1^{CL}\).

Kita melanjutkannya secara analog dan mendapatkan prediksi berikut, dicetak miring pada Gambar 11.12:

Pada akhirnya, kita perlu memperkirakan nilai-nilai pada kolom terakhir. Faktor perkembangan terakhir, f8 , mengukur pertumbuhan dari periode perkembangan 8 ke periode perkembangan 9 dalam segitiga. Karena hanya baris pertama dalam segitiga yang memiliki kedua sel yang diamati, faktor terakhir ini diperkirakan sebagai rasio antara nilai yang berwarna merah dan nilai yang berwarna biru pada Gambar 11.13.

Diberikan observasi \(\mathcal{D}_I\), perkiraan faktor ini \(\hat{f}^{CL}_{8}\) adalah sama dengan:

\[\hat{f}^{CL}_{\color{magenta}{8}} = \frac{\sum_{i=1}^{10-\color{magenta}{8}-1} \color{red}{C_{i,\color{magenta}{8}+1}}}{\sum_{i=1}^{10-\color{magenta}{8}-1} \color{blue}{C_{i\color{magenta}{8}}}}=1.001.\]

Biasanya, faktor perkembangan terakhir ini mendekati 1 dan oleh karena itu arus kas yang dibayarkan dalam periode pengembangan terakhir relatif kecil. Dengan menggunakan perkiraan faktor pengembangan ini, kita sekarang dapat memperkirakan jumlah klaim kumulatif yang tersisa dalam kolom dengan mengalikan nilai-nilai untuk tahun pengembangan 8 dengan faktor ini.

Notasi matematika umum untuk prediksi tangga rantai untuk segitiga bawah \(( i+j>I )\) adalah sebagai berikut:

\[\begin{array}{rl} \hat{C}_{ij}^{CL} &= C_{i,I-i} \cdot \prod_{l=I-i}^{j-1} \hat{f}_l^{CL} \\ \hat{f}_j^{CL} &= \frac{\sum_{i=1}^{I-j-1} C_{i,j+1}}{\sum_{i=1}^{I-j-1} C_{ij}}, \end{array}\]

di mana \(C_{i,I-i}\) adalah pada diagonal terakhir yang diamati. Jelas bahwa asumsi penting dari metode chain-ladder adalah bahwa perkembangan proporsional klaim dari satu periode pengembangan ke periode berikutnya serupa untuk semua tahun kejadian.

Ini menghasilkan Figure 11.14 berikut:

angka-angka dalam kolom terakhir menunjukkan perkiraan jumlah klaim akhir. Estimasi jumlah klaim yang tertunda \(\hat{\mathcal{R}}_i^{CL}\) untuk periode kejadian tertentu \(i=I-J+1,\ldots, I\) kemudian diberikan oleh selisih antara jumlah klaim akhir dan jumlah kumulatif yang diamati pada diagonal terbaru:

\[\hat{\mathcal{R}}_i^{CL} =\hat{C}_{iJ}^{CL}-C_{i,I-i}.\]

Ini adalah estimasi chain-ladder untuk cadangan yang diperlukan untuk memenuhi kewajiban di masa depan terkait klaim yang terjadi dalam periode kejadian ini. Cadangan per periode kejadian dan total yang dijumlahkan dari semua periode kejadian dirangkum dalam Figure 11.15.

0.3.2 Mack’s Distribution-Free Chain-Ladder Model

Pada tahap ini, metode chain-ladder tradisional memberikan estimasi titik \(\hat{C}^{CL}_{iJ}\) untuk ramalan \(C_{iJ}\) , menggunakan informasi \(\mathcal{D}_I\) . Karena metode chain-ladder adalah algoritma yang sepenuhnya deterministik dan intuitif untuk melengkapi segitiga run-off, kita tidak dapat menentukan seberapa dapat diandalkan estimasi titik tersebut atau memodelkan variasi pembayaran di masa depan. Untuk menjawab pertanyaan-pertanyaan tersebut, diperlukan sebuah model stokastik yang mendasari yang dapat mereproduksi estimasi cadangan chain-ladder.

Dalam bagian ini, kami akan fokus pada model chain-ladder bebas distribusi sebagai model stokastik yang mendasar, diperkenalkan dalam Mack (1993). Metode ini memungkinkan kita untuk mengestimasi kesalahan standar dari prediksi chain-ladder. Pada Bagian berikutnya, yaitu Bagian 11.4, model linear umum digunakan untuk mengembangkan pendekatan yang sepenuhnya stokastik untuk memprediksi cadangan yang belum terbayar.

Dalam pendekatan Mack, berlaku kondisi-kondisi berikut (tanpa mengasumsikan distribusi):

  • Klaim Kumulatif \((C_{ij})_{j=0,\ldots,J}\) adalah independen di antara periode kejadian yang berbeda i .

  • Terdapat konstanta tetap \(f_0, \ldots, f_{J-1}\) dan \(\sigma^2_0,\ldots, \sigma^2_{J-1}\) yang memenuhi untuk semua \(i=1,\ldots, I\) dan \(j=0,\ldots,J-1\):

\[\begin{array}{rl} E[C_{i,j+1}|C_{i0},\ldots,C_{ij}] &= f_j \cdot C_{ij} \\ \text{Var}(C_{i,j+1}|C_{ij}) &= \sigma^2_j \cdot C_{ij}. \end{array}\]

Ini berarti klaim kumulatif \((C_{ij})_{j=0,\ldots,J}\) adalah proses Markov (di periode pengembangan j) dan oleh karena itu masa depan hanya bergantung pada masa sekarang.

Dengan asumsi ini, nilai harapan dari jumlah klaim akhir \(C_{i,J}\), dengan data yang tersedia di segitiga atas, adalah jumlah kumulatif pada diagonal terbaru \(C_{i, I-1}\) dikali dengan faktor pengembangan yang sesuai \(f_j\) . Dalam notasi matematika, kita mendapatkan dengan faktor pengembangan yang diketahui \(f_j\)dan observasi \(\mathcal{D}_I\) :

\[E[C_{iJ}|\mathcal{D}_I] = C_{i,I-i} \prod_{j=I-i}^{J-1} f_j\]

Ini persis apa yang dilakukan metode chain-ladder deterministik, seperti yang dijelaskan di Bagian 11.3.1. Dalam praktiknya, faktor pengembangan tidak diketahui dan perlu diestimasi dari data yang tersedia di segitiga atas. Dalam pendekatan Mack, kita mendapatkan persis ekspresi yang sama untuk mengestimasi faktor pengembangan \(f_j\) pada saat \(I\) seperti dalam algoritma chain-ladder deterministik:

\[\hat{f}_j^{CL} =\frac{\sum_{j=1}^{I-j-1} C_{i,j+1}}{\sum_{i=1}^{I-j-1} C_{ij}}.\]

Prediksi untuk sel-sel dalam segitiga bawah (yaitu sel-sel \(C_{i,j}\) dimana \(i+j>I\)) kemudian diperoleh dengan menggantikan faktor-faktor yang tidak diketahui \(f_j\) dengan perkiraan mereka yang sesuai \(\hat{f}_j^{CL}\) :

\[\hat{C}^{CL}_{ij} = C_{i,I-i}\prod_{l=I-i}^{j-1} \hat{f}_l^{CL}.\]

Untuk mengkuantifikasi kesalahan prediksi yang muncul dengan prediksi chain-ladder, Mack juga memperkenalkan parameter-varian \(\sigma^2_j\). Untuk mendapatkan wawasan dalam estimasi parameter-varian ini, diperkenalkan faktor-faktor perkembangan individu \(f_{i,j}\) (yang spesifik untuk periode kejadian i )

\[f_{i,j} = \frac{C_{i,j+1}}{C_{ij}}.\]

Faktor-faktor perkembangan individu ini juga menggambarkan bagaimana jumlah akumulasi tumbuh dari periode $j $ ke periode \(j+1\) , tetapi mereka hanya mempertimbangkan rasio dua sel (daripada mengambil rasio dua jumlah selama semua periode kejadian yang tersedia). Perhatikan bahwa faktor-faktor perkembangan dapat ditulis sebagai rata-rata tertimbang dari faktor-faktor perkembangan individu:

\[\hat{f}_j^{CL} = \sum_{i=1}^{I-j-1} \frac{C_{ij}}{\sum_{i=1}^{I-j-1} C_{ij}} f_{i,j},\]

Mari kita sekarang mengestimasi parameter-varian \(\sigma^2\) dengan menulis asumsi varians Mack dalam bentuk yang setara. Pertama, varians dari rasio \(C_{i,j+1}\) dan \(c_{i,j}\) yang bersyarat pada \(C_{i,0},\ldots, C_{i,j}\) berbanding terbalik dengan \(C_{i,j}\):

\[\text{Var}[C_{i,j+1}/C_{ij}|C_{i0},\ldots,C_{ij}] ~ \propto ~ \frac{1}{C_{ij}}.\]

Ini mengingatkan kita pada pengaturan kuadrat terkecil berbobot yang khas di mana bobotnya adalah kebalikan dari variabilitas respons. Oleh karena itu, variabel respons yang lebih volatil atau tidak presisi akan diberi bobot lebih rendah. \(C_{i,j}\) berperan sebagai bobotnya. Dengan menggunakan parameter-varian yang tidak diketahui \(\sigma^2_j\) , asumsi varians ini dapat ditulis sebagai:

\[\text{Var}[C_{i,j+1}|C_{i0},\ldots,C_{ij}] = \sigma^2_j \cdot C_{ij},\]

Koneksi dengan kuadrat terkecil berbobot kemudian secara langsung menghasilkan estimasi tak bias untuk parameter-varian yang tidak diketahui \(\sigma^2_j\) dalam bentuk jumlah kuadrat residu yang diboboti:

\[\hat{\sigma}^2_j = \frac{1}{I-j-2}\sum_{i=1}^{I-j-1} C_{ij}\left(\frac{C_{i,j+1}}{C_{ij}}-\hat{f}_j^{CL}\right)^2.\]

0.3.3 R code for Chain-Ladder Predictions

Kami menggunakan objek my_triangle dengan tipe triangle yang dibuat pada Bagian 11.2.4. Model chain-ladder bebas distribusi dari Mack (1993) diimplementasikan dalam paket ChainLadder (Gesmann et al. 2019) (sebagai bentuk khusus dari kuadrat terkecil berbobot) dan dapat diterapkan pada data my_triangle untuk memprediksi jumlah klaim yang belum diselesaikan dan mengestimasi kesalahan standar di sekitar ramalan tersebut.

CL <- MackChainLadder(my_triangle)
CL
round(CL$f,digits = 4)

Kita juga dapat mencetak seluruh run-off triangle (termasuk prediksi).

MSEP (Mean Squared Error of Prediction) untuk total cadangan melintasi semua periode kejadian diberikan oleh:

CL$Total.Mack.S.E^2

Disarankan untuk memvalidasi asumsi Mack dengan memeriksa bahwa tidak ada tren dalam plot residu. Empat plot terakhir yang kita peroleh dengan perintah berikut menunjukkan masing-masing residu standar terhadap nilai yang cocok, periode asal, periode kalender, dan periode pengembangan.

plot(CL)

Plot bagian kiri atas adalah grafik batang posisi klaim terbaru ditambah IBNR dan kesalahan standar Mack berdasarkan periode kejadian. Plot bagian kanan atas menunjukkan pola perkembangan yang diprediksi untuk semua periode kejadian (dimulai dari 1 untuk periode kejadian tertua).

Ketika mengatur argumen lattice=TRUE, kita akan mendapatkan plot perkembangan, termasuk prediksi dan perkiraan kesalahan standar berdasarkan periode kejadian.

plot(CL, lattice=TRUE)

0.4 GLMs and Bootstrap for Loss Reserves

Bagian ini membahas model regresi untuk menganalisis segitiga run-off. Ketika menganalisis data dalam segitiga run-off dengan model regresi, alat standar untuk pembangunan model, estimasi, dan prediksi tersedia. Dengan menggunakan alat-alat ini, kita dapat melampaui estimasi titik dan kesalahan standar seperti yang dijelaskan di Bagian 11.3. Secara khusus, kita membangun model linier generalisasi (GLM) untuk pembayaran inkremental \(X_{ij}\) dalam Gambar 11.6. Sementara metode chain-ladder bekerja dengan data kumulatif, GLM khas mengasumsikan variabel respons menjadi independen dan oleh karena itu bekerja dengan segitiga run-off inkremental.

0.4.1 Model Specification

Misalkan \(X_{ij}\) menyatakan pembayaran inkremental dalam sel \((i, j)\) dari segitiga run-off. Kami mengasumsikan bahwa \(X_{ij}\) saling independen dengan kepadatan \(f(x_{ij};\theta_{ij},\phi)\) dari keluarga distribusi eksponensial. Kami mengidentifikasi:

  • \(\mu_{ij}=E[X_{ij}]\) sebagai nilai harapan dari sel \(X_{ij}\),

  • \(\phi\)sebagai parameter dispersi, dan \(\text{Var}[X_{ij}]=\phi \cdot V(\mu_{ij})\) , di mana \(V(.)\) adalah fungsi varians

  • \(\eta_{ij}\) sebagai prediktor linear sehingga \(\eta_{ij}=g(\mu_{ij})\) dengan \(g\) sebagai fungsi link.

Distribusi dari keluarga eksponensial dan fungsi link default-nya tercantum di http://stat.ethz.ch/R-manual/R-patched/library/stats/html/family.html. Sekarang kami akan membahas tiga GLM khusus yang banyak digunakan untuk penyisihan kerugian.

Pertama, model regresi Poisson diperkenalkan dalam Bagian 8.2. Dalam model ini, kami mengasumsikan bahwa Xij memiliki distribusi Poisson dengan parameter

\[\mu_{ij} = \pi_i \cdot \gamma_j,\]

struktur yang terdiri dari persilangan kelas yang mencakup efek multiplicative dari tahun kejadian \(i\) dan periode perkembangan \(j\). Struktur model yang diusulkan tidak dapat diidentifikasi tanpa batasan tambahan pada parameter, misalnya \(\sum_{j=0}^J \gamma_j=1\). Batasan ini memberikan interpretasi eksplisit terhadap \(\pi_i\) (dengan \(i=1,\ldots,I\)) sebagai ukuran paparan atau volume untuk tahun kejadian \(i\) dan \(γ_j\) sebagai fraksi dari total volume yang dibayarkan dengan penundaan \(j\). Namun, saat melakukan kalibrasi GLM di R, batasan alternatif seperti \(\pi_1=1\) atau \(\gamma_1=1\), atau reparametrisasi di mana \(\mu_{ij} = \exp{(\mu+\alpha_i+\beta_j)}\) lebih mudah diimplementasikan. Kami melanjutkan dengan spesifikasi terakhir tersebut, termasuk \(\alpha_1 = \beta_0 = 0\), yang dikenal sebagai batasan sudut. GLM ini memperlakukan tahun kejadian dan penundaan pembayaran sebagai variabel faktor dan cocok dengan parameter per tingkat, disamping intercept \(\mu\). Batasan sudut menjadikan efek tingkat pertama variabel faktor sama dengan nol. Asumsi Poisson sangat berguna untuk segitiga run-off dengan jumlah klaim yang dilaporkan, sering digunakan dalam estimasi jumlah klaim IBNR (lihat Bagian 11.2).

Kedua, modifikasi menarik dari model regresi Poisson dasar adalah model regresi Poisson yang terdispersi berlebihan di mana \(Z_{ij}\) memiliki distribusi Poisson dengan parameter \(\mu_{ij}/\phi\) dan

\[\begin{array}{rl} X_{ij} &\sim \phi \cdot Z_{ij} \\ \mu_{ij} &= \exp{(\mu + \alpha_i + \beta_j)}. \end{array}\]

sebagai akibatnya, \(X_{ij}\) memiliki spesifikasi yang sama untuk rata-ratanya seperti dalam model regresi Poisson dasar, tetapi sekarang

\[\text{Var}[X_{ij}] = \phi^2 \cdot \text{Var}[Z_{ij}] = \phi \cdot \exp{(\mu + \alpha_i + \beta_j)}.\]

konstruksi ini memungkinkan untuk adanya di bawah (ketika \(\phi <1\)) dan over-dispersion (dengan \(\phi >1\)). Karena \(X_{ij}\) tidak lagi mengikuti distribusi yang terkenal, pendekatan ini disebut quasi-likelihood. Ini sangat berguna untuk memodelkan segitiga run-off dengan pembayaran bertambah, karena biasanya mengungkapkan over-dispersion.

Ketiga, model regresi gamma relevan untuk memodelkan segitiga run-off dengan pembayaran klaim. Ingat dari Bagian 3.2.1 (lihat juga Lampiran Bab 18) bahwa distribusi gamma memiliki parameter bentuk \(\alpha\) dan parameter skala \(\theta\). Dari ini, kita melakukan reparameterisasi dan mendefinisikan parameter baru \(\mu = \alpha \cdot \theta\) sambil tetap mempertahankan parameter skala \(\theta\). Selanjutnya, anggap bahwa \(X_{ij}\) memiliki distribusi gamma dan memperbolehkan \(\phi\) bervariasi berdasarkan \(ij\) sehingga

\[\mu_{ij} = \exp{(\mu + \alpha_i + \beta_j)}.\]

0.4.2 Model Estimation and Prediction

kami sekarang mengestimasi parameter regresi \(\phi\), \(\alpha_{i}\), dan \(\beta_j\) dalam GLM yang diusulkan. Di R, fungsi glm tersedia untuk mengestimasi parameter-parameter ini melalui estimasi maximum likelihood (mle) atau estimasi quasi-likelihood (dalam kasus Poisson over-dispersed). Dengan adanya estimasi parameter \(\hat{\phi}\), \(\hat{\alpha_i}\), dan\(\hat{\beta}_j\), kita dapat menghasilkan estimasi titik untuk setiap sel dalam segitiga atas.

\[\hat{X}_{ij} =\hat{E[X_{ij}]} = \exp{(\hat{\mu}+\hat{\alpha}_i+\hat{\beta}_j)},\ \text{with}\ i+j\leq I.\]

\[\hat{X}_{ij} = \hat{E[X_{ij}]} = \exp{(\hat{\mu}+\hat{\alpha}_i+\hat{\beta}_j)},\ \text{with}\ i+j> I.\]

LS0tDQp0aXRsZTogIkNoYXB0ZXIgMTcgQXBwZW5kaXggQzogTWF4aW11bSBMaWtlbGlob29kIFRoZW9yeSINCnN1YnRpdGxlOiAiVEVPUkkgUklTSUtPIg0KYXV0aG9yOiAiQnJpZ2l0YSBUaWFyYSBFbGdpdHlhbmEgTWVsYW50aWthICgyMDIwNDkyMDAwMSkiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICBodG1sX2RvY3VtZW50OiBudWxsDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHNhbmRzdG9uZQ0KICAgIGNzczogc3R5bGUxLmNzcw0KICAgIGhpZ2hsaWdodDogbW9ub2Nocm9tZQ0KLS0tDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoY2xhc3Muc291cmNlID0gIm5vY29weSIsDQogICAgICAgICAgICAgICAgICAgICAgY2xhc3Mub3V0cHV0ID0gIm5vY29weSIsDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEYsDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEYpDQpgYGAgICAgICAgICAgICAgICAgICAgICAgDQoNCjxpbWcgc3R5bGU9ImZsb2F0OiByaWdodDsgbWFyZ2luOiAwcHggMTAwcHggMHB4IDBweDsgd2lkdGg6MjUlIiBzcmM9ImZvdG9iYXJ1a3UuanBlZyIvPiANCg0KYGBge3IgbG9nbywgZWNobz1GQUxTRSxmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICczMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoImxvZ29tYXRhbmEucG5nIikNCmBgYA0KDQpFbWFpbCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbmJzcDs6ICBicmlnaXRhLm1lbGFudGlrYUBzdHVkZW50Lm1hdGFuYXVuaXZlcnNpdHkuYWMuaWQgPGJyPg0KUlB1YnMgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzogaHR0cHM6Ly9ycHVicy5jb20vYnJpZ2l0YXRpYXJhZW0vIDxicj4NCkp1cnVzYW4gJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzogW1N0YXRpc3Rpa2FdKGh0dHBzOi8vbWF0YW5hdW5pdmVyc2l0eS5hYy5pZC8/bHk9YWNhZGVtaWMmYz1zYikgPGJyPg0KQWRkcmVzcyAgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IDogQVJBIENlbnRlciwgTWF0YW5hIFVuaXZlcnNpdHkgVG93ZXIgPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbmJzcDsgSmwuIENCRCBCYXJhdCBLYXYsIFJULjEsIEN1cnVnIFNhbmdlcmVuZywgS2VsYXBhIER1YSwgVGFuZ2VyYW5nLCBCYW50ZW4gMTU4MTAuDQoNCioqKioNCg0KUHJhdGluamF1IEJhYi4gQmFiIGluaSBtZW1wZXJrZW5hbGthbiBwZXJlc2VydmFzaSBrZXJ1Z2lhbiAoanVnYSBkaWtlbmFsIHNlYmFnYWkgcGVyZXNlcnZhc2kga2xhaW0pIHVudHVrIHByb2R1ayBhc3VyYW5zaSBoYXJ0YSBiZW5kYSBkYW4ga2VjZWxha2FhbiAoUCZDLCBhdGF1IHVtdW0sIG5vbi1oaWR1cCkuIFNlY2FyYSBraHVzdXMsIGJhYiBpbmkgbWVuZ2dhbWJhcmthbiBiZWJlcmFwYSBhbGF0IGFuYWxpdGlrIGRhc2FyLCBtZXNraXB1biBwZW50aW5nLCB1bnR1ayBtZW5pbGFpIGNhZGFuZ2FuIHBhZGEgcG9ydG9mb2xpbyBwcm9kdWsgYXN1cmFuc2kgUCZDLiBQZXJ0YW1hLCBCYWdpYW4gMTEuMSBtZW1iZXJpa2FuIG1vdGl2YXNpIHRlbnRhbmcgcGVybHVueWEgcGVyZXNlcnZhc2kga2VydWdpYW4sIGtlbXVkaWFuIEJhZ2lhbiAxMS4yIG1lbXBlbGFqYXJpIHN1bWJlciBkYXRhIHlhbmcgdGVyc2VkaWEgZGFuIG1lbXBlcmtlbmFsa2FuIGJlYmVyYXBhIG5vdGFzaSBmb3JtYWwgdW50dWsgbWVuYW5nYW5pIHBlcmVzZXJ2YXNpIGtlcnVnaWFuIHNlYmFnYWkgdGFudGFuZ2FuIHByZWRpa3NpLiBTZWxhbmp1dG55YSwgQmFnaWFuIDExLjMgbWVtYmFoYXMgbWV0b2RlIHRhbmdnYSByYW50YWkgKGNoYWluLWxhZGRlciBtZXRob2QpIGRhbiBtb2RlbCB0YW5nZ2EgcmFudGFpIHRhbnBhIGRpc3RyaWJ1c2kgTWFjay4gQmFnaWFuIDExLjQga2VtdWRpYW4gbWVuZ2VtYmFuZ2thbiBwZW5kZWthdGFuIHlhbmcgc2VwZW51aG55YSBzdG9rYXN0aWsgdW50dWsgbWVuZW50dWthbiBjYWRhbmdhbiB5YW5nIGJlbHVtIGRpc2VsZXNhaWthbiBkZW5nYW4gbWVuZ2d1bmFrYW4gbW9kZWwgbGluZWFyIGdlbmVyYWxpc2FzaSAoR0xNKSwgdGVybWFzdWsgdGVrbmlrIGJvb3RzdHJhcHBpbmcgdW50dWsgbWVuZGFwYXRrYW4gZGlzdHJpYnVzaSBwcmVkaWt0aWYgY2FkYW5nYW4geWFuZyBiZWx1bSBkaXNlbGVzYWlrYW4gbWVsYWx1aSBzaW11bGFzaS4NCg0KIyMgTW90aXZhdGlvbg0KDQpUaXRpayBhd2FsIGFkYWxhaCBtYXNhIGhpZHVwIGtsYWltIGFzdXJhbnNpIFAmQy4gR2FtYmFyIDExLjEgbWVuZ2dhbWJhcmthbiBwZXJrZW1iYW5nYW4ga2xhaW0gdGVyc2VidXQgZGFyaSB3YWt0dSBrZSB3YWt0dSBkYW4gbWVuZ2lkZW50aWZpa2FzaSBwZXJpc3Rpd2EgeWFuZyBtZW5hcmlrIHBlcmhhdGlhbjoNCg0KS2VqYWRpYW4geWFuZyBkaWFzdXJhbnNpa2FuIGF0YXUga2VjZWxha2FhbiB0ZXJqYWRpIHBhZGEgd2FrdHUgdG9jYy4gS2VqYWRpYW4gaW5pIGRpbGFwb3JrYW4ga2VwYWRhIHBlcnVzYWhhYW4gYXN1cmFuc2kgcGFkYSB3YWt0dSB0cmVwLCBzZXRlbGFoIGJlYmVyYXBhIGtldGVybGFtYmF0YW4uIEppa2Ega2xhaW0geWFuZyBkaWFqdWthbiBkaXRlcmltYSBvbGVoIHBlcnVzYWhhYW4gYXN1cmFuc2ksIHBlbWJheWFyYW4gYWthbiBkaWxha3VrYW4gdW50dWsgbWVuZ2dhbnRpIGtlcnVnaWFuIGtldWFuZ2FuIHBlbWVnYW5nIHBvbGlzLiBEYWxhbSBjb250b2ggaW5pLCBwZXJ1c2FoYWFuIGFzdXJhbnNpIG1lbmdnYW50aSBrZXJ1Z2lhbiB5YW5nIHRlcmphZGkgZGVuZ2FuIHBlbWJheWFyYW4ga2VydWdpYW4gcGFkYSB3YWt0dSB0MSwgdDIsIGRhbiB0My4gUGFkYSBha2hpcm55YSwga2xhaW0gZGlzZWxlc2Fpa2FuIGF0YXUgZGl0dXR1cCBwYWRhIHdha3R1IHRzZXQuDQoNClNlcmluZ2thbGkga2xhaW0gdGlkYWsgbGFuZ3N1bmcgZGlzZWxlc2Fpa2FuIGthcmVuYSBhZGFueWEga2V0ZXJsYW1iYXRhbiBkYWxhbSBwZWxhcG9yYW4ga2xhaW0sIGtldGVybGFtYmF0YW4gZGFsYW0gcHJvc2VzIHBlbnllbGVzYWlhbiwgYXRhdSBrZWR1YW55YS4gS2V0ZXJsYW1iYXRhbiBwZWxhcG9yYW4gYWRhbGFoIHdha3R1IHlhbmcgYmVybGFsdSBhbnRhcmEgdGVyamFkaW55YSBrZWphZGlhbiB5YW5nIGRpYXN1cmFuc2lrYW4gZGFuIHBlbGFwb3JhbiBrZWphZGlhbiBpbmkga2VwYWRhIHBlcnVzYWhhYW4gYXN1cmFuc2kuIFdha3R1IGFudGFyYSBwZWxhcG9yYW4gZGFuIHBlbnllbGVzYWlhbiBrbGFpbSBkaWtlbmFsIHNlYmFnYWkga2V0ZXJsYW1iYXRhbiBwZW55ZWxlc2FpYW4uIE1pc2FsbnlhLCBzZWNhcmEgaW50dWl0aWYgZGFwYXQgZGlwYWhhbWkgYmFod2Ega2xhaW0ga2VydXNha2FuIG1hdGVyaWFsIGF0YXUgcHJvcGVydGkgZGlzZWxlc2Fpa2FuIGxlYmloIGNlcGF0IGRhcmlwYWRhIGtsYWltIGNlZGVyYSB0dWJ1aCB5YW5nIG1lbGliYXRrYW4gamVuaXMgY2VkZXJhIHlhbmcga29tcGxla3MuIEtsYWltIHlhbmcgZGl0dXR1cCBqdWdhIGRhcGF0IGRpYnVrYSBrZW1iYWxpIGthcmVuYSBwZXJrZW1iYW5nYW4gYmFydSwgbWlzYWxueWEgY2VkZXJhIHlhbmcgbWVtYnV0dWhrYW4gcGVyYXdhdGFuIHRhbWJhaGFuLiBTZWNhcmEga2VzZWx1cnVoYW4sIHBlcmtlbWJhbmdhbiBrbGFpbSBiaWFzYW55YSBtZW1idXR1aGthbiB3YWt0dS4gQWRhbnlhIGtldGVybGFtYmF0YW4gaW5pIGRhbGFtIHBlbnllbGVzYWlhbiBrbGFpbSBtZW1idXR1aGthbiBwZXJ1c2FoYWFuIGFzdXJhbnNpIHVudHVrIG1lbWlsaWtpIG1vZGFsIGd1bmEgbWVueWVsZXNhaWthbiBrbGFpbS1raWxhaW0gaW5pIGRpIG1hc2EgZGVwYW4uDQoNCiMjIyBDbG9zZWQsIElCTlIsIGFuZCBSQk5TIENsYWltcw0KDQpCZXJkYXNhcmthbiBzdGF0dXMgcnVuLW9mZiBrbGFpbSwga2FtaSBtZW1iZWRha2FuIHRpZ2EgamVuaXMga2xhaW0gZGFsYW0gY2F0YXRhbiBwZXJ1c2FoYWFuIGFzdXJhbnNpLiBKZW5pcyBwZXJ0YW1hIGFkYWxhaCBrbGFpbSB5YW5nIGRpdHV0dXAuIFVudHVrIGtsYWltLWtsYWltIGluaSwgcGVya2VtYmFuZ2FuIGxlbmdrYXAgdGVsYWggZGlhbWF0aS4gRGVuZ2FuIGdhcmlzIG1lcmFoIHBhZGEgR2FtYmFyIDExLjIgbWVudW5qdWtrYW4gc2FhdCBpbmksIHNlbXVhIHBlcmlzdGl3YSBkYWxhbSBwZXJrZW1iYW5nYW4ga2xhaW0gdGVyamFkaSBzZWJlbHVtIHNhYXQgaW5pLiBPbGVoIGthcmVuYSBpdHUsIHBlcmlzdGl3YS1wZXJpc3Rpd2EgaW5pIGRpYW1hdGkgcGFkYSBzYWF0IGluaS4gVW50dWsga2VueWFtYW5hbiwga2FtaSBha2FuIG1lbmdhc3Vtc2lrYW4gYmFod2Ega2xhaW0geWFuZyBkaXR1dHVwIHRpZGFrIGRhcGF0IGRpYnVrYSBrZW1iYWxpLg0KDQpLbGFpbSBSQk5TIGFkYWxhaCBrbGFpbSB5YW5nIFN1ZGFoIERpbGFwb3JrYW4sIFRldGFwaSBCZWx1bSBzZXBlbnVobnlhIERpc2VsZXNhaWthbiBwYWRhIHNhYXQgaW5pIGF0YXUgc2FhdCBldmFsdWFzaSAodGFuZ2dhbCBwZW5pbGFpYW4pLCB5YWl0dSBzYWF0IGRpIG1hbmEgY2FkYW5nYW4gaGFydXMgZGloaXR1bmcgZGFuIGRpY2F0YXQgb2xlaCBwZXJ1c2FoYWFuIGFzdXJhbnNpLiBLZWphZGlhbiwgcGVsYXBvcmFuLCBkYW4gbXVuZ2tpbiBiZWJlcmFwYSBwZW1iYXlhcmFuIGtlcnVnaWFuIHRlcmphZGkgc2ViZWx1bSBzYWF0IGluaSwgdGV0YXBpIHBlbnllbGVzYWlhbiBrbGFpbSB0ZXJqYWRpIGRpIG1hc2EgZGVwYW4sIHNldGVsYWggc2FhdCBpbmkuDQoNCg0KS2xhaW0gSUJOUiBhZGFsYWgga2xhaW0geWFuZyBUZWxhaCBUZXJqYWRpIGRpIG1hc2EgbGFsdSwgVGV0YXBpIEJlbHVtIERpbGFwb3JrYW4uIFVudHVrIGtsYWltIHNlcGVydGkgaW5pLCBrZWphZGlhbiB5YW5nIGRpYXN1cmFuc2lrYW4gdGVsYWggdGVyamFkaSwgdGV0YXBpIHBlcnVzYWhhYW4gYXN1cmFuc2kgYmVsdW0gbWVueWFkYXJpIGFkYW55YSBrbGFpbSB0ZXJrYWl0LiBLbGFpbSBpbmkgYWthbiBkaWxhcG9ya2FuIGRpIG1hc2EgZGVwYW4gZGFuIHBlcmtlbWJhbmdhbm55YSB5YW5nIGxlbmdrYXAgKGRhcmkgcGVsYXBvcmFuIGhpbmdnYSBwZW55ZWxlc2FpYW4pIHRlcmphZGkgZGkgbWFzYSBkZXBhbi4NCg0KUGVydXNhaGFhbiBhc3VyYW5zaSBha2FuIG1lbGFrdWthbiByZXNlcnZhc2kgbW9kYWwgdW50dWsgbWVtZW51aGkga2V3YWppYmFuIG1hc2EgZGVwYW4gbWVyZWthIHRlcmthaXQgZGVuZ2FuIGtsYWltIFJCTlMgZGFuIGp1Z2Ega2xhaW0gSUJOUi4gUGVya2VtYmFuZ2FuIG1hc2EgZGVwYW4gZGFyaSBrbGFpbS1rbGFpbSB0ZXJzZWJ1dCB0aWRhayBwYXN0aSwgZGFuIHRla25payBwZW1vZGVsYW4gcHJlZGlrdGlmIGFrYW4gZGlndW5ha2FuIHVudHVrIG1lbmdoaXR1bmcgY2FkYW5nYW4geWFuZyB0ZXBhdCwgYmVyZGFzYXJrYW4gZGF0YSBwZXJrZW1iYW5nYW4gaGlzdG9yaXMgeWFuZyBkaWFtYXRpIHBhZGEga2xhaW0ta2xhaW0gc2VydXBhLg0KDQojIyMgV2h5IFJlc2VydmluZz8NCg0KU2lrbHVzIHByb2R1a3NpIHRlcmJhbGlrIGRhbGFtIHBhc2FyIGFzdXJhbnNpIGRhbiBkaW5hbWlrYSBrbGFpbSB5YW5nIGRpZ2FtYmFya2FuIGRhbGFtIEJhZ2lhbiAxMS4xLjEgbWVuamFkaSBtb3RpdmFzaSB1bnR1ayBwZXJsdW55YSBwZXJlc2VydmFzaSBkYW4gcGVyYW5jYW5nYW4gYWxhdCBwZW1vZGVsYW4gcHJlZGlrdGlmIHVudHVrIG1lbmdlc3RpbWFzaSBjYWRhbmdhbi4gRGFsYW0gYXN1cmFuc2ksIHBlbmRhcGF0YW4gcHJlbWkgbWVuZGFodWx1aSBiaWF5YS4gU2VvcmFuZyBwZXJ1c2FoYWFuIGFzdXJhbnNpIGFrYW4gbWVuZ2VuYWthbiBwcmVtaSBrZXBhZGEga2xpZW4gc2ViZWx1bSBzZWJlbmFybnlhIG1lbmdldGFodWkgc2ViZXJhcGEgbWFoYWwga2ViaWpha2FuIGF0YXUga29udHJhayBhc3VyYW5zaSB0ZXJzZWJ1dCBha2FuIG1lbmphZGkuIEhhbCBpbmkgYmVyYmVkYSBkZW5nYW4gaW5kdXN0cmkgbWFudWZha3R1ciB5YW5nIGJpYXNhbnlhIHNlb3JhbmcgcHJvZHVzZW4gbWVuZ2V0YWh1aSAtIHNlYmVsdW0gbWVuanVhbCBwcm9kdWsgLSBiZXJhcGEgYmlheWEgcHJvZHVrc2kgcHJvZHVrIHRlcnNlYnV0LiBQYWRhIHNhYXQgZXZhbHVhc2kgeWFuZyBkaXRlbnR1a2FuIM+ELCBwZXJ1c2FoYWFuIGFzdXJhbnNpIGFrYW4gbWVtcHJlZGlrc2kga2V3YWppYmFuIHlhbmcgYmVsdW0gZGlzZWxlc2Fpa2FuIHRlcmthaXQgZGVuZ2FuIGtvbnRyYWsgeWFuZyB0ZXJqdWFsIGRpIG1hc2EgbGFsdS4gSW5pIGFkYWxhaCBjYWRhbmdhbiBrbGFpbSBhdGF1IGNhZGFuZ2FuIGtlcnVnaWFuOyBpbmkgYWRhbGFoIG1vZGFsIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW55ZWxlc2Fpa2FuIGtsYWltIHRlcmJ1a2EgZGFyaSBwYXBhcmFuIG1hc2EgbGFsdS4gSW5pIGFkYWxhaCBlbGVtZW4geWFuZyBzYW5nYXQgcGVudGluZyBkYWxhbSBuZXJhY2EgcGVydXNhaGFhbiBhc3VyYW5zaSwgbGViaWgga2h1c3VzbnlhIHBhZGEgc2lzaSBrZXdhamliYW4gbmVyYWNhIHBlcnVzYWhhYW4uDQoNCiMjIExvc3MgUmVzZXJ2ZSBEYXRhDQoNCiMjIyBGcm9tIE1pY3JvIHRvIE1hY3JvDQoNClNla2FyYW5nIGthbWkgYWthbiBtZW5qZWxhc2thbiBkYXRhIHlhbmcgdGVyc2VkaWEgdW50dWsgbWVuZ2VzdGltYXNpIGNhZGFuZ2FuIHlhbmcgYmVsdW0gZGlzZWxlc2Fpa2FuIHVudHVrIHBvcnRvZm9saW8ga29udHJhayBhc3VyYW5zaSBQJkMuIFBlcnVzYWhhYW4gYXN1cmFuc2kgYmlhc2FueWEgbWVuY2F0YXQgZGF0YSBtZW5nZW5haSBwZXJrZW1iYW5nYW4ga2xhaW0gaW5kaXZpZHVhbCBzZXBlcnRpIHlhbmcgZGlnYW1iYXJrYW4gZGFsYW0gZ2FyaXMgd2FrdHUgZGkgc2ViZWxhaCBraXJpIEdhbWJhciAxMS41LiBLYW1pIG1lbnllYnV0IGRhdGEgeWFuZyB0ZXJjYXRhdCBwYWRhIHRpbmdrYXQgaW5pIHNlYmFnYWkgZGF0YSBncmFudWxhciBhdGF1IG1pa3JvLWxldmVsLiBCaWFzYW55YSwgc2VvcmFuZyBha3R1YXJpcyBtZW5nZ2FidW5na2FuIGluZm9ybWFzaSB5YW5nIHRlcmNhdGF0IG1lbmdlbmFpIHBlcmtlbWJhbmdhbiBrbGFpbSBpbmRpdmlkdWFsIGRhcmkgc2VsdXJ1aCBrbGFpbSBkYWxhbSBzZWJ1YWggcG9ydG9mb2xpby4gUGVuZ2dhYnVuZ2FuIGluaSBtZW5naGFzaWxrYW4gZGF0YSB5YW5nIHRlcnN0cnVrdHVyIGRhbGFtIGZvcm1hdCBzZWdpdGlnYSBzZXBlcnRpIHlhbmcgZGl0dW5qdWtrYW4gZGkgc2ViZWxhaCBrYW5hbiBHYW1iYXIgMTEuNS4gRGF0YSBzZXBlcnRpIGluaSBkaXNlYnV0IGRhdGEgYWdyZWdhdCBhdGF1IG1ha3JvLWxldmVsIGthcmVuYSBzZXRpYXAgc2VsIGRpIHNlZ2l0aWdhIG1lbmFtcGlsa2FuIGluZm9ybWFzaSB5YW5nIGRpcGVyb2xlaCBkZW5nYW4gbWVuZ2dhYnVuZ2thbiBwZXJrZW1iYW5nYW4gZGFyaSBiZWJlcmFwYSBrbGFpbS4NCg0KVGFtcGlsYW4gc2VnaXRpZ2EgeWFuZyBkaWd1bmFrYW4gZGFsYW0gcGVyZXNlcnZhc2kga2VydWdpYW4gZGlzZWJ1dCBzZWdpdGlnYSBydW4tb2ZmIGF0YXUgc2VnaXRpZ2EgcGVya2VtYmFuZ2FuLiBQYWRhIHN1bWJ1IHZlcnRpa2FsLCBzZWdpdGlnYSB0ZXJzZWJ1dCBtZW5jYW50dW1rYW4gdGFodW4ga2VqYWRpYW4gYXRhdSBrZWNlbGFrYWFuIHlhbmcgZGlpa3V0aSBvbGVoIHNlYnVhaCBwb3J0b2ZvbGlvLiBQZW1iYXlhcmFuIGtlcnVnaWFuIHlhbmcgdGVyY2F0YXQgdW50dWsga2xhaW0gdGVydGVudHUgdGVyaHVidW5nIGRlbmdhbiB0YWh1biBkaW1hbmEga2VqYWRpYW4geWFuZyBkaWFzdXJhbnNpa2FuIHRlcmphZGkuIFN1bWJ1IGhvcml6b250YWwgbWVuZ2luZGlrYXNpa2FuIGtldGVybGFtYmF0YW4gcGVtYmF5YXJhbiBzZWphayB0ZXJqYWRpbnlhIGtlamFkaWFuIHlhbmcgZGlhc3VyYW5zaWthbi4NCg0KIyMjIFJ1bi1vZmYgVHJpYW5nbGVzDQoNCkNvbnRvaCBwZXJ0YW1hIGRhcmkgc2VnaXRpZ2EgcnVuLW9mZiBkZW5nYW4gcGVtYmF5YXJhbiBiZXJ0YW1iYWggZGl0YW1waWxrYW4gZGFsYW0gR2FtYmFyIDExLjYgKGRpYW1iaWwgZGFyaSBXw7x0aHJpY2ggZGFuIE1lcnogKDIwMDgpLCBUYWJlbCAyLjIsIGp1Z2EgZGlndW5ha2FuIGRhbGFtIFfDvHRocmljaCBkYW4gTWVyeiAoMjAxNSksIFRhYmVsIDEuNCkuIFRhaHVuIGtlY2VsYWthYW4gKGF0YXUgdGFodW4ga2VqYWRpYW4pIGRpdGFtcGlsa2FuIHBhZGEgc3VtYnUgdmVydGlrYWwgZGFuIG11bGFpIGRhcmkgdGFodW4gMjAwNCBoaW5nZ2EgMjAxMy4gSW5pIG1lcnVqdWsgcGFkYSB0YWh1biBkaW1hbmEga2VqYWRpYW4geWFuZyBkaWFzdXJhbnNpa2FuIHRlcmphZGkuIFN1bWJ1IGhvcml6b250YWwgbWVuZ2luZGlrYXNpa2FuIGtldGVybGFtYmF0YW4gcGVtYmF5YXJhbiBkYWxhbSB0YWh1biBzZWphayB0ZXJqYWRpbnlhIGtlamFkaWFuIHlhbmcgZGlhc3VyYW5zaWthbi4gS2V0ZXJsYW1iYXRhbiAwIGRpZ3VuYWthbiB1bnR1ayBwZW1iYXlhcmFuIHlhbmcgZGlsYWt1a2FuIHBhZGEgdGFodW4gdGVyamFkaW55YSBrZWNlbGFrYWFuIGF0YXUga2VqYWRpYW4geWFuZyBkaWFzdXJhbnNpa2FuLiBLZXRlcmxhbWJhdGFuIHNhdHUgdGFodW4gZGlndW5ha2FuIHVudHVrIHBlbWJheWFyYW4geWFuZyBkaWxha3VrYW4gcGFkYSB0YWh1biBzZXRlbGFoIHRlcmphZGlueWEga2VjZWxha2Fhbi4NCg0KU2VtZW50YXJhIHNlZ2l0aWdhIHBhZGEgR2FtYmFyIDExLjYgbWVuYW1waWxrYW4gZGF0YSBwZW1iYXlhcmFuIGJlcnRhbWJhaCwgR2FtYmFyIDExLjcgbWVudW5qdWtrYW4gaW5mb3JtYXNpIHlhbmcgc2FtYSBkYWxhbSBmb3JtYXQgYWt1bXVsYXRpZi4gU2VrYXJhbmcsIHNlbCAoMjAwNCwxKSBtZW5hbXBpbGthbiB0b3RhbCBqdW1sYWgga2xhaW0geWFuZyBkaWJheWFya2FuIGhpbmdnYSBrZXRlcmxhbWJhdGFuIHBlbWJheWFyYW4gMSB1bnR1ayBzZW11YSBrbGFpbSB5YW5nIHRlcmphZGkgcGFkYSB0YWh1biAyMDA0LiBPbGVoIGthcmVuYSBpdHUsIGl0dSBtZXJ1cGFrYW4ganVtbGFoIGRhcmkganVtbGFoIHlhbmcgZGliYXlhcmthbiBwYWRhIHRhaHVuIDIwMDQgZGFuIGp1bWxhaCB5YW5nIGRpYmF5YXJrYW4gcGFkYSB0YWh1biAyMDA1IGF0YXMga2VjZWxha2FhbiB5YW5nIHRlcmphZGkgcGFkYSB0YWh1biAyMDA0Lg0KDQpCZXJiYWdhaSBpbmZvcm1hc2kgZGFwYXQgZGlzaW1wYW4gZGFsYW0gc2VnaXRpZ2EgcnVuLW9mZiBzZXBlcnRpIHlhbmcgZGl0dW5qdWtrYW4gZGFsYW0gR2FtYmFyIDExLjYgZGFuIEdhbWJhciAxMS43LiBUZXJnYW50dW5nIHBhZGEgamVuaXMgZGF0YSB5YW5nIGRpc2ltcGFuLCBzZWdpdGlnYSBha2FuIGRpZ3VuYWthbiB1bnR1ayBtZW5nZXN0aW1hc2kganVtbGFoIHlhbmcgYmVyYmVkYS4NCg0KU2ViYWdhaSBjb250b2gsIGRhbGFtIGZvcm1hdCBiZXJ0YW1iYWgsIHNlYnVhaCBzZWwgZGFwYXQgbWVuYW1waWxrYW46DQoNCi0gUGVtYmF5YXJhbiBrbGFpbSwgc2VwZXJ0aSB5YW5nIGRpamVsYXNrYW4gc2ViZWx1bW55YS4NCi0gSnVtbGFoIGtsYWltIHlhbmcgdGVyamFkaSBwYWRhIHRhaHVuIHRlcnRlbnR1IGRhbiBkaWxhcG9ya2FuIGRlbmdhbiBrZXRlcmxhbWJhdGFuIHRlcnRlbnR1LCBrZXRpa2EgdHVqdWFubnlhIGFkYWxhaCB1bnR1ayBtZW5nZXN0aW1hc2kganVtbGFoIGtsYWltIElCTlIuDQotIFBlcnViYWhhbiBqdW1sYWggeWFuZyB0ZXJqYWRpLCBkaSBtYW5hIGp1bWxhaCBrbGFpbSB5YW5nIHRlcmphZGkgYWRhbGFoIGp1bWxhaCBkYXJpIGtsYWltIHlhbmcgZGliYXlhcmthbiBzZWNhcmEgYWt1bXVsYXRpZiBkYW4gZXN0aW1hc2kga2FzdXMuIEVzdGltYXNpIGthc3VzIGFkYWxhaCBwZXJraXJhYW4gYWhsaSBwZW5hbmdhbiBrbGFpbSBtZW5nZW5haSBqdW1sYWggeWFuZyBiZWx1bSBkaXNlbGVzYWlrYW4gZGFsYW0gc3VhdHUga2xhaW0uDQoNCkRhbGFtIGZvcm1hdCBha3VtdWxhdGlmLCBzZWJ1YWggc2VsIGRhcGF0IG1lbmFtcGlsa2FuOg0KDQotIEp1bWxhaCBwZW1iYXlhcmFuIGFrdW11bGF0aWYsIHNlcGVydGkgeWFuZyBkaWplbGFza2FuIHNlYmVsdW1ueWEuDQotIFRvdGFsIGp1bWxhaCBrbGFpbSBkYXJpIHRhaHVuIGtlamFkaWFuLCBkaWxhcG9ya2FuIGhpbmdnYSBrZXRlcmxhbWJhdGFuIHRlcnRlbnR1Lg0KLSBKdW1sYWgga2xhaW0geWFuZyB0ZXJqYWRpLg0KDQpTdW1iZXIgaW5mb3JtYXNpIGxhaW5ueWEganVnYSBtdW5na2luIHRlcnNlZGlhLCBtaXNhbG55YSBrb3ZhcmlhdCAoc2VwZXJ0aSBqZW5pcyBrbGFpbSksIGluZm9ybWFzaSBla3N0ZXJuYWwgKHNlcGVydGkgaW5mbGFzaSwgcGVydWJhaGFuIGRhbGFtIHJlZ3VsYXNpKS4gU2ViYWdpYW4gYmVzYXIgbWV0b2RlIHBlcmVzZXJ2YXNpIGtsYWltIHlhbmcgZGlyYW5jYW5nIHVudHVrIHNlZ2l0aWdhIHJ1bi1vZmYgZGlkYXNhcmthbiBwYWRhIHNhdHUgc3VtYmVyIGluZm9ybWFzaSwgbWVza2lwdW4ga29udHJpYnVzaSB0ZXJiYXJ1IGZva3VzIHBhZGEgcGVuZ2d1bmFhbiBkYXRhIHlhbmcgbGViaWggdGVycGVyaW5jaSB1bnR1ayBwZXJlc2VydmFzaSBrZXJ1Z2lhbi4NCg0KIyMjIExvc3MgUmVzZXJ2ZSBOb3RhdGlvbg0KDQoqUnVuLW9mZiBUcmlhbmdsZXMqDQoNClVudHVrIG1lbWZvcm1hbGthbiB0YW1waWxhbiB5YW5nIGRpdHVuanVra2FuIGRhbGFtIEdhbWJhciAxMS42IGRhbiAxMS43LCBraXRhIGFrYW4gbWVuZ2d1bmFrYW4gbm90YXNpIHNlYmFnYWkgYmVyaWt1dC4NCg0KS2l0YSBtZW5nYXNvc2lhc2lrYW4gaSBkZW5nYW4gdGFodW4ga2VqYWRpYW4gYXRhdSB0YWh1biBrZWNlbGFrYWFuLCB5YWl0dSB0YWh1biBkaSBtYW5hIGtlamFkaWFuIHlhbmcgZGlhc3VyYW5zaWthbiB0ZXJqYWRpLiBEYWxhbSBub3Rhc2kga2l0YSwgdGFodW4ga2VjZWxha2FhbiBwZXJ0YW1hIHlhbmcgZGlwZXJ0aW1iYW5na2FuIGRhbGFtIHBvcnRvZm9saW8gZGl0YW5kYWkgZGVuZ2FuIDEsIGRhbiB0YWh1biBrZWNlbGFrYWFuIHRlcmFraGlyIHlhbmcgcGFsaW5nIGJhcnUgZGl0YW5kYWkgZGVuZ2FuIEkgLg0KDQpTZWxhbmp1dG55YSwgaiBtZXJ1anVrIHBhZGEga2V0ZXJsYW1iYXRhbiBwZW1iYXlhcmFuIGF0YXUgdGFodW4gcGVya2VtYmFuZ2FuLCBkaSBtYW5hIGtldGVybGFtYmF0YW4geWFuZyBzYW1hIGRlbmdhbiAwIHNlc3VhaSBkZW5nYW4gdGFodW4ga2VjZWxha2FhbiBpdHUgc2VuZGlyaS4gR2FtYmFyIDExLjggbWVudW5qdWtrYW4gc2VidWFoIHNlZ2l0aWdhIGRpIG1hbmEganVtbGFoIHRhaHVuIHlhbmcgc2FtYSBkaXBlcnRpbWJhbmdrYW4gYmFpayBwYWRhIHN1bWJ1IHZlcnRpa2FsIG1hdXB1biBzdW1idSBob3Jpem9udGFsLCBvbGVoIGthcmVuYSBpdHUgaiBiZXJqYWxhbiBkYXJpIDAgaGluZ2dhICRKPUniiJIxJCAuDQoNClZhcmlhYmVsIGFjYWsgJFhfe2lqfSQgbWVudW5qdWtrYW4ga2xhaW0gYmVydGFtYmFoIHlhbmcgZGliYXlhcmthbiBkYWxhbSBwZXJpb2RlIHBlcmtlbWJhbmdhbiAkaiQgdW50dWsga2xhaW0gZGFyaSB0YWh1biBrZWNlbGFrYWFuICRpJCAuIERlbmdhbiBkZW1pa2lhbiwgJFhfe2lqfSQgYWRhbGFoIHRvdGFsIGp1bWxhaCB5YW5nIGRpYmF5YXJrYW4gcGFkYSB0YWh1biBwZXJrZW1iYW5nYW4gJGokIHVudHVrIHNlbXVhIGtsYWltIHlhbmcgdGVyamFkaSBwYWRhIHRhaHVuIGtlamFkaWFuICRpJCAuIFBlbWJheWFyYW4gaW5pIHNlYmVuYXJueWEgZGlsYWt1a2FuIGRhbGFtIHRhaHVuIGFrdW50YW5zaSBhdGF1IHRhaHVuIGthbGVuZGVyICRpK2okIC4gRGFsYW0gcGVyc3Bla3RpZiBha3VtdWxhdGlmLCAkQ197aWp9JCBhZGFsYWgganVtbGFoIGt1bXVsYXRpZiB5YW5nIGRpYmF5YXJrYW4gaGluZ2dhIChkYW4gdGVybWFzdWspIHRhaHVuIHBlcmtlbWJhbmdhbiAkaiQgdW50dWsga2VjZWxha2FhbiB5YW5nIHRlcmphZGkgcGFkYSB0YWh1biAkaSQgLiBQYWRhIGFraGlybnlhLCBqdW1sYWggdG90YWwgICRDX3tpan0kIGRpYmF5YXJrYW4gcGFkYSB0YWh1biBwZXJrZW1iYW5nYW4gYWtoaXIgJEokIHVudHVrIGtsYWltIHlhbmcgdGVyamFkaSBwYWRhIHRhaHVuIGtlY2VsYWthYW4gJGkkIC4gRGFsYW0gYmFiIGluaSwgd2FrdHUgZGl1bmdrYXBrYW4gZGFsYW0gdGFodW4sIG1lc2tpcHVuIHVuaXQgd2FrdHUgbGFpbm55YSBqdWdhIGRhcGF0IGRpZ3VuYWthbiwgbWlzYWxueWEgcGVyaW9kZSBlbmFtIGJ1bGFuIGF0YXUga3VhcnRhbC4NCg0KKlRoZSBMb3NzIFJlc2VydmUqDQoNClBhZGEgc2FhdCBldmFsdWFzaSAkXHRhdSQgLCBkYXRhIHBhZGEgc2VnaXRpZ2EgYXRhcyB0ZWxhaCBkaWFtYXRpLCBzZWRhbmdrYW4gc2VnaXRpZ2EgYmF3YWggaGFydXMgZGlwcmVkaWtzaS4gRGkgc2luaSwgc2FhdCBldmFsdWFzaSBhZGFsYWggYWtoaXIgdGFodW4ga2VjZWxha2FhbiAkSSQgLCB5YW5nIGJlcmFydGkgYmFod2Egc2VsICQoaSxqKSQgZGVuZ2FuICRpK2ogXGxlcSBJJCBkaWFtYXRpLCBkYW4gc2VsICQoaSxqKSQgZGVuZ2FuICRpK2ogPiBJJCB0ZXJtYXN1ayBtYXNhIGRlcGFuIGRhbiBoYXJ1cyBkaXByZWRpa3NpLiBPbGVoIGthcmVuYSBpdHUsIHVudHVrIHNlZ2l0aWdhIHJ1bi1vZmYga3VtdWxhdGlmLCB0dWp1YW4gbWV0b2RlIHBlcmVzZXJ2YXNpIGtlcnVnaWFuIGFkYWxhaCBtZW1wcmVkaWtzaSAkQ19pLEniiJIxJCAsIGp1bWxhaCBrbGFpbSBha2hpciB1bnR1ayB0YWh1biBrZWphZGlhbiAkaSQgLCB5YW5nIHNlc3VhaSBkZW5nYW4gcGVyaW9kZSBwZXJrZW1iYW5nYW4gYWtoaXIgJEniiJIxJCBkYWxhbSBHYW1iYXIgMTEuNy4gS2FtaSBtZW5nYXN1bXNpa2FuIGJhaHdhIC0gc2V0ZWxhaCBwZXJpb2RlIGluaSB0aWRhayBha2FuIGFkYSBwZW1iYXlhcmFuIGxlYmloIGxhbmp1dCwgbWVza2lwdW4gYXN1bXNpIGluaSBiaXNhIGRpa2VuZHVya2FuLg0KDQpLYXJlbmEgJENfe2ksSS0xfSQgYmVyc2lmYXQga3VtdWxhdGlmLCBpdHUgbWVuY2FrdXAgYmFnaWFuIHlhbmcgZGlhbWF0aSBzZXJ0YSBiYWdpYW4geWFuZyBoYXJ1cyBkaXByZWRpa3NpLiBPbGVoIGthcmVuYSBpdHUsIGtld2FqaWJhbiB5YW5nIGJlbHVtIGRpc2VsZXNhaWthbiBhdGF1IGNhZGFuZ2FuIGtlcnVnaWFuIHVudHVrIHRhaHVuIGtlY2VsYWthYW4gJGkkIGFkYWxhaA0KDQokJFxiZWdpbntlcW5hcnJheSp9DQpcbWF0aGNhbHtSfV57KDApfV97aX0gPSBcc3VtX3tcZWxsPUktaSsxfV57SS0xfSBYX3tpXGVsbH0gPSBDX3tpLEl9LUNfe2ksSS1pfS4NClxlbmR7ZXFuYXJyYXkqfSQkDQoNCkthbWkgbWVueWF0YWthbiBjYWRhbmdhbiBiYWlrIHNlYmFnYWkganVtbGFoIGRhdGEgYmVydGFtYmFoLCAkWF97aVxlbGx9JCAsIG1hdXB1biBzZWJhZ2FpIHNlbGlzaWggYW50YXJhIGFuZ2thIGt1bXVsYXRpZi4gRGFsYW0ga2FzdXMgdGVyYWtoaXIsIGp1bWxhaCB5YW5nIGJlbHVtIGRpc2VsZXNhaWthbiBhZGFsYWgganVtbGFoIGt1bXVsYXRpZiBha2hpciAkQ197aSxJfSQgZGlrdXJhbmdpIGRlbmdhbiBqdW1sYWgga3VtdWxhdGlmIHlhbmcgZGlhbWF0aSBwYWxpbmcgYmFydSAkQ197aSxJLWl9JCAuDQoNCk1lbmdpa3V0aSBXw7x0aHJpY2ggZGFuIE1lcnogKDIwMTUpLCBub3Rhc2kgJFxtYXRoY2Fse1J9XnsoMCl9X3tpfSQgbWVuZ2FjdSBwYWRhIGNhZGFuZ2FuIHVudHVrIHRhaHVuIGtlamFkaWFuICRpJCBkaSBtYW5hICRpPTEsXGxkb3RzLEkkIC4gU3VwZXJza3JpcCAoMCkgbWVuZ2FjdSBwYWRhIGV2YWx1YXNpIGNhZGFuZ2FuIHBhZGEgc2FhdCBpbmksIGthdGFrYW5sYWggJFx0YXUgPSAwJCAuIEthbWkgbWVtYWhhbWkgJFx0YXUgPSAwJCAgcGFkYSBha2hpciB0YWh1biBrZWphZGlhbiAkSSQgLCB0YWh1biBrYWxlbmRlciBwYWxpbmcgYmFydSBkaSBtYW5hIGRhdGEgZGlhbWF0aSBkYW4gdGVyZGFmdGFyLg0KDQojIyMgUiBDb2RlIHRvIFN1bW1hcml6ZSBMb3NzIFJlc2VydmUgRGF0YQ0KDQpLYW1pIG1lbmdndW5ha2FuIHBha2V0IGBDaGFpbkxhZGRlcmAgKEdlc21hbm4gZXQgYWwuIDIwMTkpIHVudHVrIG1lbmdpbXBvciBzZWdpdGlnYSBydW4tb2ZmIGRpIFIgZGFuIHVudHVrIG1lbmplbGFqYWhpIHRyZW4geWFuZyBhZGEgZGFsYW0gc2VnaXRpZ2EgdGVyc2VidXQuIFZpZ25ldHRlIHBha2V0IGluaSBkZW5nYW4gYmFpayBtZW5kb2t1bWVudGFzaWthbiBmdW5nc2ktZnVuZ3NpIHVudHVrIGJla2VyamEgZGVuZ2FuIGRhdGEgc2VnaXRpZ2EuIFBlcnRhbWEsIGthbWkgbWVuamVsYWphaGkgZHVhIGNhcmEgdW50dWsgbWVuZ2ltcG9yIHNlYnVhaCBzZWdpdGlnYS4NCg0KKkxvbmcgRm9ybWF0IERhdGEqDQoNCkRhdGFzZXQgYHRyaWFuZ2xlX1dfTV9sb25nLnR4dGAgbWVueWltcGFuIHNlZ2l0aWdhIHJ1bi1vZmYga3VtdWxhdGlmIGRhcmkgV8O8dGhyaWNoIGRhbiBNZXJ6ICgyMDA4KSAoVGFiZWwgMi4yKSBkYWxhbSBmb3JtYXQgcGFuamFuZy4gQXJ0aW55YTogc2V0aWFwIHNlbCBkYWxhbSBzZWdpdGlnYSBtZXJ1cGFrYW4gc2F0dSBiYXJpcyBkYWxhbSBkYXRhc2V0IGluaSwgZGFuIHRpZ2EgZml0dXIgZGlzaW1wYW46IHVrdXJhbiBwZW1iYXlhcmFuIChrdW11bGF0aWYsIGRhbGFtIGNvbnRvaCBpbmkpLCB0YWh1biBrZWphZGlhbiAoICRpJCApIGRhbiBwZW51bmRhYW4gcGVtYmF5YXJhbiAoICRqJCApLiBLYW1pIG1lbmdpbXBvciBmaWxlIC50eHQgdGVyc2VidXQgZGFuIG1lbnlpbXBhbiBkYXRhIGZyYW1lIGhhc2lsbnlhIHNlYmFnYWkgYG15X3RyaWFuZ2xlX2xvbmdgOg0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KbXlfdHJpYW5nbGVfbG9uZyA8LSByZWFkLnRhYmxlKCJEYXRhL3RyaWFuZ2xlX1dfTV9sb25nLnR4dCIsIGhlYWRlciA9IFRSVUUpDQpoZWFkKG15X3RyaWFuZ2xlX2xvbmcpDQpgYGANCg0KS2FtaSBtZW5nZ3VuYWthbiBmdW5nc2kgYXMudHJpYW5nbGUgZGFyaSBwYWtldCBDaGFpbkxhZGRlciB1bnR1ayBtZW5ndWJhaCBkYXRhIGZyYW1lIG1lbmphZGkgdGFtcGlsYW4gc2VnaXRpZ2EuIE9iamVrIGhhc2lsbnlhLCBgbXlfdHJpYW5nbGVgLGAgc2VrYXJhbmcgbWVydXBha2FuIHRpcGUgc2VnaXRpZ2EuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpteV90cmlhbmdsZSA8LSBhcy50cmlhbmdsZShteV90cmlhbmdsZV9sb25nLCBvcmlnaW4gPSAib3JpZ2luIiwgZGV2ID0gImRldiIsIHZhbHVlID0gInBheW1lbnQiKQ0Kc3RyKG15X3RyaWFuZ2xlKQ0KYGBgDQoNCkthbWkgbWVuYW1waWxrYW4gc2VnaXRpZ2EgZGFuIG1lbmdlbmFsaSBhbmdrYS1hbmdrYSAoZGFsYW0gcmlidWFuKSBkYXJpIEdhbWJhciAxMS43LiBTZWwtc2VsIGRpIHNlZ2l0aWdhIGJhZ2lhbiBiYXdhaCBkaXRhbmRhaSBzZWJhZ2FpIHRpZGFrIHRlcnNlZGlhLCBOQS4NCg0KYGBge3IgZXZhbD1GQUxTRX0NCnJvdW5kKG15X3RyaWFuZ2xlLzEwMDAsIGRpZ2l0cyA9IDApDQpgYGANCg0KKlRyaWFuZ3VsYXIgRm9ybWF0IERhdGEqDQoNClNlYmFnYWkgYWx0ZXJuYXRpZiwgc2VnaXRpZ2EgZGFwYXQgZGlzaW1wYW4gZGFsYW0gZmlsZSAuY3N2IGRlbmdhbiB0YWh1biBrZWphZGlhbiBkaSBiYXJpcyBkYW4gdGFodW4gcGVya2VtYmFuZ2FuIGRpIHNlbC1zZWwga29sb20uIEthbWkgbWVuZ2ltcG9yIGZpbGUgLmNzdiBpbmkgZGFuIG1lbmd1YmFoIGBteV90cmlhbmdsZV9jc3ZgIGhhc2lsbnlhIG1lbmphZGkgbWF0cmlrcy4NCg0KYGBge3IgZXZhbD1GQUxTRX0NCm15X3RyaWFuZ2xlX2NzdiA8LSByZWFkLmNzdjIoIkRhdGEvdHJpYW5nbGVfV19NLmNzdiIsIGhlYWRlciA9IEZBTFNFKQ0KbXlfdHJpYW5nbGVfbWF0cml4IDwtIGFzLm1hdHJpeChteV90cmlhbmdsZV9jc3YpDQpkaW1uYW1lcyhteV90cmlhbmdsZV9tYXRyaXgpIDwtIGxpc3Qob3JpZ2luID0gMjAwNCA6IDIwMTMsIGRldiA9IDA6KG5jb2wobXlfdHJpYW5nbGVfbWF0cml4KS0xKSkNCmBgYA0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KbXlfdHJpYW5nbGUgPC0gYXMudHJpYW5nbGUobXlfdHJpYW5nbGVfbWF0cml4KSANCnJvdW5kKG15X3RyaWFuZ2xlLzEwMDAsIGRpZ2l0cyA9IDApDQpgYGANCg0KKkZyb20gQ3VtdWxhdGl2ZSB0byBJbmNyZW1lbnRhbCwgYW5kIHZpY2UgdmVyc2EqDQoNCkZ1bmdzaSBSIGBjdW0yaW5jcigpYCBkYW4gYGluY3IyY3VtKClgIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIGJlcmFsaWggZGVuZ2FuIG11ZGFoIGFudGFyYSB0YW1waWxhbiBrdW11bGF0aWYgZGFuIHRhbXBpbGFuIGluY3JlbWVudGFsLCBzZXJ0YSBzZWJhbGlrbnlhLg0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KcGxvdChteV90cmlhbmdsZSkNCmBgYA0KDQpTZWJhZ2FpIGFsdGVybmF0aWYsIGFyZ3VtZW4gYGxhdHRpY2VgIG1lbmNpcHRha2FuIHNhdHUgcGxvdCBwZXIgdGFodW4ga2VqYWRpYW4uDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpwbG90KG15X3RyaWFuZ2xlLCBsYXR0aWNlID0gVFJVRSkNCmBgYA0KDQpEYXJpcGFkYSBtZW1wbG90IHNlZ2l0aWdhIGt1bXVsYXRpZiB5YW5nIGRpc2ltcGFuIGRhbGFtIGBteV90cmlhbmdsZWAsIGtpdGEgZGFwYXQgbWVtcGxvdCBzZWdpdGlnYSBydW4tb2ZmIGluY3JlbWVudGFsLg0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KcGxvdChteV90cmlhbmdsZV9pbmNyKQ0KYGBgDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpwbG90KG15X3RyaWFuZ2xlX2luY3IsIGxhdHRpY2UgPSBUUlVFKQ0KYGBgDQoNCiMjIFRoZSBDaGFpbi1MYWRkZXIgTWV0aG9kDQoNCk1ldG9kZSB5YW5nIHBhbGluZyBiYW55YWsgZGlndW5ha2FuIHVudHVrIG1lbXBlcmtpcmFrYW4gY2FkYW5nYW4ga2VydWdpYW4geWFuZyBiZWx1bSBkaXNlbGVzYWlrYW4gYWRhbGFoIG1ldG9kZSBjaGFpbi1sYWRkZXIuIEFzYWwtdXN1bCBtZXRvZGUgaW5pIHRpZGFrIGplbGFzIHRldGFwaSB0ZWxhaCB0ZXJidWt0aSBlZmVrdGlmIGRhbGFtIGFwbGlrYXNpIHByYWt0aXMgcGFkYSBhd2FsIHRhaHVuIDE5NzAtYW4sIFRheWxvciAoMTk4NikuIFNlcGVydGkgeWFuZyBha2FuIGtpdGEgbGloYXQsIG5hbWEgaW5pIG1lcnVqdWsgcGFkYSBwZW5nZ2FidW5nYW4gc2VyYW5na2FpYW4gZmFrdG9yIHBlcmtlbWJhbmdhbiAoZGFyaSB0YWh1biBrZSB0YWh1bikgbWVuamFkaSB0YW5nZ2EgZmFrdG9yOyBrZXJ1Z2lhbiB5YW5nIGJlbHVtIG1hdGFuZyBuYWlrIG1lbnVqdSBrZWRld2FzYWFuIGtldGlrYSBkaWthbGlrYW4gZGVuZ2FuIHJhbmdrYWlhbiByYXNpbyBpbmksIG1ha2EgbXVuY3VsbGFoIGRlc2tyaXB0b3IgeWFuZyBzZXN1YWksIHlhaXR1IG1ldG9kZSBjaGFpbi1sYWRkZXIuIEtpdGEgYWthbiBtZW11bGFpIGRlbmdhbiBtZW5qZWxhamFoaSBtZXRvZGUgY2hhaW4tbGFkZGVyIGRhbGFtIHZlcnNpIGRldGVybWluaXN0aWsgYXRhdSBhbGdvcml0bWEsIHRhbnBhIG1lbWJ1YXQgYXN1bXNpIHN0b2thc3RpayBhcGEgcHVuLiBLZW11ZGlhbiBraXRhIGFrYW4gbWVuZ2dhbWJhcmthbiBtb2RlbCBjaGFpbi1sYWRkZXIgZGlzdHJpYnVzaSBiZWJhcyByaXNpa28gZGFyaSBNYWNrLg0KDQojIyMgVGhlIERldGVybWluaXN0aWMgQ2hhaW4tTGFkZGVyDQoNCk1ldG9kZSBjaGFpbi1sYWRkZXIgZGV0ZXJtaW5pc3RpayBiZXJmb2t1cyBwYWRhIHJ1bi1vZmYgdHJpYW5nbGUgZGFsYW0gYmVudHVrIGt1bXVsYXRpZi4gSW5nYXRsYWggYmFod2Egc2VsICQoaSxqKSQgZGFsYW0gc2VnaXRpZ2EgaW5pIG1lbmFtcGlsa2FuIGp1bWxhaCBrdW11bGF0aWYgeWFuZyBkaWJheWFya2FuIGhpbmdnYSBwZXJpb2RlIHBlbmdlbWJhbmdhbiAkaiQgdW50dWsga2xhaW0geWFuZyB0ZXJqYWRpIHBhZGEgdGFodW4gJGkkLiBNZXRvZGUgY2hhaW4tbGFkZGVyIG1lbmdhc3Vtc2lrYW4gYmFod2EgZmFrdG9yIHBlbmdlbWJhbmdhbiAkZl9qJCAoanVnYSBkaXNlYnV0IGZha3RvciB1c2lhLWtlLXVzaWEsIHJhc2lvIHRhdXRhbiwgYXRhdSBmYWt0b3IgY2hhaW4tbGFkZGVyKSBhZGEgc2VoaW5nZ2E6DQoNCiQkQ197aSxqKzF9ID0gZl9qIFx0aW1lcyBDX3tpLGp9LiQkDQoNCk1ha2EsIGZha3RvciBwZW5nZW1iYW5nYW4gbWVtYmVyaXRhaHUgQW5kYSBiYWdhaW1hbmEganVtbGFoIGt1bXVsYXRpZiBkYWxhbSB0YWh1biBwZW5nZW1iYW5nYW4gJGokIHR1bWJ1aCBtZW5qYWRpIGp1bWxhaCBrdW11bGF0aWYgZGFsYW0gdGFodW4gJGorMSQuIEthbWkgbWVueW9yb3RpIGp1bWxhaCBrdW11bGF0aWYgZGFsYW0gcGVyaW9kZSAwIGRlbmdhbiB3YXJuYSBiaXJ1IGRhbiBqdW1sYWgga3VtdWxhdGlmIGRhbGFtIHBlcmlvZGUgMSBkZW5nYW4gd2FybmEgbWVyYWggcGFkYSBHYW1iYXIgMTEuMTAgeWFuZyBkaWFtYmlsIGRhcmkgV8O8dGhyaWNoIGRhbiBNZXJ6ICgyMDA4KSAoVGFiZWwgMi4yLCBqdWdhIGRpZ3VuYWthbiBkYWxhbSBXw7x0aHJpY2ggZGFuIE1lcnogKDIwMTUpLCBUYWJlbCAxLjQpLg0KDQpNZXRvZGUgY2hhaW4tbGFkZGVyIGtlbXVkaWFuIG1lbnlhamlrYW4gcmVzZXAgeWFuZyBpbnR1aXRpZiB1bnR1ayBtZW1wZXJraXJha2FuIGF0YXUgbWVuZ2hpdHVuZyBmYWt0b3IgcGVuZ2VtYmFuZ2FuIGluaS4gS2FyZW5hIGZha3RvciBwZW5nZW1iYW5nYW4gcGVydGFtYSAkZl8wJCBtZW5nZ2FtYmFya2FuIHBlcmtlbWJhbmdhbiBqdW1sYWgga2xhaW0ga3VtdWxhdGlmIGRhcmkgcGVyaW9kZSBwZW5nZW1iYW5nYW4gMCBoaW5nZ2EgcGVyaW9kZSBwZW5nZW1iYW5nYW4gMSwgZmFrdG9yIGluaSBkYXBhdCBkaWVzdGltYXNpIHNlYmFnYWkgcmFzaW8gZGFyaSBqdW1sYWgga3VtdWxhdGlmIHlhbmcgZGl0YW5kYWkgZGVuZ2FuIHdhcm5hIG1lcmFoIGRhbiBqdW1sYWgga3VtdWxhdGlmIHlhbmcgZGl0YW5kYWkgZGVuZ2FuIHdhcm5hIGJpcnUsIHNlcGVydGkgeWFuZyB0ZXJsaWhhdCBwYWRhIEdhbWJhciAxMS4xMC4gRGVuZ2FuIGRlbWlraWFuLCBraXRhIG1lbXBlcm9sZWggcGVya2lyYWFuIGJlcmlrdXQgdW50dWsgZmFrdG9yIHBlbmdlbWJhbmdhbiBwZXJ0YW1hICRcaGF0e2Z9XzBee0NMfSQsIGRlbmdhbiBvYnNlcnZhc2kgJFxtYXRoY2Fse0R9X0kkLg0KDQokJFxoYXR7Zn1ee0NMfV97XGNvbG9ye21hZ2VudGF9ezB9fSA9IFxmcmFje1xzdW1fe2k9MX1eezEwLVxjb2xvcnttYWdlbnRhfXswfS0xfSBcY29sb3J7cmVkfXtDX3tpLFxjb2xvcnttYWdlbnRhfXswfSsxfX19e1xzdW1fe2k9MX1eezEwLVxjb2xvcnttYWdlbnRhfXswfS0xfSBcY29sb3J7Ymx1ZX17Q197aVxjb2xvcnttYWdlbnRhfXswfX19fT0gMS40OTI1LiQkDQoNClBlcmhhdGlrYW4gYmFod2EgaW5kZWtzIGkgeWFuZyBkaWd1bmFrYW4gZGFsYW0gcGVuanVtbGFoYW4gcGFkYSBwZW1iaWxhbmcgZGFuIHBlbnllYnV0IGJlcmphbGFuIGRhcmkgcGVyaW9kZSBrZWphZGlhbiBwZXJ0YW1hICgxKSBoaW5nZ2EgcGVyaW9kZSBrZWphZGlhbiB0ZXJha2hpciAoOSkgZGkgbWFuYSBrZWR1YSBwZXJpb2RlIHBlbmdlbWJhbmdhbiAwIGRhbiAxIGRpYW1hdGkuIFNlYmFnYWkgaGFzaWxueWEsIGZha3RvciBwZW5nZW1iYW5nYW4gaW5pIG1lbmd1a3VyIGJhZ2FpbWFuYSBkYXRhIHlhbmcgZGl0YW5kYWkgZGVuZ2FuIHdhcm5hIGJpcnUgYmVya2VtYmFuZyBtZW5qYWRpIGRhdGEgeWFuZyBkaXRhbmRhaSBkZW5nYW4gd2FybmEgbWVyYWgsIGRlbmdhbiByYXRhLXJhdGEgZGkgc2VsdXJ1aCBwZXJpb2RlIGtlamFkaWFuIGRpIG1hbmEga2VkdWEgcGVyaW9kZSBkaWFtYXRpLiBNZXRvZGUgY2hhaW4tbGFkZGVyIGtlbXVkaWFuIG1lbmdndW5ha2FuIGVzdGltYXNpIGZha3RvciBwZW5nZW1iYW5nYW4gaW5pIHVudHVrIG1lbXByZWRpa3NpIGp1bWxhaCBrdW11bGF0aWYgJENfezEwLDF9JCAoeWFpdHUganVtbGFoIGt1bXVsYXRpZiB5YW5nIGRpYmF5YXJrYW4gaGluZ2dhIGRhbiB0ZXJtYXN1ayB0YWh1biBwZW5nZW1iYW5nYW4gMSB1bnR1ayBrZWNlbGFrYWFuIHlhbmcgdGVyamFkaSBwYWRhIHRhaHVuIGtlLTEwKS4gUHJlZGlrc2kgaW5pIGRpcGVyb2xlaCBkZW5nYW4gbWVuZ2FsaWthbiBqdW1sYWgga2xhaW0ga3VtdWxhdGlmIHRlcmFraGlyIHlhbmcgZGlhbWF0aSB1bnR1ayBwZXJpb2RlIGtlamFkaWFuIDEwICh5YWl0dSAkQ197MTAsMH0kIGRlbmdhbiBwZXJpb2RlIHBlbmdlbWJhbmdhbiAwKSBkZW5nYW4gZXN0aW1hc2kgZmFrdG9yIHBlbmdlbWJhbmdhbiAkXGhhdHtmfV57Q0x9XzAkLg0KDQokJFxoYXR7Q31fezEwLCAxfSA9IENfezEwLDB9IFxjZG90IFxoYXR7Zn1ee0NMfV8wID0gNSw2NzZcY2RvdCAxLjQ5MjU9OCw0NzEuJCQNCg0KTWVsYW5qdXRrYW4gcGVtaWtpcmFuIGluaSwgZmFrdG9yIHBlbmdlbWJhbmdhbiBiZXJpa3V0bnlhLCAkZl8xJCwgZGFwYXQgZGllc3RpbWFzaS4gS2FyZW5hICRmXzEkIG1lbmNlcm1pbmthbiBwZXJrZW1iYW5nYW4gZGFyaSBwZXJpb2RlIDEga2UgcGVyaW9kZSAyLCBkYXBhdCBkaWVzdGltYXNpIHNlYmFnYWkgcmFzaW8gYW5na2EtYW5na2EgeWFuZyBkaXRhbmRhaSBkZW5nYW4gd2FybmEgbWVyYWggZGFuIGJpcnUgc2VwZXJ0aSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIEdhbWJhciAxMS4xMS4NCg0KTm90YXNpIG1hdGVtYXRpcyB1bnR1ayBwZXJraXJhYW4gJFxoYXR7Zn1fMV57Q0x9JCBkYXJpIGZha3RvciBwZW5nZW1iYW5nYW4gYmVyaWt1dG55YSAkZl8xJCwgZGVuZ2FuIG1lbmdpbmdhdCBvYnNlcnZhc2kgREksIGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNCiQkXGhhdHtmfV57Q0x9X3tcY29sb3J7bWFnZW50YX17MX19ID0gXGZyYWN7XHN1bV97aT0xfV57MTAtXGNvbG9ye21hZ2VudGF9ezF9LTF9IFxjb2xvcntyZWR9e0Nfe2ksXGNvbG9ye21hZ2VudGF9ezF9KzF9fX17XHN1bV97aT0xfV57MTAtXGNvbG9ye21hZ2VudGF9ezF9LTF9IFxjb2xvcntibHVlfXtDX3tpXGNvbG9ye21hZ2VudGF9ezF9fX19PTEuMDc3OC4kJA0KDQpEZW5nYW4gZGVtaWtpYW4sIGZha3RvciBpbmkgbWVuZ3VrdXIgcGVydHVtYnVoYW4ganVtbGFoIHlhbmcgZGliYXlhcmthbiBzZWNhcmEga3VtdWxhdGlmIHBhZGEgcGVyaW9kZSBwZW5nZW1iYW5nYW4gMSBtZW5qYWRpIHBlcmlvZGUgMiwgZGloaXR1bmcgcmF0YS1yYXRhIHVudHVrIHNlbXVhIHBlcmlvZGUga2VqYWRpYW4gZGkgbWFuYSBrZWR1YSBwZXJpb2RlIHRlcnNlYnV0IGRpYW1hdGkuIEluZGVrcyBpIHNla2FyYW5nIGJlcmphbGFuIGRhcmkgcGVyaW9kZSAxIGhpbmdnYSA4LCBrYXJlbmEgaW5pIGFkYWxhaCBwZXJpb2RlIGtlamFkaWFuIGRpIG1hbmEga2VkdWEgcGVyaW9kZSBwZW5nZW1iYW5nYW4gMSBkYW4gMiBkaWFtYXRpLiBQZXJraXJhYW4gdW50dWsgZmFrdG9yIHBlbmdlbWJhbmdhbiBrZWR1YSBpbmkga2VtdWRpYW4gZGlndW5ha2FuIHVudHVrIG1lbXByZWRpa3NpIHNlbC1zZWwgeWFuZyBoaWxhbmcgZGFuIHRpZGFrIHRlcmFtYXRpIHBhZGEgcGVyaW9kZSBwZW5nZW1iYW5nYW4gMjoNCg0KJCRcYmVnaW57YXJyYXl9e3JsfQ0KXGhhdHtDfV97MTAsMn0gJj0gQ197MTAsMH0gXGNkb3QgXGhhdHtmfV57Q0x9XzAgXGNkb3QgXGhhdHtmfV8xXntDTH0gPSBcaGF0e0N9X3sxMCwxfSBcY2RvdCBcaGF0e2Z9XzFee0NMfSA9IDgsNDcxIFxjZG90IDEuMDc3OCA9IDksMTMwIFxcDQpcaGF0e0N9X3s5LDJ9ICAmPSBDX3s5LDF9IFxjZG90IFxoYXR7Zn1ee0NMfV8xID0gNyw2NDkgXGNkb3QgMS4wNzc4ID0gOCwyNDQuDQpcZW5ke2FycmF5fSQkDQoNClBlcmx1IGRpcGVyaGF0aWthbiBiYWh3YSB1bnR1ayAgJFxoYXR7Q31fezEwLDJ9JCwgQW5kYSBzZWJlbmFybnlhIG1lbmdndW5ha2FuIHBlcmtpcmFhbiAgJFxoYXR7Q31fezEwLDF9JCBkYW4gbWVuZ2FsaWthbm55YSBkZW5nYW4gcGVya2lyYWFuIGZha3RvciBwZW5nZW1iYW5nYW4gICRcaGF0e2Z9XzFee0NMfSQuDQoNCktpdGEgbWVsYW5qdXRrYW5ueWEgc2VjYXJhIGFuYWxvZyBkYW4gbWVuZGFwYXRrYW4gcHJlZGlrc2kgYmVyaWt1dCwgZGljZXRhayBtaXJpbmcgcGFkYSBHYW1iYXIgMTEuMTI6DQoNClBhZGEgYWtoaXJueWEsIGtpdGEgcGVybHUgbWVtcGVya2lyYWthbiBuaWxhaS1uaWxhaSBwYWRhIGtvbG9tIHRlcmFraGlyLiBGYWt0b3IgcGVya2VtYmFuZ2FuIHRlcmFraGlyLCAgZjggLCBtZW5ndWt1ciBwZXJ0dW1idWhhbiBkYXJpIHBlcmlvZGUgcGVya2VtYmFuZ2FuIDgga2UgcGVyaW9kZSBwZXJrZW1iYW5nYW4gOSBkYWxhbSBzZWdpdGlnYS4gS2FyZW5hIGhhbnlhIGJhcmlzIHBlcnRhbWEgZGFsYW0gc2VnaXRpZ2EgeWFuZyBtZW1pbGlraSBrZWR1YSBzZWwgeWFuZyBkaWFtYXRpLCBmYWt0b3IgdGVyYWtoaXIgaW5pIGRpcGVya2lyYWthbiBzZWJhZ2FpIHJhc2lvIGFudGFyYSBuaWxhaSB5YW5nIGJlcndhcm5hIG1lcmFoIGRhbiBuaWxhaSB5YW5nIGJlcndhcm5hIGJpcnUgcGFkYSBHYW1iYXIgMTEuMTMuDQoNCkRpYmVyaWthbiBvYnNlcnZhc2kgJFxtYXRoY2Fse0R9X0kkLCBwZXJraXJhYW4gZmFrdG9yIGluaSAkXGhhdHtmfV57Q0x9X3s4fSQgYWRhbGFoIHNhbWEgZGVuZ2FuOg0KDQokJFxoYXR7Zn1ee0NMfV97XGNvbG9ye21hZ2VudGF9ezh9fSA9IFxmcmFje1xzdW1fe2k9MX1eezEwLVxjb2xvcnttYWdlbnRhfXs4fS0xfSBcY29sb3J7cmVkfXtDX3tpLFxjb2xvcnttYWdlbnRhfXs4fSsxfX19e1xzdW1fe2k9MX1eezEwLVxjb2xvcnttYWdlbnRhfXs4fS0xfSBcY29sb3J7Ymx1ZX17Q197aVxjb2xvcnttYWdlbnRhfXs4fX19fT0xLjAwMS4kJA0KDQpCaWFzYW55YSwgZmFrdG9yIHBlcmtlbWJhbmdhbiB0ZXJha2hpciBpbmkgbWVuZGVrYXRpIDEgZGFuIG9sZWgga2FyZW5hIGl0dSBhcnVzIGthcyB5YW5nIGRpYmF5YXJrYW4gZGFsYW0gcGVyaW9kZSBwZW5nZW1iYW5nYW4gdGVyYWtoaXIgcmVsYXRpZiBrZWNpbC4gRGVuZ2FuIG1lbmdndW5ha2FuIHBlcmtpcmFhbiBmYWt0b3IgcGVuZ2VtYmFuZ2FuIGluaSwga2l0YSBzZWthcmFuZyBkYXBhdCBtZW1wZXJraXJha2FuIGp1bWxhaCBrbGFpbSBrdW11bGF0aWYgeWFuZyB0ZXJzaXNhIGRhbGFtIGtvbG9tIGRlbmdhbiBtZW5nYWxpa2FuIG5pbGFpLW5pbGFpIHVudHVrIHRhaHVuIHBlbmdlbWJhbmdhbiA4IGRlbmdhbiBmYWt0b3IgaW5pLg0KDQpOb3Rhc2kgbWF0ZW1hdGlrYSB1bXVtIHVudHVrIHByZWRpa3NpIHRhbmdnYSByYW50YWkgdW50dWsgc2VnaXRpZ2EgYmF3YWggJCggaStqPkkgKSQgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KJCRcYmVnaW57YXJyYXl9e3JsfQ0KXGhhdHtDfV97aWp9XntDTH0gJj0gQ197aSxJLWl9IFxjZG90IFxwcm9kX3tsPUktaX1ee2otMX0gXGhhdHtmfV9sXntDTH0gXFwNClxoYXR7Zn1fal57Q0x9ICY9IFxmcmFje1xzdW1fe2k9MX1ee0ktai0xfSBDX3tpLGorMX19e1xzdW1fe2k9MX1ee0ktai0xfSBDX3tpan19LA0KXGVuZHthcnJheX0kJA0KDQpkaSBtYW5hICRDX3tpLEktaX0kIGFkYWxhaCBwYWRhIGRpYWdvbmFsIHRlcmFraGlyIHlhbmcgZGlhbWF0aS4gSmVsYXMgYmFod2EgYXN1bXNpIHBlbnRpbmcgZGFyaSBtZXRvZGUgY2hhaW4tbGFkZGVyIGFkYWxhaCBiYWh3YSBwZXJrZW1iYW5nYW4gcHJvcG9yc2lvbmFsIGtsYWltIGRhcmkgc2F0dSBwZXJpb2RlIHBlbmdlbWJhbmdhbiBrZSBwZXJpb2RlIGJlcmlrdXRueWEgc2VydXBhIHVudHVrIHNlbXVhIHRhaHVuIGtlamFkaWFuLg0KDQpJbmkgbWVuZ2hhc2lsa2FuIEZpZ3VyZSAxMS4xNCBiZXJpa3V0Og0KDQphbmdrYS1hbmdrYSBkYWxhbSBrb2xvbSB0ZXJha2hpciBtZW51bmp1a2thbiBwZXJraXJhYW4ganVtbGFoIGtsYWltIGFraGlyLiBFc3RpbWFzaSBqdW1sYWgga2xhaW0geWFuZyB0ZXJ0dW5kYSAgJFxoYXR7XG1hdGhjYWx7Un19X2lee0NMfSQgdW50dWsgcGVyaW9kZSBrZWphZGlhbiB0ZXJ0ZW50dSAkaT1JLUorMSxcbGRvdHMsIEkkIGtlbXVkaWFuIGRpYmVyaWthbiBvbGVoIHNlbGlzaWggYW50YXJhIGp1bWxhaCBrbGFpbSBha2hpciBkYW4ganVtbGFoIGt1bXVsYXRpZiB5YW5nIGRpYW1hdGkgcGFkYSBkaWFnb25hbCB0ZXJiYXJ1Og0KDQokJFxoYXR7XG1hdGhjYWx7Un19X2lee0NMfSA9XGhhdHtDfV97aUp9XntDTH0tQ197aSxJLWl9LiQkDQoNCkluaSBhZGFsYWggZXN0aW1hc2kgY2hhaW4tbGFkZGVyIHVudHVrIGNhZGFuZ2FuIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW1lbnVoaSBrZXdhamliYW4gZGkgbWFzYSBkZXBhbiB0ZXJrYWl0IGtsYWltIHlhbmcgdGVyamFkaSBkYWxhbSBwZXJpb2RlIGtlamFkaWFuIGluaS4gQ2FkYW5nYW4gcGVyIHBlcmlvZGUga2VqYWRpYW4gZGFuIHRvdGFsIHlhbmcgZGlqdW1sYWhrYW4gZGFyaSBzZW11YSBwZXJpb2RlIGtlamFkaWFuIGRpcmFuZ2t1bSBkYWxhbSBGaWd1cmUgMTEuMTUuDQoNCiMjIyBNYWNr4oCZcyBEaXN0cmlidXRpb24tRnJlZSBDaGFpbi1MYWRkZXIgTW9kZWwNCg0KUGFkYSB0YWhhcCBpbmksIG1ldG9kZSBjaGFpbi1sYWRkZXIgdHJhZGlzaW9uYWwgbWVtYmVyaWthbiBlc3RpbWFzaSB0aXRpayAgJFxoYXR7Q31ee0NMfV97aUp9JCB1bnR1ayByYW1hbGFuICAkQ197aUp9JCAsIG1lbmdndW5ha2FuIGluZm9ybWFzaSAgJFxtYXRoY2Fse0R9X0kkIC4gS2FyZW5hIG1ldG9kZSBjaGFpbi1sYWRkZXIgYWRhbGFoIGFsZ29yaXRtYSB5YW5nIHNlcGVudWhueWEgZGV0ZXJtaW5pc3RpayBkYW4gaW50dWl0aWYgdW50dWsgbWVsZW5na2FwaSBzZWdpdGlnYSBydW4tb2ZmLCBraXRhIHRpZGFrIGRhcGF0IG1lbmVudHVrYW4gc2ViZXJhcGEgZGFwYXQgZGlhbmRhbGthbiBlc3RpbWFzaSB0aXRpayB0ZXJzZWJ1dCBhdGF1IG1lbW9kZWxrYW4gdmFyaWFzaSBwZW1iYXlhcmFuIGRpIG1hc2EgZGVwYW4uIFVudHVrIG1lbmphd2FiIHBlcnRhbnlhYW4tcGVydGFueWFhbiB0ZXJzZWJ1dCwgZGlwZXJsdWthbiBzZWJ1YWggbW9kZWwgc3Rva2FzdGlrIHlhbmcgbWVuZGFzYXJpIHlhbmcgZGFwYXQgbWVyZXByb2R1a3NpIGVzdGltYXNpIGNhZGFuZ2FuIGNoYWluLWxhZGRlci4NCg0KRGFsYW0gYmFnaWFuIGluaSwga2FtaSBha2FuIGZva3VzIHBhZGEgbW9kZWwgY2hhaW4tbGFkZGVyIGJlYmFzIGRpc3RyaWJ1c2kgc2ViYWdhaSBtb2RlbCBzdG9rYXN0aWsgeWFuZyBtZW5kYXNhciwgZGlwZXJrZW5hbGthbiBkYWxhbSBNYWNrICgxOTkzKS4gTWV0b2RlIGluaSBtZW11bmdraW5rYW4ga2l0YSB1bnR1ayBtZW5nZXN0aW1hc2kga2VzYWxhaGFuIHN0YW5kYXIgZGFyaSBwcmVkaWtzaSBjaGFpbi1sYWRkZXIuIFBhZGEgQmFnaWFuIGJlcmlrdXRueWEsIHlhaXR1IEJhZ2lhbiAxMS40LCBtb2RlbCBsaW5lYXIgdW11bSBkaWd1bmFrYW4gdW50dWsgbWVuZ2VtYmFuZ2thbiBwZW5kZWthdGFuIHlhbmcgc2VwZW51aG55YSBzdG9rYXN0aWsgdW50dWsgbWVtcHJlZGlrc2kgY2FkYW5nYW4geWFuZyBiZWx1bSB0ZXJiYXlhci4NCg0KRGFsYW0gcGVuZGVrYXRhbiBNYWNrLCBiZXJsYWt1IGtvbmRpc2kta29uZGlzaSBiZXJpa3V0ICh0YW5wYSBtZW5nYXN1bXNpa2FuIGRpc3RyaWJ1c2kpOg0KDQotIEtsYWltIEt1bXVsYXRpZiAgJChDX3tpan0pX3tqPTAsXGxkb3RzLEp9JCBhZGFsYWggaW5kZXBlbmRlbiBkaSBhbnRhcmEgcGVyaW9kZSBrZWphZGlhbiB5YW5nIGJlcmJlZGEgaSAuDQoNCi0gVGVyZGFwYXQga29uc3RhbnRhIHRldGFwICAkZl8wLCBcbGRvdHMsIGZfe0otMX0kIGRhbiAgJFxzaWdtYV4yXzAsXGxkb3RzLCBcc2lnbWFeMl97Si0xfSQgIHlhbmcgbWVtZW51aGkgdW50dWsgc2VtdWEgICRpPTEsXGxkb3RzLCBJJCBkYW4gJGo9MCxcbGRvdHMsSi0xJDoNCg0KJCRcYmVnaW57YXJyYXl9e3JsfQ0KRVtDX3tpLGorMX18Q197aTB9LFxsZG90cyxDX3tpan1dICY9IGZfaiBcY2RvdCBDX3tpan0gXFwNClx0ZXh0e1Zhcn0oQ197aSxqKzF9fENfe2lqfSkgJj0gXHNpZ21hXjJfaiBcY2RvdCBDX3tpan0uDQpcZW5ke2FycmF5fSQkDQoNCkluaSBiZXJhcnRpIGtsYWltIGt1bXVsYXRpZiAgJChDX3tpan0pX3tqPTAsXGxkb3RzLEp9JCAgYWRhbGFoIHByb3NlcyBNYXJrb3YgKGRpIHBlcmlvZGUgcGVuZ2VtYmFuZ2FuICBqKSBkYW4gb2xlaCBrYXJlbmEgaXR1IG1hc2EgZGVwYW4gaGFueWEgYmVyZ2FudHVuZyBwYWRhIG1hc2Egc2VrYXJhbmcuDQoNCkRlbmdhbiBhc3Vtc2kgaW5pLCBuaWxhaSBoYXJhcGFuIGRhcmkganVtbGFoIGtsYWltIGFraGlyICAkQ197aSxKfSQsIGRlbmdhbiBkYXRhIHlhbmcgdGVyc2VkaWEgZGkgc2VnaXRpZ2EgYXRhcywgYWRhbGFoIGp1bWxhaCBrdW11bGF0aWYgcGFkYSBkaWFnb25hbCB0ZXJiYXJ1ICRDX3tpLCBJLTF9JCBkaWthbGkgZGVuZ2FuIGZha3RvciBwZW5nZW1iYW5nYW4geWFuZyBzZXN1YWkgICRmX2okIC4gRGFsYW0gbm90YXNpIG1hdGVtYXRpa2EsIGtpdGEgbWVuZGFwYXRrYW4gZGVuZ2FuIGZha3RvciBwZW5nZW1iYW5nYW4geWFuZyBkaWtldGFodWkgICAkZl9qJGRhbiBvYnNlcnZhc2kgICRcbWF0aGNhbHtEfV9JJCA6DQogDQokJEVbQ197aUp9fFxtYXRoY2Fse0R9X0ldID0gQ197aSxJLWl9IFxwcm9kX3tqPUktaX1ee0otMX0gZl9qJCQNCg0KSW5pIHBlcnNpcyBhcGEgeWFuZyBkaWxha3VrYW4gbWV0b2RlIGNoYWluLWxhZGRlciBkZXRlcm1pbmlzdGlrLCBzZXBlcnRpIHlhbmcgZGlqZWxhc2thbiBkaSBCYWdpYW4gMTEuMy4xLiBEYWxhbSBwcmFrdGlrbnlhLCBmYWt0b3IgcGVuZ2VtYmFuZ2FuIHRpZGFrIGRpa2V0YWh1aSBkYW4gcGVybHUgZGllc3RpbWFzaSBkYXJpIGRhdGEgeWFuZyB0ZXJzZWRpYSBkaSBzZWdpdGlnYSBhdGFzLiBEYWxhbSBwZW5kZWthdGFuIE1hY2ssIGtpdGEgbWVuZGFwYXRrYW4gcGVyc2lzIGVrc3ByZXNpIHlhbmcgc2FtYSB1bnR1ayBtZW5nZXN0aW1hc2kgZmFrdG9yIHBlbmdlbWJhbmdhbiAgJGZfaiQgIHBhZGEgc2FhdCAgJEkkICBzZXBlcnRpIGRhbGFtIGFsZ29yaXRtYSBjaGFpbi1sYWRkZXIgZGV0ZXJtaW5pc3RpazoNCiAgDQokJFxoYXR7Zn1fal57Q0x9ID1cZnJhY3tcc3VtX3tqPTF9XntJLWotMX0gQ197aSxqKzF9fXtcc3VtX3tpPTF9XntJLWotMX0gQ197aWp9fS4kJA0KDQpQcmVkaWtzaSB1bnR1ayBzZWwtc2VsIGRhbGFtIHNlZ2l0aWdhIGJhd2FoICh5YWl0dSBzZWwtc2VsICAkQ197aSxqfSQgZGltYW5hICAkaStqPkkkKSBrZW11ZGlhbiBkaXBlcm9sZWggZGVuZ2FuIG1lbmdnYW50aWthbiBmYWt0b3ItZmFrdG9yIHlhbmcgdGlkYWsgZGlrZXRhaHVpICAkZl9qJCBkZW5nYW4gcGVya2lyYWFuIG1lcmVrYSB5YW5nIHNlc3VhaSAgJFxoYXR7Zn1fal57Q0x9JCA6DQogDQokJFxoYXR7Q31ee0NMfV97aWp9ID0gQ197aSxJLWl9XHByb2Rfe2w9SS1pfV57ai0xfSBcaGF0e2Z9X2xee0NMfS4kJA0KDQpVbnR1ayBtZW5na3VhbnRpZmlrYXNpIGtlc2FsYWhhbiBwcmVkaWtzaSB5YW5nIG11bmN1bCBkZW5nYW4gcHJlZGlrc2kgY2hhaW4tbGFkZGVyLCBNYWNrIGp1Z2EgbWVtcGVya2VuYWxrYW4gcGFyYW1ldGVyLXZhcmlhbiAgJFxzaWdtYV4yX2okLiBVbnR1ayBtZW5kYXBhdGthbiB3YXdhc2FuIGRhbGFtIGVzdGltYXNpIHBhcmFtZXRlci12YXJpYW4gaW5pLCBkaXBlcmtlbmFsa2FuIGZha3Rvci1mYWt0b3IgcGVya2VtYmFuZ2FuIGluZGl2aWR1ICAkZl97aSxqfSQgKHlhbmcgc3Blc2lmaWsgdW50dWsgcGVyaW9kZSBrZWphZGlhbiAgaSApDQogDQokJGZfe2ksan0gPSBcZnJhY3tDX3tpLGorMX19e0Nfe2lqfX0uJCQNCg0KRmFrdG9yLWZha3RvciBwZXJrZW1iYW5nYW4gaW5kaXZpZHUgaW5pIGp1Z2EgbWVuZ2dhbWJhcmthbiBiYWdhaW1hbmEganVtbGFoIGFrdW11bGFzaSB0dW1idWggZGFyaSBwZXJpb2RlICAkaiAkIGtlIHBlcmlvZGUgICRqKzEkICwgdGV0YXBpIG1lcmVrYSBoYW55YSBtZW1wZXJ0aW1iYW5na2FuIHJhc2lvIGR1YSBzZWwgKGRhcmlwYWRhIG1lbmdhbWJpbCByYXNpbyBkdWEganVtbGFoIHNlbGFtYSBzZW11YSBwZXJpb2RlIGtlamFkaWFuIHlhbmcgdGVyc2VkaWEpLiBQZXJoYXRpa2FuIGJhaHdhIGZha3Rvci1mYWt0b3IgcGVya2VtYmFuZ2FuIGRhcGF0IGRpdHVsaXMgc2ViYWdhaSByYXRhLXJhdGEgdGVydGltYmFuZyBkYXJpIGZha3Rvci1mYWt0b3IgcGVya2VtYmFuZ2FuIGluZGl2aWR1Og0KIA0KJCRcaGF0e2Z9X2pee0NMfSA9IFxzdW1fe2k9MX1ee0ktai0xfSBcZnJhY3tDX3tpan19e1xzdW1fe2k9MX1ee0ktai0xfSBDX3tpan19IGZfe2ksan0sJCQNCg0KTWFyaSBraXRhIHNla2FyYW5nIG1lbmdlc3RpbWFzaSBwYXJhbWV0ZXItdmFyaWFuICAkXHNpZ21hXjIkICBkZW5nYW4gbWVudWxpcyBhc3Vtc2kgdmFyaWFucyBNYWNrIGRhbGFtIGJlbnR1ayB5YW5nIHNldGFyYS4gUGVydGFtYSwgdmFyaWFucyBkYXJpIHJhc2lvICAkQ197aSxqKzF9JCAgZGFuICAkY197aSxqfSQgIHlhbmcgYmVyc3lhcmF0IHBhZGEgICRDX3tpLDB9LFxsZG90cywgQ197aSxqfSQgIGJlcmJhbmRpbmcgdGVyYmFsaWsgZGVuZ2FuICAkQ197aSxqfSQ6DQogDQokJFx0ZXh0e1Zhcn1bQ197aSxqKzF9L0Nfe2lqfXxDX3tpMH0sXGxkb3RzLENfe2lqfV0gfiBccHJvcHRvIH4gXGZyYWN7MX17Q197aWp9fS4kJA0KDQpJbmkgbWVuZ2luZ2F0a2FuIGtpdGEgcGFkYSBwZW5nYXR1cmFuIGt1YWRyYXQgdGVya2VjaWwgYmVyYm9ib3QgeWFuZyBraGFzIGRpIG1hbmEgYm9ib3RueWEgYWRhbGFoIGtlYmFsaWthbiBkYXJpIHZhcmlhYmlsaXRhcyByZXNwb25zLiBPbGVoIGthcmVuYSBpdHUsIHZhcmlhYmVsIHJlc3BvbnMgeWFuZyBsZWJpaCB2b2xhdGlsIGF0YXUgdGlkYWsgcHJlc2lzaSBha2FuIGRpYmVyaSBib2JvdCBsZWJpaCByZW5kYWguICAkQ197aSxqfSQgIGJlcnBlcmFuIHNlYmFnYWkgYm9ib3RueWEuIERlbmdhbiBtZW5nZ3VuYWthbiBwYXJhbWV0ZXItdmFyaWFuIHlhbmcgdGlkYWsgZGlrZXRhaHVpICAkXHNpZ21hXjJfaiQgLCBhc3Vtc2kgdmFyaWFucyBpbmkgZGFwYXQgZGl0dWxpcyBzZWJhZ2FpOg0KIA0KJCRcdGV4dHtWYXJ9W0Nfe2ksaisxfXxDX3tpMH0sXGxkb3RzLENfe2lqfV0gPSBcc2lnbWFeMl9qIFxjZG90IENfe2lqfSwkJA0KDQpLb25la3NpIGRlbmdhbiBrdWFkcmF0IHRlcmtlY2lsIGJlcmJvYm90IGtlbXVkaWFuIHNlY2FyYSBsYW5nc3VuZyBtZW5naGFzaWxrYW4gZXN0aW1hc2kgdGFrIGJpYXMgdW50dWsgcGFyYW1ldGVyLXZhcmlhbiB5YW5nIHRpZGFrIGRpa2V0YWh1aSAgJFxzaWdtYV4yX2okICBkYWxhbSBiZW50dWsganVtbGFoIGt1YWRyYXQgcmVzaWR1IHlhbmcgZGlib2JvdGk6DQoNCiQkXGhhdHtcc2lnbWF9XjJfaiA9IFxmcmFjezF9e0ktai0yfVxzdW1fe2k9MX1ee0ktai0xfSBDX3tpan1cbGVmdChcZnJhY3tDX3tpLGorMX19e0Nfe2lqfX0tXGhhdHtmfV9qXntDTH1ccmlnaHQpXjIuJCQNCg0KIyMjIFIgY29kZSBmb3IgQ2hhaW4tTGFkZGVyIFByZWRpY3Rpb25zDQoNCkthbWkgbWVuZ2d1bmFrYW4gb2JqZWsgYG15X3RyaWFuZ2xlYCBkZW5nYW4gdGlwZSB0cmlhbmdsZSB5YW5nIGRpYnVhdCBwYWRhIEJhZ2lhbiAxMS4yLjQuIE1vZGVsIGNoYWluLWxhZGRlciBiZWJhcyBkaXN0cmlidXNpIGRhcmkgTWFjayAoMTk5MykgZGlpbXBsZW1lbnRhc2lrYW4gZGFsYW0gcGFrZXQgYENoYWluTGFkZGVyYCAoR2VzbWFubiBldCBhbC4gMjAxOSkgKHNlYmFnYWkgYmVudHVrIGtodXN1cyBkYXJpIGt1YWRyYXQgdGVya2VjaWwgYmVyYm9ib3QpIGRhbiBkYXBhdCBkaXRlcmFwa2FuIHBhZGEgZGF0YSBgbXlfdHJpYW5nbGVgIHVudHVrIG1lbXByZWRpa3NpIGp1bWxhaCBrbGFpbSB5YW5nIGJlbHVtIGRpc2VsZXNhaWthbiBkYW4gbWVuZ2VzdGltYXNpIGtlc2FsYWhhbiBzdGFuZGFyIGRpIHNla2l0YXIgcmFtYWxhbiB0ZXJzZWJ1dC4NCg0KYGBge3IgZXZhbD1GQUxTRX0NCkNMIDwtIE1hY2tDaGFpbkxhZGRlcihteV90cmlhbmdsZSkNCkNMDQpgYGANCg0KYGBge3IgZXZhbD1GQUxTRX0NCnJvdW5kKENMJGYsZGlnaXRzID0gNCkNCmBgYA0KDQpLaXRhIGp1Z2EgZGFwYXQgbWVuY2V0YWsgc2VsdXJ1aCBydW4tb2ZmIHRyaWFuZ2xlICh0ZXJtYXN1ayBwcmVkaWtzaSkuDQoNCk1TRVAgKE1lYW4gU3F1YXJlZCBFcnJvciBvZiBQcmVkaWN0aW9uKSB1bnR1ayB0b3RhbCBjYWRhbmdhbiBtZWxpbnRhc2kgc2VtdWEgcGVyaW9kZSBrZWphZGlhbiBkaWJlcmlrYW4gb2xlaDoNCg0KYGBge3IgZXZhbD1GQUxTRX0NCkNMJFRvdGFsLk1hY2suUy5FXjINCmBgYA0KDQpEaXNhcmFua2FuIHVudHVrIG1lbXZhbGlkYXNpIGFzdW1zaSBNYWNrIGRlbmdhbiBtZW1lcmlrc2EgYmFod2EgdGlkYWsgYWRhIHRyZW4gZGFsYW0gcGxvdCByZXNpZHUuIEVtcGF0IHBsb3QgdGVyYWtoaXIgeWFuZyBraXRhIHBlcm9sZWggZGVuZ2FuIHBlcmludGFoIGJlcmlrdXQgbWVudW5qdWtrYW4gbWFzaW5nLW1hc2luZyByZXNpZHUgc3RhbmRhciB0ZXJoYWRhcCBuaWxhaSB5YW5nIGNvY29rLCBwZXJpb2RlIGFzYWwsIHBlcmlvZGUga2FsZW5kZXIsIGRhbiBwZXJpb2RlIHBlbmdlbWJhbmdhbi4NCg0KYGBge3IgZXZhbD1GQUxTRX0NCnBsb3QoQ0wpDQpgYGANCg0KUGxvdCBiYWdpYW4ga2lyaSBhdGFzIGFkYWxhaCBncmFmaWsgYmF0YW5nIHBvc2lzaSBrbGFpbSB0ZXJiYXJ1IGRpdGFtYmFoIElCTlIgZGFuIGtlc2FsYWhhbiBzdGFuZGFyIE1hY2sgYmVyZGFzYXJrYW4gcGVyaW9kZSBrZWphZGlhbi4gUGxvdCBiYWdpYW4ga2FuYW4gYXRhcyBtZW51bmp1a2thbiBwb2xhIHBlcmtlbWJhbmdhbiB5YW5nIGRpcHJlZGlrc2kgdW50dWsgc2VtdWEgcGVyaW9kZSBrZWphZGlhbiAoZGltdWxhaSBkYXJpIDEgdW50dWsgcGVyaW9kZSBrZWphZGlhbiB0ZXJ0dWEpLg0KDQpLZXRpa2EgbWVuZ2F0dXIgYXJndW1lbiBsYXR0aWNlPVRSVUUsIGtpdGEgYWthbiBtZW5kYXBhdGthbiBwbG90IHBlcmtlbWJhbmdhbiwgdGVybWFzdWsgcHJlZGlrc2kgZGFuIHBlcmtpcmFhbiBrZXNhbGFoYW4gc3RhbmRhciBiZXJkYXNhcmthbiBwZXJpb2RlIGtlamFkaWFuLg0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KcGxvdChDTCwgbGF0dGljZT1UUlVFKQ0KYGBgDQoNCiMjIEdMTXMgYW5kIEJvb3RzdHJhcCBmb3IgTG9zcyBSZXNlcnZlcw0KDQpCYWdpYW4gaW5pIG1lbWJhaGFzIG1vZGVsIHJlZ3Jlc2kgdW50dWsgbWVuZ2FuYWxpc2lzIHNlZ2l0aWdhIHJ1bi1vZmYuIEtldGlrYSBtZW5nYW5hbGlzaXMgZGF0YSBkYWxhbSBzZWdpdGlnYSBydW4tb2ZmIGRlbmdhbiBtb2RlbCByZWdyZXNpLCBhbGF0IHN0YW5kYXIgdW50dWsgcGVtYmFuZ3VuYW4gbW9kZWwsIGVzdGltYXNpLCBkYW4gcHJlZGlrc2kgdGVyc2VkaWEuIERlbmdhbiBtZW5nZ3VuYWthbiBhbGF0LWFsYXQgaW5pLCBraXRhIGRhcGF0IG1lbGFtcGF1aSBlc3RpbWFzaSB0aXRpayBkYW4ga2VzYWxhaGFuIHN0YW5kYXIgc2VwZXJ0aSB5YW5nIGRpamVsYXNrYW4gZGkgQmFnaWFuIDExLjMuIFNlY2FyYSBraHVzdXMsIGtpdGEgbWVtYmFuZ3VuIG1vZGVsIGxpbmllciBnZW5lcmFsaXNhc2kgKEdMTSkgdW50dWsgcGVtYmF5YXJhbiBpbmtyZW1lbnRhbCAgJFhfe2lqfSQgIGRhbGFtIEdhbWJhciAxMS42LiBTZW1lbnRhcmEgbWV0b2RlIGNoYWluLWxhZGRlciBiZWtlcmphIGRlbmdhbiBkYXRhIGt1bXVsYXRpZiwgR0xNIGtoYXMgbWVuZ2FzdW1zaWthbiB2YXJpYWJlbCByZXNwb25zIG1lbmphZGkgaW5kZXBlbmRlbiBkYW4gb2xlaCBrYXJlbmEgaXR1IGJla2VyamEgZGVuZ2FuIHNlZ2l0aWdhIHJ1bi1vZmYgaW5rcmVtZW50YWwuDQoNCiMjIyBNb2RlbCBTcGVjaWZpY2F0aW9uDQoNCk1pc2Fsa2FuICAgJFhfe2lqfSQgIG1lbnlhdGFrYW4gcGVtYmF5YXJhbiBpbmtyZW1lbnRhbCBkYWxhbSBzZWwgJChpLCBqKSQgZGFyaSBzZWdpdGlnYSBydW4tb2ZmLiBLYW1pIG1lbmdhc3Vtc2lrYW4gYmFod2EgICAkWF97aWp9JCBzYWxpbmcgaW5kZXBlbmRlbiBkZW5nYW4ga2VwYWRhdGFuICAkZih4X3tpan07XHRoZXRhX3tpan0sXHBoaSkkIGRhcmkga2VsdWFyZ2EgZGlzdHJpYnVzaSBla3Nwb25lbnNpYWwuIEthbWkgbWVuZ2lkZW50aWZpa2FzaToNCg0KLSAkXG11X3tpan09RVtYX3tpan1dJCBzZWJhZ2FpIG5pbGFpIGhhcmFwYW4gZGFyaSBzZWwgICRYX3tpan0kLA0KDQotICRccGhpJHNlYmFnYWkgcGFyYW1ldGVyIGRpc3BlcnNpLCBkYW4gICRcdGV4dHtWYXJ9W1hfe2lqfV09XHBoaSBcY2RvdCBWKFxtdV97aWp9KSQgLCBkaSBtYW5hICRWKC4pJCBhZGFsYWggZnVuZ3NpIHZhcmlhbnMNCg0KLSAkXGV0YV97aWp9JCBzZWJhZ2FpIHByZWRpa3RvciBsaW5lYXIgc2VoaW5nZ2EgJFxldGFfe2lqfT1nKFxtdV97aWp9KSQgZGVuZ2FuICRnJCBzZWJhZ2FpIGZ1bmdzaSBsaW5rLg0KDQpEaXN0cmlidXNpIGRhcmkga2VsdWFyZ2EgZWtzcG9uZW5zaWFsIGRhbiBmdW5nc2kgbGluayBkZWZhdWx0LW55YSB0ZXJjYW50dW0gZGkgaHR0cDovL3N0YXQuZXRoei5jaC9SLW1hbnVhbC9SLXBhdGNoZWQvbGlicmFyeS9zdGF0cy9odG1sL2ZhbWlseS5odG1sLiBTZWthcmFuZyBrYW1pIGFrYW4gbWVtYmFoYXMgdGlnYSBHTE0ga2h1c3VzIHlhbmcgYmFueWFrIGRpZ3VuYWthbiB1bnR1ayBwZW55aXNpaGFuIGtlcnVnaWFuLg0KDQpQZXJ0YW1hLCBtb2RlbCByZWdyZXNpIFBvaXNzb24gZGlwZXJrZW5hbGthbiBkYWxhbSBCYWdpYW4gOC4yLiBEYWxhbSBtb2RlbCBpbmksIGthbWkgbWVuZ2FzdW1zaWthbiBiYWh3YSBYaWogbWVtaWxpa2kgZGlzdHJpYnVzaSBQb2lzc29uIGRlbmdhbiBwYXJhbWV0ZXINCg0KJCRcbXVfe2lqfSA9IFxwaV9pIFxjZG90IFxnYW1tYV9qLCQkDQoNCnN0cnVrdHVyIHlhbmcgdGVyZGlyaSBkYXJpIHBlcnNpbGFuZ2FuIGtlbGFzIHlhbmcgbWVuY2FrdXAgZWZlayBtdWx0aXBsaWNhdGl2ZSBkYXJpIHRhaHVuIGtlamFkaWFuICRpJCBkYW4gcGVyaW9kZSBwZXJrZW1iYW5nYW4gJGokLiBTdHJ1a3R1ciBtb2RlbCB5YW5nIGRpdXN1bGthbiB0aWRhayBkYXBhdCBkaWlkZW50aWZpa2FzaSB0YW5wYSBiYXRhc2FuIHRhbWJhaGFuIHBhZGEgcGFyYW1ldGVyLCBtaXNhbG55YSAkXHN1bV97aj0wfV5KIFxnYW1tYV9qPTEkLiBCYXRhc2FuIGluaSBtZW1iZXJpa2FuIGludGVycHJldGFzaSBla3NwbGlzaXQgdGVyaGFkYXAgJFxwaV9pJCAoZGVuZ2FuICRpPTEsXGxkb3RzLEkkKSBzZWJhZ2FpIHVrdXJhbiBwYXBhcmFuIGF0YXUgdm9sdW1lIHVudHVrIHRhaHVuIGtlamFkaWFuICRpJCBkYW4gJM6zX2okIHNlYmFnYWkgZnJha3NpIGRhcmkgdG90YWwgdm9sdW1lIHlhbmcgZGliYXlhcmthbiBkZW5nYW4gcGVudW5kYWFuICRqJC4gTmFtdW4sIHNhYXQgbWVsYWt1a2FuIGthbGlicmFzaSBHTE0gZGkgUiwgYmF0YXNhbiBhbHRlcm5hdGlmIHNlcGVydGkgJFxwaV8xPTEkIGF0YXUgJFxnYW1tYV8xPTEkLCBhdGF1IHJlcGFyYW1ldHJpc2FzaSBkaSBtYW5hICRcbXVfe2lqfSA9IFxleHB7KFxtdStcYWxwaGFfaStcYmV0YV9qKX0kIGxlYmloIG11ZGFoIGRpaW1wbGVtZW50YXNpa2FuLiBLYW1pIG1lbGFuanV0a2FuIGRlbmdhbiBzcGVzaWZpa2FzaSB0ZXJha2hpciB0ZXJzZWJ1dCwgdGVybWFzdWsgJFxhbHBoYV8xID0gXGJldGFfMCA9IDAkLCB5YW5nIGRpa2VuYWwgc2ViYWdhaSBiYXRhc2FuIHN1ZHV0LiBHTE0gaW5pIG1lbXBlcmxha3VrYW4gdGFodW4ga2VqYWRpYW4gZGFuIHBlbnVuZGFhbiBwZW1iYXlhcmFuIHNlYmFnYWkgdmFyaWFiZWwgZmFrdG9yIGRhbiBjb2NvayBkZW5nYW4gcGFyYW1ldGVyIHBlciB0aW5na2F0LCBkaXNhbXBpbmcgaW50ZXJjZXB0ICRcbXUkLiBCYXRhc2FuIHN1ZHV0IG1lbmphZGlrYW4gZWZlayB0aW5na2F0IHBlcnRhbWEgdmFyaWFiZWwgZmFrdG9yIHNhbWEgZGVuZ2FuIG5vbC4gQXN1bXNpIFBvaXNzb24gc2FuZ2F0IGJlcmd1bmEgdW50dWsgc2VnaXRpZ2EgcnVuLW9mZiBkZW5nYW4ganVtbGFoIGtsYWltIHlhbmcgZGlsYXBvcmthbiwgc2VyaW5nIGRpZ3VuYWthbiBkYWxhbSBlc3RpbWFzaSBqdW1sYWgga2xhaW0gSUJOUiAobGloYXQgQmFnaWFuIDExLjIpLg0KDQpLZWR1YSwgbW9kaWZpa2FzaSBtZW5hcmlrIGRhcmkgbW9kZWwgcmVncmVzaSBQb2lzc29uIGRhc2FyIGFkYWxhaCBtb2RlbCByZWdyZXNpIFBvaXNzb24geWFuZyB0ZXJkaXNwZXJzaSBiZXJsZWJpaGFuIGRpIG1hbmEgJFpfe2lqfSQgbWVtaWxpa2kgZGlzdHJpYnVzaSBQb2lzc29uIGRlbmdhbiBwYXJhbWV0ZXIgJFxtdV97aWp9L1xwaGkkIGRhbg0KDQokJFxiZWdpbnthcnJheX17cmx9DQpYX3tpan0gJlxzaW0gIFxwaGkgXGNkb3QgWl97aWp9ICBcXA0KXG11X3tpan0gJj0gXGV4cHsoXG11ICsgXGFscGhhX2kgKyBcYmV0YV9qKX0uDQpcZW5ke2FycmF5fSQkDQoNCnNlYmFnYWkgYWtpYmF0bnlhLCAkWF97aWp9JCBtZW1pbGlraSBzcGVzaWZpa2FzaSB5YW5nIHNhbWEgdW50dWsgcmF0YS1yYXRhbnlhIHNlcGVydGkgZGFsYW0gbW9kZWwgcmVncmVzaSBQb2lzc29uIGRhc2FyLCB0ZXRhcGkgc2VrYXJhbmcNCg0KJCRcdGV4dHtWYXJ9W1hfe2lqfV0gPSBccGhpXjIgXGNkb3QgXHRleHR7VmFyfVtaX3tpan1dID0gXHBoaSBcY2RvdCBcZXhweyhcbXUgKyBcYWxwaGFfaSArIFxiZXRhX2opfS4kJA0KDQprb25zdHJ1a3NpIGluaSBtZW11bmdraW5rYW4gdW50dWsgYWRhbnlhIGRpIGJhd2FoIChrZXRpa2EgJFxwaGkgPDEkKSBkYW4gb3Zlci1kaXNwZXJzaW9uIChkZW5nYW4gJFxwaGkgPjEkKS4gS2FyZW5hICRYX3tpan0kIHRpZGFrIGxhZ2kgbWVuZ2lrdXRpIGRpc3RyaWJ1c2kgeWFuZyB0ZXJrZW5hbCwgcGVuZGVrYXRhbiBpbmkgZGlzZWJ1dCBxdWFzaS1saWtlbGlob29kLiBJbmkgc2FuZ2F0IGJlcmd1bmEgdW50dWsgbWVtb2RlbGthbiBzZWdpdGlnYSBydW4tb2ZmIGRlbmdhbiBwZW1iYXlhcmFuIGJlcnRhbWJhaCwga2FyZW5hIGJpYXNhbnlhIG1lbmd1bmdrYXBrYW4gb3Zlci1kaXNwZXJzaW9uLg0KDQpLZXRpZ2EsIG1vZGVsIHJlZ3Jlc2kgZ2FtbWEgcmVsZXZhbiB1bnR1ayBtZW1vZGVsa2FuIHNlZ2l0aWdhIHJ1bi1vZmYgZGVuZ2FuIHBlbWJheWFyYW4ga2xhaW0uIEluZ2F0IGRhcmkgQmFnaWFuIDMuMi4xIChsaWhhdCBqdWdhIExhbXBpcmFuIEJhYiAxOCkgYmFod2EgZGlzdHJpYnVzaSBnYW1tYSBtZW1pbGlraSBwYXJhbWV0ZXIgYmVudHVrICRcYWxwaGEkIGRhbiBwYXJhbWV0ZXIgc2thbGEgJFx0aGV0YSQuIERhcmkgaW5pLCBraXRhIG1lbGFrdWthbiByZXBhcmFtZXRlcmlzYXNpIGRhbiBtZW5kZWZpbmlzaWthbiBwYXJhbWV0ZXIgYmFydSAkXG11ID0gXGFscGhhIFxjZG90IFx0aGV0YSQgc2FtYmlsIHRldGFwIG1lbXBlcnRhaGFua2FuIHBhcmFtZXRlciBza2FsYSAkXHRoZXRhJC4gU2VsYW5qdXRueWEsIGFuZ2dhcCBiYWh3YSAkWF97aWp9JCBtZW1pbGlraSBkaXN0cmlidXNpIGdhbW1hIGRhbiBtZW1wZXJib2xlaGthbiAkXHBoaSQgYmVydmFyaWFzaSBiZXJkYXNhcmthbiAkaWokIHNlaGluZ2dhDQoNCiQkXG11X3tpan0gPSAgXGV4cHsoXG11ICsgXGFscGhhX2kgKyBcYmV0YV9qKX0uJCQNCg0KIyMjIE1vZGVsIEVzdGltYXRpb24gYW5kIFByZWRpY3Rpb24NCg0Ka2FtaSBzZWthcmFuZyBtZW5nZXN0aW1hc2kgcGFyYW1ldGVyIHJlZ3Jlc2kgJFxwaGkkLCAkXGFscGhhX3tpfSQsIGRhbiAkXGJldGFfaiQgZGFsYW0gR0xNIHlhbmcgZGl1c3Vsa2FuLiBEaSBgUmAsIGZ1bmdzaSBgZ2xtYCB0ZXJzZWRpYSB1bnR1ayBtZW5nZXN0aW1hc2kgcGFyYW1ldGVyLXBhcmFtZXRlciBpbmkgbWVsYWx1aSBlc3RpbWFzaSBtYXhpbXVtIGxpa2VsaWhvb2QgKG1sZSkgYXRhdSBlc3RpbWFzaSBxdWFzaS1saWtlbGlob29kIChkYWxhbSBrYXN1cyBQb2lzc29uIG92ZXItZGlzcGVyc2VkKS4gRGVuZ2FuIGFkYW55YSBlc3RpbWFzaSBwYXJhbWV0ZXIgJFxoYXR7XHBoaX0kLCAkXGhhdHtcYWxwaGFfaX0kLCBkYW4kXGhhdHtcYmV0YX1faiQsIGtpdGEgZGFwYXQgbWVuZ2hhc2lsa2FuIGVzdGltYXNpIHRpdGlrIHVudHVrIHNldGlhcCBzZWwgZGFsYW0gc2VnaXRpZ2EgYXRhcy4NCg0KJCRcaGF0e1h9X3tpan0gPVxoYXR7RVtYX3tpan1dfSA9IFxleHB7KFxoYXR7XG11fStcaGF0e1xhbHBoYX1faStcaGF0e1xiZXRhfV9qKX0sXCBcdGV4dHt3aXRofVwgaStqXGxlcSBJLiQkDQoNCiQkXGhhdHtYfV97aWp9ID0gXGhhdHtFW1hfe2lqfV19ID0gXGV4cHsoXGhhdHtcbXV9K1xoYXR7XGFscGhhfV9pK1xoYXR7XGJldGF9X2opfSxcIFx0ZXh0e3dpdGh9XCBpK2o+IEkuJCQ=