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


1 Soal nomor 1

Carilah Definisi Algoritma dan Struktur Data dalam berbagai bidang ilmu (Contoh: Sains Data, Fisika, Teknik Informatika, dan Sistem Informasi)!

1.1 Jawaban nomor 1

1.1.1 Sains Data

Algoritma adalah sekumpulan instruksi yang dirancang dengan baik, langkah demi langkah yang dirancang untuk memecahkan masalah atau melakukan tugas tertentu. Tugas dapat berupa sesuatu yang sederhana seperti mengalikan dua angka, atau operasi yang lebih kompleks, seperti memutar file musik.

Struktur Data adalah perpaduan dari organisasi data, manajemen, pengambilan, dan penyimpanan, disatukan ke dalam satu format yang memungkinkan akses dan modifikasi yang efisien. Ini mengumpulkan nilai data, hubungan yang mereka bagikan, dan fungsi atau operasi yang berlaku.

1.1.2 Fisika

Algoritma adalah urutan pernyataan yang tersusun dan memiliki arti yang tidak ambigu untuk memecahkan suatu masalah seperti dalam bidang fisika yaitu dalam menentukan struktur molekul, memperkirakan parameter galaksi yang berinteraksi, keadaan dasar sistem kuantum elektronik, perilaku bahan magnetik yang tidak teratur, dan transisi fase dalam masalah optimasi kombinatorial, dan masih banyak lagi.

Struktur Data adalah cara tertentu untuk mengatur data sehingga dapat digunakan secara efektif yang sangat penting dalam banyak cabang fisika dan penelitian teoretis sering kali menghasilkan teknik simulasi baru yang fundamental untuk diimplementasikan dan dievaluasi

1.1.3 Teknik Informatika

Algoritma adalah prosedur dari berbagai macam langkah-langkah penghitungan, penalaran secara otomatis, sampai pemrosesan data untuk menyelesaikan suatu masalah.

Struktur Data adalah sebuah struktur data merupakan suatu ilmu yang mempelajari sistem pengorganisasian data pada memori komputer maupun file (berkas) pada suatu media penyimpanan dengan menggunakan struktur data array, struct, tree, dan file menggunakan teknik-teknik seperti stack, queue, dan linked list serta hashing.

1.1.4 Sistem Informasi

Algortima adalah proses atau serangkaian aturan yang harus diikuti dalam perhitungan atau operasi pemecahan masalah lainnya, terutama oleh komputer. Dengan kata lain, semua susunan logis yang diurutkan berdasarkan sistematika tertentu dan digunakan untuk memecahkan suatu masalah.

Struktur Data adalah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.

2 Soal nomor 2

Sebagai mahasiswa buatlah algoritma dan flowchart yang anda lakukan untuk mencapai kelulusan sarjana dengan IPK minimal 3.5 dari Universitas Matana!

2.1 Jawaban nomor 2

2.1.1 Algoritma

Tahapan yang perlu dilakukan untuk mencapai kelulusan sarjana dengan IPK minimal 3.5 dari Universitas Matana, antara lain:

  1. Daftar ke kampus Matana
  2. Pilih prodi
  3. Masuk kampus Matana
  4. Mengikuti setiap kelas yang ada
  5. Belajar dengan giat
  6. Mengerjakan tugas dan latihan yang ada
  7. Mengikuti ujian semester
  8. Lakukan hingga semester 7 (Jika belum mencapai semester 7, ulangi langkah kembali dari langkah 4. Jika sudah mencapai semester 7, lanjut ke langkah selanjutnya)
  9. Magang
  10. Menyusun skripsi
  11. Approve Skripsi (Jika belum, lakukan revisi skripsi. Jika sudah di approve, lanjut ke langkah selanjutnya)
  12. Skripsi
  13. Lulus dengan IPK yang terbaik (di atas 3.5)

2.1.2 Flowchart

3 Soal nomor 3

Mengapa Anda harus belajar Algoritma dan Struktur Data?

3.1 Jawaban nomor 3

  1. Melatih berpikir secara efisiensi
  2. Mempermudah dalam menyelesaikan suatu permasalahan dengan data-data yang sudah terstruktur dan tersedia
  3. Ketika struktur data membantu kita untuk menggunakan data secara efisien, algoritma membantu kita untuk menampilkan operasi yang berbeda dari data tersebut secara efisien
  4. Memudahkan dalam pengaturan data
  5. Dalam mewujudkan ide menjadi kenyataan, seperti merancang sebuah program
  6. Dapat berguna dalam berbagai bidang ilmu

4 Soal nomor 4

Sebutkan 3 bahasa pemrograman yang yang paling banyak digunakan dalam Sains Data, Berikan penjelasan kelebihan, kekurangan, dan hubungan bahasa pemrogaman yang satu dengan yang lainnya.

4.1 Jawaban nomor 4

Java, Javascript, dan Python

4.1.1 Kelebihan

4.1.1.1 Java

  1. Mudah Untuk Dikembangkan

Kemudahan dalam hal pengembangan aplikasi. Setiap aplikasi ataupun program yang dibuat dengan menggunakan dasar bahasa pemrograman Java memiliki kemampuan yang sangat baik untuk dilakukan pengembangan lebih lanjut.

  1. Sifatnya multiplatform

Java merupakan salah satu bahasa pemrograman yang sifatnya multi platform atau universal dan bisa digunakan dalam platform apapun. Mulai dari komputer desktop yang mnggunakan Windows, Linux dan sistem operasi lain, smartphone berbasis Android dan Windows, bahkan hingga handphone biasa yang tidak menggunakan sistem operasi pun mampu untuk menjalankan aplikasi dan program yang dibuat dengan menggunakan bahasa pemrograman Java. Hal ini yang membuat Java unggul dalam pembuatan aplikasi dan software.

  1. Memiliki kemudahan dalam menyusun suatu script

Para programmer dan developer dalam menyusun sebuah program, haruslah menggunakan sebuah script, agar program tersebut dapat berjalan. Dengan menggunakan bahasa pemrograman Java, script tersebut akan lebih mudah untuk dibuat dan dipelajari.

  1. Bahasa pemrograman yang berorientasi terhadap objek

Bahasa pemrograman Java merupakan salah satu bentuk atau jenis bahasa pemrograman yang berorientasi terhadap objek. Artinya setiap aplikasi yang dibangun dengan menggunakan bahasa pemrograman Java akan disesuaikan dengan objek atau bisa juga dengan tampilan dan interface dari aplikasi tersebut.

  1. Bersifat dinamis

Sifat dinamis dari bahasa pemrograman Java ini sangat erat kaitannya dengan kemampuan dari bahasa pemrograman Java yang sangat mudah untuk dikembangkan. Struktur kodenya bisa dengan mudah dimodifikasi dan dikembangkan, sesuai dengan kebutuhan dari user. Sehingga hal ini membuat Java menjadi bahasa pemrograman yang sangat dinamis dan sangat bermanfaat bagi para pengembang aplikasi yang ingin terus mengembangkan aplikasinya hingga bermanfaat bagi para usernya.

4.1.1.2 Javascript

  1. Tidak membutuhkan resource memory besar (ringan dan kecil)

Javascript membutuhkan resource memory yang relative kecil dan ringan. Karena tidak membutuhkan space besar, pastinya penggunaan RAM akan semakin simple. Selain itu, bagi user, aplikasi yang dibuat dengan menggunakan bahasa pemrograman Javascript ini juga dapat dijalankan dengan lebih mudah, dan sangat pas untuk aplikasi yang digunakan sehari-hari.

  1. Mudah untuk dipelajari

Bahasa pemrograman Javascript ini adalah salah satu jenis bahasa pemrograman yang sangat mudah untuk dipelajari. Bahkan, di beberapa sekolah dan kurses mengenai bahasa pemrograman, Javascript adalah salah satu jenis bahasa pemrograman yang wajib dipelajari dan dikuasai oleh para siswa peserta pendidikan tersebut.

  1. Umpan balik data langsung ke pengunjung website

Dengan menggunakan JavaScript, pengunjung tidak perlu menunggu untuk memuat ulang halaman website ketika pengunjung lupa memasukkan data yang kurang lengkap.

  1. Interaktif yang meningkat

JavaScript mendukung antarmuka halaman website yang berinteraksi langsung dengan pengguna ketika pengguna menggunakan keyboard atau mouse dalam memproses data.

  1. Dapat Dikolaborasikan

Javascript mampu berkawan dengan yang lainnya, seperti PHP. Kelebihan macam ini yang membuat pekerjaan developer menjadi lebih cepat selesai. Jika ada fungsi yang tidak mampu dilakukan oleh PHP, jalankan saja pakai JavaScript.

4.1.1.3 Python

  1. Memiliki library yang luas dan banyak

Di dalamnya terdapat berbagai macam kode untuk digunakan seperti regulas expressions, documentation-generation, unit testing, database, CGI, email, dan masih banyak lagi. Sehingga dengan adanya library ini, kita tidak perlu menulis lagi secara manual.

  1. Open Source atau gratis

Python merupakan bahasa pemrograman open source atau dapat di unduh secara gratis. Bahasa satu ini dikembangkan dibawah lisensi open source yang disetujui oleh OSI dimana bahasa pemrograman ini bebas digunakan, dikembangkan, dan di distribusikan, bahkan termasuk tujuan komersial.

  1. Mendukung Internet Of Things (IoT) yang baik

Mampu mendukung ekosistem Internet Of Things (IoT) dengan sangat baik, dimana Python mampu menghubungkan benda-benda disekitar lingkungan kita kedalam sebuah jaring-jaring (internet) yang menghubungkan satu sama lain.

  1. Bahasa yang mudah dipelajari dan mudah digunakan

Kode bahasa Python ini mudah dibaca dan bisa menjalankan banyak fungsi kompleks dengan mudah, karena banyaknya library. Selain itu, proses pengembangan bahasa Python bisa dilakukan dengan cepat menggunakan kode yang lebih sedikit. Bahkan tim kecil pun bisa menangani bahasa Python secara efektif.

  1. Fleksibel

Kode program yang ditulis menggunakan bahasa Python dapat dijalankan di hampir semua sistem operasi seperti Windows, Mac, maupun Linux, termasuk beberapa perangkat-perangkat seluler. Kode Python dapat di integrasikan dengan aplikasi yang ditulis dalam bahasa pemrograman lain dengan mekanisme tertentu.

4.1.2 Kekurangan

4.1.2.1 Java

  1. Mudah di dekompilasi

Dekompilasi merupakan mudahnya pengambilan source code yang ada dalam bahasa pemrograman Java yang sudah dicompile. Sehingga bahasa ini mudah untuk di baca oleh developer lain. Hal ini tentunya berhubungan dengan kerentanan keamanan aplikasi yang dibuat.

  1. Penggunaan memori yang relatif banyak

Java memiliki fitur yang banyak dan sangat memudahkan programmer. Namun sayangnya fitur-fitur tersebut dapat memakan kapasitas memori yang cukup besar.

4.1.2.2 Javascript

  1. Script yang digunakan pada Javascript tidak terenkripsi

Meskipun Javascript adalah bahasa pemrograman yang simple dan mudah dikembangkan, namun ternyata hal ini kontras dengan kemampuan enkripsi dari bahasa pemrograman Javascript. Aplikasi yang dikembangkan dengan menggunakan bahasa pemrograman berbasis Javascript memiliki enkripsi yang lemah, dan cenderung tidak terenkripsi. Hal ini tentu saja menyebabkan aplikasi yang dibuat dengan menggunakan bahasa pemrograman Javascript sangat rentan untuk diretas dan dibajak.

  1. Bukan untuk pengembangan aplikasi stand alone

Merupakan kelemahan, yang juga dampak dari tidak terenkripsinya aplikasi berbasi bahasa pemrograman Javascript. Dengan tingkat keamanan yang sangat rendah, hal ini membuat bahasa pemrograman Javascript hanya bisa dioptimalkan pada sebuah aplikasi yang tergantung pada aplikasi lain.

  1. Memiliki keterbatasan objek

Kelemahan berikutnya dari bahasa pemrograman javascript ini adalah terbatasnya objek. Hal ini ijuga dipengaruhi oleh kondisi umum dari bahasa pemrograman Javascript yang sangat simple dan juga sederhana, sehingga tentu saja hal ini akan sangat mempengaruhi fitur – fitur yang dimiliki oleh bahasa pemrograman Javascript ini.

4.1.2.3 Python

  1. Kurangnya dukungan multiprosesor

Multiprocessing adalah bagian penting dalam penulisan aplikasi. Python memang mendukung multiprocessing, namun mungkin tidak sefleksibel atau senyaman bahasa lain. Itu sebabnya mungkin ini dapat sedikit membatasi kamu saat menulis kode.

  1. Lebih sedikit developers yang berpengalaman

Saat kamu membuat aplikasi, kamu pasti ingin para developer paling berpengalaman yang melakukan pekerjaan itu. Namun, tidak sesederhana itu dengan Python karena tidak banyak ahli programmer yang menggunakan bahasa ini terutama jika dibandingkan dengan Java.

  1. Tidak ideal untuk memory intensive task

Python adalah bahasa yang dikenal dengan fleksibilitas tipe datanya. Hal ini membuatnya menghasilkan konsumsi memori yang cukup tinggi dan menjadi tidak nyaman digunakan untuk memory intensive task.

  1. Kurang populer untuk mobile app development

Python bukan bahasa pemrograman yang populer untuk mobile development. Hanya sedikit perusahaan yang menggunakan bahasa pemrograman ini untuk tujuan tersebut. Karena itu akan sulit menemukan developer yang berpengalaman dalam mobile development yang menggunakan Python.

  1. Batasan desain

Python diketik secara dinamis sehingga memiliki banyak batasan desain. Python bahkan terlihat membutuhkan lebih banyak waktu pengujian dan kesalahan yang muncul ketika aplikasi akhirnya dijalankan.

4.1.3 Hubungan

Hubungan bahasa pemrograman antara yang satu dengan yang lainnya adalah dimana ketiga nya merupakan bahasa program yang dapat digunakan untuk memecahkan dan menyelesaikan suatu tujuan yang masing-masing memiliki keunggulan nya sendiri. Bukan hanya sesama bahasa program, ketiga bahasa program tersebut juga merupakan sesama bahasa program yang berorientasi pada objek (Object Oriented) yang bertujuan untuk mempermudah pengembangan sebuah program. Ketiga nya adalah bahasa program yang dapat di gunakan untuk menyelesaikan suatu tujuan dan masing-masing memiliki spesifikasi serta keunggulannya masing-masing.

LS0tDQp0aXRsZTogIlRVR0FTIDEiDQpzdWJ0aXRsZTogIkFsZ29yaXRtYSBkYW4gU3RydWt0dXIgRGF0YSINCmF1dGhvcjogIkRoZWxhIEFzYWZpYW5pIEFnYXRoYSAoMjAyMTQ5MjAwMDkpIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDogDQogICAgaHRtbF9kb2N1bWVudDogbnVsbA0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIHRoZW1lOiBzYW5kc3RvbmUNCiAgICBjc3M6IHN0eWxlMS5jc3MNCiAgICBoaWdobGlnaHQ6IG1vbm9jaHJvbWUNCi0tLQ0KDQoNCjxpbWcgc3R5bGU9ImZsb2F0OiByaWdodDsgbWFyZ2luOiAwcHggMTAwcHggMHB4IDBweDsgd2lkdGg6MjUlIiBzcmM9ImRlbGFhYS5qcGciLz4gDQoNCmBgYHtyIGxvZ28sIGVjaG89RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoPSAnMzAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJkb3dubG9hZGQucG5nIikNCmBgYA0KDQpFbWFpbCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbmJzcDs6ICBkaGVsYWFnYXRoYUBnbWFpbC5jb20gPGJyPg0KUlB1YnMgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzogaHR0cHM6Ly9ycHVicy5jb20vZGhlbGFhc2FmaWFuaSA8YnI+DQpKdXJ1c2FuICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs6IFtTdGF0aXN0aWthIEJpc25pc10oaHR0cHM6Ly9tYXRhbmF1bml2ZXJzaXR5LmFjLmlkLz9seT1hY2FkZW1pYyZjPXNiKSA8YnI+DQpBZGRyZXNzICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IEFSQSBDZW50ZXIsIE1hdGFuYSBVbml2ZXJzaXR5IFRvd2VyIDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7IEpsLiBDQkQgQmFyYXQgS2F2LCBSVC4xLCBDdXJ1ZyBTYW5nZXJlbmcsIEtlbGFwYSBEdWEsIFRhbmdlcmFuZywgQmFudGVuIDE1ODEwLg0KDQoqKioqDQoNCiMgU29hbCBub21vciAxDQoNCkNhcmlsYWggRGVmaW5pc2kgQWxnb3JpdG1hIGRhbiBTdHJ1a3R1ciBEYXRhIGRhbGFtIGJlcmJhZ2FpIGJpZGFuZyBpbG11IChDb250b2g6IFNhaW5zIERhdGEsIEZpc2lrYSwgVGVrbmlrIEluZm9ybWF0aWthLCBkYW4gU2lzdGVtIEluZm9ybWFzaSkhDQoNCiMjIEphd2FiYW4gbm9tb3IgMQ0KDQojIyMgU2FpbnMgRGF0YQ0KDQpBbGdvcml0bWEgYWRhbGFoIHNla3VtcHVsYW4gaW5zdHJ1a3NpIHlhbmcgZGlyYW5jYW5nIGRlbmdhbiBiYWlrLCBsYW5na2FoIGRlbWkgbGFuZ2thaCB5YW5nIGRpcmFuY2FuZyB1bnR1ayBtZW1lY2Foa2FuIG1hc2FsYWggYXRhdSBtZWxha3VrYW4gdHVnYXMgdGVydGVudHUuIFR1Z2FzIGRhcGF0IGJlcnVwYSBzZXN1YXR1IHlhbmcgc2VkZXJoYW5hIHNlcGVydGkgbWVuZ2FsaWthbiBkdWEgYW5na2EsIGF0YXUgb3BlcmFzaSB5YW5nIGxlYmloIGtvbXBsZWtzLCBzZXBlcnRpIG1lbXV0YXIgZmlsZSBtdXNpay4NCg0KU3RydWt0dXIgRGF0YSBhZGFsYWggcGVycGFkdWFuIGRhcmkgb3JnYW5pc2FzaSBkYXRhLCBtYW5hamVtZW4sIHBlbmdhbWJpbGFuLCBkYW4gcGVueWltcGFuYW4sIGRpc2F0dWthbiBrZSBkYWxhbSBzYXR1IGZvcm1hdCB5YW5nIG1lbXVuZ2tpbmthbiBha3NlcyBkYW4gbW9kaWZpa2FzaSB5YW5nIGVmaXNpZW4uIEluaSBtZW5ndW1wdWxrYW4gbmlsYWkgZGF0YSwgaHVidW5nYW4geWFuZyBtZXJla2EgYmFnaWthbiwgZGFuIGZ1bmdzaSBhdGF1IG9wZXJhc2kgeWFuZyBiZXJsYWt1Lg0KDQojIyMgRmlzaWthDQoNCkFsZ29yaXRtYSBhZGFsYWggdXJ1dGFuIHBlcm55YXRhYW4geWFuZyB0ZXJzdXN1biBkYW4gbWVtaWxpa2kgYXJ0aSB5YW5nIHRpZGFrIGFtYmlndSB1bnR1ayBtZW1lY2Foa2FuIHN1YXR1IG1hc2FsYWggc2VwZXJ0aSBkYWxhbSBiaWRhbmcgZmlzaWthIHlhaXR1IGRhbGFtIG1lbmVudHVrYW4gc3RydWt0dXIgbW9sZWt1bCwgbWVtcGVya2lyYWthbiBwYXJhbWV0ZXIgZ2FsYWtzaSB5YW5nIGJlcmludGVyYWtzaSwga2VhZGFhbiBkYXNhciBzaXN0ZW0ga3VhbnR1bSBlbGVrdHJvbmlrLCBwZXJpbGFrdSBiYWhhbiBtYWduZXRpayB5YW5nIHRpZGFrIHRlcmF0dXIsIGRhbiB0cmFuc2lzaSBmYXNlIGRhbGFtIG1hc2FsYWggb3B0aW1hc2kga29tYmluYXRvcmlhbCwgZGFuIG1hc2loIGJhbnlhayBsYWdpLg0KDQpTdHJ1a3R1ciBEYXRhIGFkYWxhaCBjYXJhIHRlcnRlbnR1IHVudHVrIG1lbmdhdHVyIGRhdGEgc2VoaW5nZ2EgZGFwYXQgZGlndW5ha2FuIHNlY2FyYSBlZmVrdGlmIHlhbmcgc2FuZ2F0IHBlbnRpbmcgZGFsYW0gYmFueWFrIGNhYmFuZyBmaXNpa2EgZGFuIHBlbmVsaXRpYW4gdGVvcmV0aXMgc2VyaW5nIGthbGkgbWVuZ2hhc2lsa2FuIHRla25payBzaW11bGFzaSBiYXJ1IHlhbmcgZnVuZGFtZW50YWwgdW50dWsgZGlpbXBsZW1lbnRhc2lrYW4gZGFuIGRpZXZhbHVhc2kNCg0KIyMjIFRla25payBJbmZvcm1hdGlrYQ0KDQpBbGdvcml0bWEgYWRhbGFoIHByb3NlZHVyIGRhcmkgYmVyYmFnYWkgbWFjYW0gbGFuZ2thaC1sYW5na2FoIHBlbmdoaXR1bmdhbiwgcGVuYWxhcmFuIHNlY2FyYSBvdG9tYXRpcywgc2FtcGFpIHBlbXJvc2VzYW4gZGF0YSB1bnR1ayBtZW55ZWxlc2Fpa2FuIHN1YXR1IG1hc2FsYWguDQoNClN0cnVrdHVyIERhdGEgYWRhbGFoIHNlYnVhaCBzdHJ1a3R1ciBkYXRhIG1lcnVwYWthbiBzdWF0dSBpbG11IHlhbmcgbWVtcGVsYWphcmkgc2lzdGVtIHBlbmdvcmdhbmlzYXNpYW4gZGF0YSBwYWRhIG1lbW9yaSBrb21wdXRlciBtYXVwdW4gZmlsZSAoYmVya2FzKSBwYWRhIHN1YXR1IG1lZGlhIHBlbnlpbXBhbmFuIGRlbmdhbiBtZW5nZ3VuYWthbiBzdHJ1a3R1ciBkYXRhIGFycmF5LCBzdHJ1Y3QsIHRyZWUsIGRhbiBmaWxlIG1lbmdndW5ha2FuIHRla25pay10ZWtuaWsgc2VwZXJ0aSBzdGFjaywgcXVldWUsIGRhbiBsaW5rZWQgbGlzdCBzZXJ0YSBoYXNoaW5nLg0KDQojIyMgU2lzdGVtIEluZm9ybWFzaQ0KDQpBbGdvcnRpbWEgYWRhbGFoIHByb3NlcyBhdGF1IHNlcmFuZ2thaWFuIGF0dXJhbiB5YW5nIGhhcnVzIGRpaWt1dGkgZGFsYW0gcGVyaGl0dW5nYW4gYXRhdSBvcGVyYXNpIHBlbWVjYWhhbiBtYXNhbGFoIGxhaW5ueWEsIHRlcnV0YW1hIG9sZWgga29tcHV0ZXIuIERlbmdhbiBrYXRhIGxhaW4sIHNlbXVhIHN1c3VuYW4gbG9naXMgeWFuZyBkaXVydXRrYW4gYmVyZGFzYXJrYW4gc2lzdGVtYXRpa2EgdGVydGVudHUgZGFuIGRpZ3VuYWthbiB1bnR1ayBtZW1lY2Foa2FuIHN1YXR1IG1hc2FsYWguDQoNClN0cnVrdHVyIERhdGEgYWRhbGFoIHN0cnVrdHVyIGRhdGEgYWRhbGFoIGNhcmEgcGVueWltcGFuYW4sIHBlbnl1c3VuYW4gZGFuIHBlbmdhdHVyYW4gZGF0YSBkaSBkYWxhbSBtZWRpYSBwZW55aW1wYW5hbiBrb21wdXRlciBzZWhpbmdnYSBkYXRhIHRlcnNlYnV0IGRhcGF0IGRpZ3VuYWthbiBzZWNhcmEgZWZpc2llbi4NCg0KIyBTb2FsIG5vbW9yIDINCg0KIFNlYmFnYWkgbWFoYXNpc3dhIGJ1YXRsYWggYWxnb3JpdG1hIGRhbiBmbG93Y2hhcnQgeWFuZyBhbmRhIGxha3VrYW4gdW50dWsgbWVuY2FwYWkga2VsdWx1c2FuIHNhcmphbmEgZGVuZ2FuIElQSyBtaW5pbWFsIDMuNSBkYXJpIFVuaXZlcnNpdGFzIE1hdGFuYSENCg0KIyMgSmF3YWJhbiBub21vciAyDQoNCiMjIyBBbGdvcml0bWENCg0KVGFoYXBhbiB5YW5nIHBlcmx1IGRpbGFrdWthbiB1bnR1ayBtZW5jYXBhaSBrZWx1bHVzYW4gc2FyamFuYSBkZW5nYW4gSVBLIG1pbmltYWwgMy41IGRhcmkgVW5pdmVyc2l0YXMgTWF0YW5hLCBhbnRhcmEgbGFpbjoNCg0KMS4JRGFmdGFyIGtlIGthbXB1cyBNYXRhbmENCjIuCVBpbGloIHByb2RpDQozLglNYXN1ayBrYW1wdXMgTWF0YW5hDQo0LglNZW5naWt1dGkgc2V0aWFwIGtlbGFzIHlhbmcgYWRhDQo1LglCZWxhamFyIGRlbmdhbiBnaWF0DQo2LglNZW5nZXJqYWthbiB0dWdhcyBkYW4gbGF0aWhhbiB5YW5nIGFkYQ0KNy4JTWVuZ2lrdXRpIHVqaWFuIHNlbWVzdGVyDQo4LglMYWt1a2FuIGhpbmdnYSBzZW1lc3RlciA3IChKaWthIGJlbHVtIG1lbmNhcGFpIHNlbWVzdGVyIDcsIHVsYW5naSBsYW5na2FoIGtlbWJhbGkgZGFyaSBsYW5na2FoIDQuIEppa2Egc3VkYWggbWVuY2FwYWkgc2VtZXN0ZXIgNywgbGFuanV0IGtlIGxhbmdrYWggc2VsYW5qdXRueWEpDQo5LglNYWdhbmcNCjEwLglNZW55dXN1biBza3JpcHNpDQoxMS4JQXBwcm92ZSBTa3JpcHNpIChKaWthIGJlbHVtLCBsYWt1a2FuIHJldmlzaSBza3JpcHNpLiBKaWthIHN1ZGFoIGRpIGFwcHJvdmUsIGxhbmp1dCBrZSBsYW5na2FoIHNlbGFuanV0bnlhKQ0KMTIuCVNrcmlwc2kNCjEzLglMdWx1cyBkZW5nYW4gSVBLIHlhbmcgdGVyYmFpayAoZGkgYXRhcyAzLjUpDQoNCiMjIyBGbG93Y2hhcnQNCg0KPGltZyBzcmM9IkZMT1dDSEFSVDYucG5nIi8+DQoNCiMgU29hbCBub21vciAzDQoNCk1lbmdhcGEgQW5kYSBoYXJ1cyBiZWxhamFyIEFsZ29yaXRtYSBkYW4gU3RydWt0dXIgRGF0YT8NCg0KIyMgSmF3YWJhbiBub21vciAzDQoNCjEuIE1lbGF0aWggYmVycGlraXIgc2VjYXJhIGVmaXNpZW5zaQ0KMi4gTWVtcGVybXVkYWggZGFsYW0gbWVueWVsZXNhaWthbiBzdWF0dSBwZXJtYXNhbGFoYW4gZGVuZ2FuIGRhdGEtZGF0YSB5YW5nIHN1ZGFoIHRlcnN0cnVrdHVyIGRhbiB0ZXJzZWRpYQ0KMy4gS2V0aWthIHN0cnVrdHVyIGRhdGEgbWVtYmFudHUga2l0YSB1bnR1ayBtZW5nZ3VuYWthbiBkYXRhIHNlY2FyYSBlZmlzaWVuLCBhbGdvcml0bWEgbWVtYmFudHUga2l0YSB1bnR1ayBtZW5hbXBpbGthbiBvcGVyYXNpIHlhbmcgYmVyYmVkYSBkYXJpIGRhdGEgdGVyc2VidXQgc2VjYXJhIGVmaXNpZW4NCjQuIE1lbXVkYWhrYW4gZGFsYW0gcGVuZ2F0dXJhbiBkYXRhDQo1LiBEYWxhbSBtZXd1anVka2FuIGlkZSBtZW5qYWRpIGtlbnlhdGFhbiwgc2VwZXJ0aSBtZXJhbmNhbmcgc2VidWFoIHByb2dyYW0NCjYuIERhcGF0IGJlcmd1bmEgZGFsYW0gYmVyYmFnYWkgYmlkYW5nIGlsbXUNCg0KIyBTb2FsIG5vbW9yIDQNCg0KU2VidXRrYW4gMyBiYWhhc2EgcGVtcm9ncmFtYW4geWFuZyB5YW5nIHBhbGluZyBiYW55YWsgZGlndW5ha2FuIGRhbGFtIFNhaW5zIERhdGEsIEJlcmlrYW4gcGVuamVsYXNhbiBrZWxlYmloYW4sIGtla3VyYW5nYW4sIGRhbiBodWJ1bmdhbiBiYWhhc2EgcGVtcm9nYW1hbiB5YW5nIHNhdHUgZGVuZ2FuIHlhbmcgbGFpbm55YS4NCg0KIyMgSmF3YWJhbiBub21vciA0DQoNCkphdmEsIEphdmFzY3JpcHQsIGRhbiBQeXRob24NCg0KIyMjIEtlbGViaWhhbg0KDQojIyMjIEphdmEgDQoNCjEuIE11ZGFoIFVudHVrIERpa2VtYmFuZ2thbg0KDQpLZW11ZGFoYW4gZGFsYW0gaGFsIHBlbmdlbWJhbmdhbiBhcGxpa2FzaS4gU2V0aWFwIGFwbGlrYXNpIGF0YXVwdW4gcHJvZ3JhbSB5YW5nIGRpYnVhdCBkZW5nYW4gbWVuZ2d1bmFrYW4gZGFzYXIgYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmEgbWVtaWxpa2kga2VtYW1wdWFuIHlhbmcgc2FuZ2F0IGJhaWsgdW50dWsgZGlsYWt1a2FuIHBlbmdlbWJhbmdhbiBsZWJpaCBsYW5qdXQuDQoNCjIuIFNpZmF0bnlhIG11bHRpcGxhdGZvcm0NCg0KSmF2YSBtZXJ1cGFrYW4gc2FsYWggc2F0dSBiYWhhc2EgcGVtcm9ncmFtYW4geWFuZyBzaWZhdG55YSBtdWx0aSBwbGF0Zm9ybSBhdGF1IHVuaXZlcnNhbCBkYW4gYmlzYSBkaWd1bmFrYW4gZGFsYW0gcGxhdGZvcm0gYXBhcHVuLiBNdWxhaSBkYXJpIGtvbXB1dGVyIGRlc2t0b3AgeWFuZyBtbmdndW5ha2FuIFdpbmRvd3MsIExpbnV4IGRhbiBzaXN0ZW0gb3BlcmFzaSBsYWluLCBzbWFydHBob25lIGJlcmJhc2lzIEFuZHJvaWQgZGFuIFdpbmRvd3MsIGJhaGthbiBoaW5nZ2EgaGFuZHBob25lIGJpYXNhIHlhbmcgdGlkYWsgbWVuZ2d1bmFrYW4gc2lzdGVtIG9wZXJhc2kgcHVuIG1hbXB1IHVudHVrIG1lbmphbGFua2FuIGFwbGlrYXNpIGRhbiBwcm9ncmFtIHlhbmcgZGlidWF0IGRlbmdhbiBtZW5nZ3VuYWthbiBiYWhhc2EgcGVtcm9ncmFtYW4gSmF2YS4gSGFsIGluaSB5YW5nIG1lbWJ1YXQgSmF2YSB1bmdndWwgZGFsYW0gcGVtYnVhdGFuIGFwbGlrYXNpIGRhbiBzb2Z0d2FyZS4NCg0KMy4gTWVtaWxpa2kga2VtdWRhaGFuIGRhbGFtIG1lbnl1c3VuIHN1YXR1IHNjcmlwdA0KDQpQYXJhIHByb2dyYW1tZXIgZGFuIGRldmVsb3BlciBkYWxhbSBtZW55dXN1biBzZWJ1YWggcHJvZ3JhbSwgaGFydXNsYWggbWVuZ2d1bmFrYW4gc2VidWFoIHNjcmlwdCwgYWdhciBwcm9ncmFtIHRlcnNlYnV0IGRhcGF0IGJlcmphbGFuLiBEZW5nYW4gbWVuZ2d1bmFrYW4gYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmEsIHNjcmlwdCB0ZXJzZWJ1dCBha2FuIGxlYmloIG11ZGFoIHVudHVrIGRpYnVhdCBkYW4gZGlwZWxhamFyaS4NCg0KNC4gQmFoYXNhIHBlbXJvZ3JhbWFuIHlhbmcgYmVyb3JpZW50YXNpIHRlcmhhZGFwIG9iamVrDQoNCkJhaGFzYSBwZW1yb2dyYW1hbiBKYXZhIG1lcnVwYWthbiBzYWxhaCBzYXR1IGJlbnR1ayBhdGF1IGplbmlzIGJhaGFzYSBwZW1yb2dyYW1hbiB5YW5nIGJlcm9yaWVudGFzaSB0ZXJoYWRhcCBvYmplay4gQXJ0aW55YSBzZXRpYXAgYXBsaWthc2kgeWFuZyBkaWJhbmd1biBkZW5nYW4gbWVuZ2d1bmFrYW4gYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmEgYWthbiBkaXNlc3VhaWthbiBkZW5nYW4gb2JqZWsgYXRhdSBiaXNhIGp1Z2EgZGVuZ2FuIHRhbXBpbGFuIGRhbiBpbnRlcmZhY2UgZGFyaSBhcGxpa2FzaSB0ZXJzZWJ1dC4NCg0KNS4gQmVyc2lmYXQgZGluYW1pcw0KDQpTaWZhdCBkaW5hbWlzIGRhcmkgYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmEgaW5pIHNhbmdhdCBlcmF0IGthaXRhbm55YSBkZW5nYW4ga2VtYW1wdWFuIGRhcmkgYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmEgeWFuZyBzYW5nYXQgbXVkYWggdW50dWsgZGlrZW1iYW5na2FuLiBTdHJ1a3R1ciBrb2RlbnlhIGJpc2EgZGVuZ2FuIG11ZGFoIGRpbW9kaWZpa2FzaSBkYW4gZGlrZW1iYW5na2FuLCBzZXN1YWkgZGVuZ2FuIGtlYnV0dWhhbiBkYXJpIHVzZXIuDQpTZWhpbmdnYSBoYWwgaW5pIG1lbWJ1YXQgSmF2YSBtZW5qYWRpIGJhaGFzYSBwZW1yb2dyYW1hbiB5YW5nIHNhbmdhdCBkaW5hbWlzIGRhbiBzYW5nYXQgYmVybWFuZmFhdCBiYWdpIHBhcmEgcGVuZ2VtYmFuZyBhcGxpa2FzaSB5YW5nIGluZ2luIHRlcnVzIG1lbmdlbWJhbmdrYW4gYXBsaWthc2lueWEgaGluZ2dhIGJlcm1hbmZhYXQgYmFnaSBwYXJhIHVzZXJueWEuDQoNCiMjIyMgSmF2YXNjcmlwdA0KDQoxLiBUaWRhayBtZW1idXR1aGthbiByZXNvdXJjZSBtZW1vcnkgYmVzYXIgKHJpbmdhbiBkYW4ga2VjaWwpDQoNCkphdmFzY3JpcHQgbWVtYnV0dWhrYW4gcmVzb3VyY2UgbWVtb3J5IHlhbmcgcmVsYXRpdmUga2VjaWwgZGFuIHJpbmdhbi4gS2FyZW5hIHRpZGFrIG1lbWJ1dHVoa2FuIHNwYWNlIGJlc2FyLCBwYXN0aW55YSBwZW5nZ3VuYWFuIFJBTSBha2FuIHNlbWFraW4gc2ltcGxlLiBTZWxhaW4gaXR1LCBiYWdpIHVzZXIsIGFwbGlrYXNpIHlhbmcgZGlidWF0IGRlbmdhbiBtZW5nZ3VuYWthbiBiYWhhc2EgcGVtcm9ncmFtYW4gSmF2YXNjcmlwdCBpbmkganVnYSBkYXBhdCBkaWphbGFua2FuIGRlbmdhbiBsZWJpaCBtdWRhaCwgZGFuIHNhbmdhdCBwYXMgdW50dWsgYXBsaWthc2kgeWFuZyBkaWd1bmFrYW4gc2VoYXJpLWhhcmkuDQoNCjIuIE11ZGFoIHVudHVrIGRpcGVsYWphcmkNCg0KQmFoYXNhIHBlbXJvZ3JhbWFuIEphdmFzY3JpcHQgaW5pIGFkYWxhaCBzYWxhaCBzYXR1IGplbmlzIGJhaGFzYSBwZW1yb2dyYW1hbiB5YW5nIHNhbmdhdCBtdWRhaCB1bnR1ayBkaXBlbGFqYXJpLiBCYWhrYW4sIGRpIGJlYmVyYXBhIHNla29sYWggZGFuIGt1cnNlcyBtZW5nZW5haSBiYWhhc2EgcGVtcm9ncmFtYW4sIEphdmFzY3JpcHQgYWRhbGFoIHNhbGFoIHNhdHUgamVuaXMgYmFoYXNhIHBlbXJvZ3JhbWFuIHlhbmcgd2FqaWIgZGlwZWxhamFyaSBkYW4gZGlrdWFzYWkgb2xlaCBwYXJhIHNpc3dhIHBlc2VydGEgcGVuZGlkaWthbiB0ZXJzZWJ1dC4gDQoNCjMuIFVtcGFuIGJhbGlrIGRhdGEgbGFuZ3N1bmcga2UgcGVuZ3VuanVuZyB3ZWJzaXRlDQoNCkRlbmdhbiBtZW5nZ3VuYWthbiBKYXZhU2NyaXB0LCBwZW5ndW5qdW5nIHRpZGFrIHBlcmx1IG1lbnVuZ2d1IHVudHVrIG1lbXVhdCB1bGFuZyBoYWxhbWFuIHdlYnNpdGUga2V0aWthIHBlbmd1bmp1bmcgbHVwYSBtZW1hc3Vra2FuIGRhdGEgeWFuZyBrdXJhbmcgbGVuZ2thcC4NCg0KNC4gSW50ZXJha3RpZiB5YW5nIG1lbmluZ2thdA0KDQpKYXZhU2NyaXB0IG1lbmR1a3VuZyBhbnRhcm11a2EgaGFsYW1hbiB3ZWJzaXRlIHlhbmcgYmVyaW50ZXJha3NpIGxhbmdzdW5nIGRlbmdhbiBwZW5nZ3VuYSBrZXRpa2EgcGVuZ2d1bmEgbWVuZ2d1bmFrYW4ga2V5Ym9hcmQgYXRhdSBtb3VzZSBkYWxhbSBtZW1wcm9zZXMgZGF0YS4NCg0KNS4gRGFwYXQgRGlrb2xhYm9yYXNpa2FuIA0KDQpKYXZhc2NyaXB0IG1hbXB1IGJlcmthd2FuIGRlbmdhbiB5YW5nIGxhaW5ueWEsIHNlcGVydGkgUEhQLiBLZWxlYmloYW4gbWFjYW0gaW5pIHlhbmcgbWVtYnVhdCBwZWtlcmphYW4gZGV2ZWxvcGVyIG1lbmphZGkgbGViaWggY2VwYXQgc2VsZXNhaS4gSmlrYSBhZGEgZnVuZ3NpIHlhbmcgdGlkYWsgbWFtcHUgZGlsYWt1a2FuIG9sZWggUEhQLCBqYWxhbmthbiBzYWphIHBha2FpIEphdmFTY3JpcHQuDQoNCiMjIyMgUHl0aG9uDQoNCjEuIE1lbWlsaWtpIGxpYnJhcnkgeWFuZyBsdWFzIGRhbiBiYW55YWsNCg0KRGkgZGFsYW1ueWEgdGVyZGFwYXQgYmVyYmFnYWkgbWFjYW0ga29kZSB1bnR1ayBkaWd1bmFrYW4gc2VwZXJ0aSByZWd1bGFzIGV4cHJlc3Npb25zLCBkb2N1bWVudGF0aW9uLWdlbmVyYXRpb24sIHVuaXQgdGVzdGluZywgZGF0YWJhc2UsIENHSSwgZW1haWwsIGRhbiBtYXNpaCBiYW55YWsgbGFnaS4gU2VoaW5nZ2EgZGVuZ2FuIGFkYW55YSBsaWJyYXJ5IGluaSwga2l0YSB0aWRhayBwZXJsdSBtZW51bGlzIGxhZ2kgc2VjYXJhIG1hbnVhbC4NCg0KMi4gT3BlbiBTb3VyY2UgYXRhdSBncmF0aXMNCg0KUHl0aG9uIG1lcnVwYWthbiBiYWhhc2EgcGVtcm9ncmFtYW4gb3BlbiBzb3VyY2UgYXRhdSBkYXBhdCBkaSB1bmR1aCBzZWNhcmEgZ3JhdGlzLiBCYWhhc2Egc2F0dSBpbmkgZGlrZW1iYW5na2FuIGRpYmF3YWggbGlzZW5zaSBvcGVuIHNvdXJjZSB5YW5nIGRpc2V0dWp1aSBvbGVoIE9TSSBkaW1hbmEgYmFoYXNhIHBlbXJvZ3JhbWFuIGluaSBiZWJhcyBkaWd1bmFrYW4sIGRpa2VtYmFuZ2thbiwgZGFuIGRpIGRpc3RyaWJ1c2lrYW4sIGJhaGthbiB0ZXJtYXN1ayB0dWp1YW4ga29tZXJzaWFsLg0KDQozLiBNZW5kdWt1bmcgSW50ZXJuZXQgT2YgVGhpbmdzIChJb1QpIHlhbmcgYmFpaw0KDQpNYW1wdSBtZW5kdWt1bmcgZWtvc2lzdGVtIEludGVybmV0IE9mIFRoaW5ncyAoSW9UKSBkZW5nYW4gc2FuZ2F0IGJhaWssIGRpbWFuYSBQeXRob24gbWFtcHUgbWVuZ2h1YnVuZ2thbiBiZW5kYS1iZW5kYSBkaXNla2l0YXIgbGluZ2t1bmdhbiBraXRhIGtlZGFsYW0gc2VidWFoIGphcmluZy1qYXJpbmcgKGludGVybmV0KSB5YW5nIG1lbmdodWJ1bmdrYW4gc2F0dSBzYW1hIGxhaW4uDQoNCjQuIEJhaGFzYSB5YW5nIG11ZGFoIGRpcGVsYWphcmkgZGFuIG11ZGFoIGRpZ3VuYWthbg0KDQpLb2RlIGJhaGFzYSBQeXRob24gaW5pIG11ZGFoIGRpYmFjYSBkYW4gYmlzYSBtZW5qYWxhbmthbiBiYW55YWsgZnVuZ3NpIGtvbXBsZWtzIGRlbmdhbiBtdWRhaCwga2FyZW5hIGJhbnlha255YSBsaWJyYXJ5LiBTZWxhaW4gaXR1LCBwcm9zZXMgcGVuZ2VtYmFuZ2FuIGJhaGFzYSBQeXRob24gYmlzYSBkaWxha3VrYW4gZGVuZ2FuIGNlcGF0IG1lbmdndW5ha2FuIGtvZGUgeWFuZyBsZWJpaCBzZWRpa2l0LiBCYWhrYW4gdGltIGtlY2lsIHB1biBiaXNhIG1lbmFuZ2FuaSBiYWhhc2EgUHl0aG9uIHNlY2FyYSBlZmVrdGlmLg0KDQo1LiBGbGVrc2liZWwNCg0KS29kZSBwcm9ncmFtIHlhbmcgZGl0dWxpcyBtZW5nZ3VuYWthbiBiYWhhc2EgUHl0aG9uIGRhcGF0IGRpamFsYW5rYW4gZGkgaGFtcGlyIHNlbXVhIHNpc3RlbSBvcGVyYXNpIHNlcGVydGkgV2luZG93cywgTWFjLCBtYXVwdW4gTGludXgsIHRlcm1hc3VrIGJlYmVyYXBhIHBlcmFuZ2thdC1wZXJhbmdrYXQgc2VsdWxlci4gS29kZSBQeXRob24gZGFwYXQgZGkgaW50ZWdyYXNpa2FuIGRlbmdhbiBhcGxpa2FzaSB5YW5nIGRpdHVsaXMgZGFsYW0gYmFoYXNhIHBlbXJvZ3JhbWFuIGxhaW4gZGVuZ2FuIG1la2FuaXNtZSB0ZXJ0ZW50dS4gDQoNCiMjIyBLZWt1cmFuZ2FuDQoNCiMjIyMgSmF2YQ0KDQoxLiBNdWRhaCBkaSBkZWtvbXBpbGFzaQ0KDQpEZWtvbXBpbGFzaSBtZXJ1cGFrYW4gbXVkYWhueWEgcGVuZ2FtYmlsYW4gc291cmNlIGNvZGUgeWFuZyBhZGEgZGFsYW0gYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmEgeWFuZyBzdWRhaCBkaWNvbXBpbGUuIFNlaGluZ2dhIGJhaGFzYSBpbmkgbXVkYWggdW50dWsgZGkgYmFjYSBvbGVoIGRldmVsb3BlciBsYWluLiBIYWwgaW5pIHRlbnR1bnlhIGJlcmh1YnVuZ2FuIGRlbmdhbiBrZXJlbnRhbmFuIGtlYW1hbmFuIGFwbGlrYXNpIHlhbmcgZGlidWF0Lg0KDQoyLiBQZW5nZ3VuYWFuIG1lbW9yaSB5YW5nIHJlbGF0aWYgYmFueWFrDQoNCkphdmEgbWVtaWxpa2kgZml0dXIgeWFuZyBiYW55YWsgZGFuIHNhbmdhdCBtZW11ZGFoa2FuIHByb2dyYW1tZXIuIE5hbXVuIHNheWFuZ255YSBmaXR1ci1maXR1ciB0ZXJzZWJ1dCBkYXBhdCBtZW1ha2FuIGthcGFzaXRhcyBtZW1vcmkgeWFuZyBjdWt1cCBiZXNhci4NCg0KIyMjIyBKYXZhc2NyaXB0DQoNCjEuIFNjcmlwdCB5YW5nIGRpZ3VuYWthbiBwYWRhIEphdmFzY3JpcHQgdGlkYWsgdGVyZW5rcmlwc2kNCg0KTWVza2lwdW4gSmF2YXNjcmlwdCBhZGFsYWggYmFoYXNhIHBlbXJvZ3JhbWFuIHlhbmcgc2ltcGxlIGRhbiBtdWRhaCBkaWtlbWJhbmdrYW4sIG5hbXVuIHRlcm55YXRhIGhhbCBpbmkga29udHJhcyBkZW5nYW4ga2VtYW1wdWFuIGVua3JpcHNpIGRhcmkgYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmFzY3JpcHQuIEFwbGlrYXNpIHlhbmcgZGlrZW1iYW5na2FuIGRlbmdhbiBtZW5nZ3VuYWthbiBiYWhhc2EgcGVtcm9ncmFtYW4gYmVyYmFzaXMgSmF2YXNjcmlwdCBtZW1pbGlraSBlbmtyaXBzaSB5YW5nIGxlbWFoLCBkYW4gY2VuZGVydW5nIHRpZGFrIHRlcmVua3JpcHNpLg0KSGFsIGluaSB0ZW50dSBzYWphIG1lbnllYmFia2FuIGFwbGlrYXNpIHlhbmcgZGlidWF0IGRlbmdhbiBtZW5nZ3VuYWthbiBiYWhhc2EgcGVtcm9ncmFtYW4gSmF2YXNjcmlwdCBzYW5nYXQgcmVudGFuIHVudHVrIGRpcmV0YXMgZGFuIGRpYmFqYWsuDQoNCjIuIEJ1a2FuIHVudHVrIHBlbmdlbWJhbmdhbiBhcGxpa2FzaSBzdGFuZCBhbG9uZQ0KDQpNZXJ1cGFrYW4ga2VsZW1haGFuLCB5YW5nIGp1Z2EgZGFtcGFrIGRhcmkgdGlkYWsgdGVyZW5rcmlwc2lueWEgYXBsaWthc2kgYmVyYmFzaSBiYWhhc2EgcGVtcm9ncmFtYW4gSmF2YXNjcmlwdC4gRGVuZ2FuIHRpbmdrYXQga2VhbWFuYW4geWFuZyBzYW5nYXQgcmVuZGFoLCBoYWwgaW5pIG1lbWJ1YXQgYmFoYXNhIHBlbXJvZ3JhbWFuIEphdmFzY3JpcHQgaGFueWEgYmlzYSBkaW9wdGltYWxrYW4gcGFkYSBzZWJ1YWggYXBsaWthc2kgeWFuZyB0ZXJnYW50dW5nIHBhZGEgYXBsaWthc2kgbGFpbi4NCg0KMy4gTWVtaWxpa2kga2V0ZXJiYXRhc2FuIG9iamVrDQoNCktlbGVtYWhhbiBiZXJpa3V0bnlhIGRhcmkgYmFoYXNhIHBlbXJvZ3JhbWFuIGphdmFzY3JpcHQgaW5pIGFkYWxhaCB0ZXJiYXRhc255YSBvYmplay4gSGFsIGluaSBpanVnYSBkaXBlbmdhcnVoaSBvbGVoIGtvbmRpc2kgdW11bSBkYXJpIGJhaGFzYSBwZW1yb2dyYW1hbiBKYXZhc2NyaXB0IHlhbmcgc2FuZ2F0IHNpbXBsZSBkYW4ganVnYSBzZWRlcmhhbmEsIHNlaGluZ2dhIHRlbnR1IHNhamEgaGFsIGluaSBha2FuIHNhbmdhdCBtZW1wZW5nYXJ1aGkgZml0dXIg4oCTIGZpdHVyIHlhbmcgZGltaWxpa2kgb2xlaCBiYWhhc2EgcGVtcm9ncmFtYW4gSmF2YXNjcmlwdCBpbmkuDQoNCiMjIyMgUHl0aG9uDQoNCjEuIEt1cmFuZ255YSBkdWt1bmdhbiBtdWx0aXByb3Nlc29yDQoNCk11bHRpcHJvY2Vzc2luZyBhZGFsYWggYmFnaWFuIHBlbnRpbmcgZGFsYW0gcGVudWxpc2FuIGFwbGlrYXNpLiBQeXRob24gbWVtYW5nIG1lbmR1a3VuZyBtdWx0aXByb2Nlc3NpbmcsIG5hbXVuIG11bmdraW4gdGlkYWsgc2VmbGVrc2liZWwgYXRhdSBzZW55YW1hbiBiYWhhc2EgbGFpbi4gSXR1IHNlYmFibnlhIG11bmdraW4gaW5pIGRhcGF0IHNlZGlraXQgbWVtYmF0YXNpIGthbXUgc2FhdCBtZW51bGlzIGtvZGUuIA0KDQoyLiBMZWJpaCBzZWRpa2l0IGRldmVsb3BlcnMgeWFuZyBiZXJwZW5nYWxhbWFuIA0KDQpTYWF0IGthbXUgbWVtYnVhdCBhcGxpa2FzaSwga2FtdSBwYXN0aSBpbmdpbiBwYXJhIGRldmVsb3BlciBwYWxpbmcgYmVycGVuZ2FsYW1hbiB5YW5nIG1lbGFrdWthbiBwZWtlcmphYW4gaXR1LiBOYW11biwgdGlkYWsgc2VzZWRlcmhhbmEgaXR1IGRlbmdhbiBQeXRob24ga2FyZW5hIHRpZGFrIGJhbnlhayBhaGxpIHByb2dyYW1tZXIgeWFuZyBtZW5nZ3VuYWthbiBiYWhhc2EgaW5pIHRlcnV0YW1hIGppa2EgZGliYW5kaW5na2FuIGRlbmdhbiBKYXZhLg0KDQozLiBUaWRhayBpZGVhbCB1bnR1ayBtZW1vcnkgaW50ZW5zaXZlIHRhc2sgDQoNClB5dGhvbiBhZGFsYWggYmFoYXNhIHlhbmcgZGlrZW5hbCBkZW5nYW4gZmxla3NpYmlsaXRhcyB0aXBlIGRhdGFueWEuIEhhbCBpbmkgbWVtYnVhdG55YSBtZW5naGFzaWxrYW4ga29uc3Vtc2kgbWVtb3JpIHlhbmcgY3VrdXAgdGluZ2dpIGRhbiBtZW5qYWRpIHRpZGFrIG55YW1hbiBkaWd1bmFrYW4gdW50dWsgbWVtb3J5IGludGVuc2l2ZSB0YXNrLiANCg0KNC4gS3VyYW5nIHBvcHVsZXIgdW50dWsgbW9iaWxlIGFwcCBkZXZlbG9wbWVudA0KDQpQeXRob24gYnVrYW4gYmFoYXNhIHBlbXJvZ3JhbWFuIHlhbmcgcG9wdWxlciB1bnR1ayBtb2JpbGUgZGV2ZWxvcG1lbnQuIEhhbnlhIHNlZGlraXQgcGVydXNhaGFhbiB5YW5nIG1lbmdndW5ha2FuIGJhaGFzYSBwZW1yb2dyYW1hbiBpbmkgdW50dWsgdHVqdWFuIHRlcnNlYnV0LiBLYXJlbmEgaXR1IGFrYW4gc3VsaXQgbWVuZW11a2FuICBkZXZlbG9wZXIgeWFuZyBiZXJwZW5nYWxhbWFuIGRhbGFtIG1vYmlsZSBkZXZlbG9wbWVudCB5YW5nIG1lbmdndW5ha2FuIFB5dGhvbi4gDQoNCjUuIEJhdGFzYW4gZGVzYWluDQoNClB5dGhvbiBkaWtldGlrIHNlY2FyYSBkaW5hbWlzIHNlaGluZ2dhIG1lbWlsaWtpIGJhbnlhayBiYXRhc2FuIGRlc2Fpbi4gUHl0aG9uIGJhaGthbiB0ZXJsaWhhdCBtZW1idXR1aGthbiBsZWJpaCBiYW55YWsgd2FrdHUgcGVuZ3VqaWFuIGRhbiAga2VzYWxhaGFuIHlhbmcgbXVuY3VsIGtldGlrYSBhcGxpa2FzaSBha2hpcm55YSBkaWphbGFua2FuLiANCg0KIyMjIEh1YnVuZ2FuDQoNCkh1YnVuZ2FuIGJhaGFzYSBwZW1yb2dyYW1hbiBhbnRhcmEgeWFuZyBzYXR1IGRlbmdhbiB5YW5nIGxhaW5ueWEgYWRhbGFoIGRpbWFuYSBrZXRpZ2EgbnlhIG1lcnVwYWthbiBiYWhhc2EgcHJvZ3JhbSB5YW5nIGRhcGF0IGRpZ3VuYWthbiB1bnR1ayBtZW1lY2Foa2FuIGRhbiBtZW55ZWxlc2Fpa2FuIHN1YXR1IHR1anVhbiB5YW5nIG1hc2luZy1tYXNpbmcgbWVtaWxpa2kga2V1bmdndWxhbiBueWEgc2VuZGlyaS4gQnVrYW4gaGFueWEgc2VzYW1hIGJhaGFzYSBwcm9ncmFtLCBrZXRpZ2EgYmFoYXNhIHByb2dyYW0gdGVyc2VidXQganVnYSBtZXJ1cGFrYW4gc2VzYW1hIGJhaGFzYSBwcm9ncmFtIHlhbmcgYmVyb3JpZW50YXNpIHBhZGEgb2JqZWsgKE9iamVjdCBPcmllbnRlZCkgeWFuZyBiZXJ0dWp1YW4gdW50dWsgbWVtcGVybXVkYWggcGVuZ2VtYmFuZ2FuIHNlYnVhaCBwcm9ncmFtLiBLZXRpZ2EgbnlhIGFkYWxhaCBiYWhhc2EgcHJvZ3JhbSB5YW5nIGRhcGF0IGRpIGd1bmFrYW4gdW50dWsgbWVueWVsZXNhaWthbiBzdWF0dSB0dWp1YW4gZGFuIG1hc2luZy1tYXNpbmcgbWVtaWxpa2kgc3Blc2lmaWthc2kgc2VydGEga2V1bmdndWxhbm55YSBtYXNpbmctbWFzaW5nLg==