UTS Statistika Dasar

Kebiasaan Belajar Mahasiswa di Masa Ujian dan Faktor yang Mempengaruhi Konsentrasi

awokwowk

1. PENTINGNYA STATISTIKA

Statistika itu penting sekali, karena hampir semua hal di sekitar kita sekarang pakai data untuk memahami berbagai hal dan juga menentukan keputusan. Dalam kehidupan sehari-hari, statistik dipakai di banyak bidang, kayak bisnis, kesehatan, pendidikan, sampai teknologi, membuat analisis data dan nyusun strategi yang lebih efektif. Jadi, statistik bikin semuanya lebih terarah dan tidak hanya perkiraan saja.

A. PENGUMPULAN DATA

Sebelum bisa mulai menganalisis data dengan statistik, langkah pertama yang perlu dilakukan adalah mengumpulkan data itu sendiri. Ada beberapa metode umum yang biasa digunakan untuk mengumpulkan data :

1. Survei → Survei ini jadi salah satu cara yang paling umum, karena cukup mudah dan efektif untuk mengumpulkan data dalam jumlah besar. Kita tinggal bikin kuesioner dan menyebarkannya ke banyak orang. Metode ini cocok banget kalau kita butuh data dari banyak responden dalam waktu yang relatif singkat.

2. Wawancara → Untuk data yang lebih mendalam, wawancara bisa jadi pilihan yang pas. Di sini, kita langsung ngobrol dengan orang-orang untuk menggali informasi secara lebih personal. Metode ini lebih cocok kalau kita butuh jawaban yang lebih detail dan mendalam dari responden.

3. Observasi → Kalau pengen data yang lebih objektif dan berdasarkan kenyataan, observasi bisa jadi metode yang tepat. Di sini, kita melakukan pengamatan langsung terhadap situasi atau kondisi tertentu, sehingga bisa mengecek apakah hasil survei atau wawancara sesuai dengan kenyataan yang ada.

4. Eksperimen → Metode eksperimen dipakai kalau kita pengen memastikan bahwa hasil yang kita dapatkan itu konsisten. Biasanya, eksperimen dilakukan dengan cara mengulang percobaan beberapa kali untuk memastikan apakah hasilnya sama atau enggak, jadi kita bisa dapet data yang valid dan dapat diandalkan.

B. JENIS DATA YANG DIPEROLEH

Setelah mengumpulkan data, kita perlu memahami jenis data apa yang kita dapatkan. Secara umum, data bisa dibagi menjadi dua kategori utama :

1. Data Kuantitatif → Data kuantitatif itu berbentuk angka, seperti nilai, jumlah, atau skor. Data ini bisa dihitung dan dianalisis secara matematis, jadi cocok banget untuk analisis yang butuh hasil yang jelas dan tepat.

2. Data Kualitatif → Di sisi lain, data kualitatif itu lebih bersifat deskriptif dan berbentuk kategori, seperti opini atau kesan yang diberikan responden. Meskipun nggak berupa angka, data kualitatif tetap sangat berguna untuk memberikan gambaran lebih dalam dalam analisis kita.

C. CARA PENYAJIAN DATA

Setelah data terkumpul, langkah selanjutnya adalah menyajikan data tersebut supaya mudah dipahami. Ada beberapa cara yang umum dipakai untuk menyajikan data :

1. Tabel → Tabel adalah cara yang paling sederhana dan terstruktur untuk menyajikan data. Dengan tabel, kita bisa langsung melihat perbedaan antara kategori-kategori yang ada, dan data menjadi lebih mudah untuk dianalisis.

2. Grafik Batang dan Diagram Lingkaran → Grafik batang itu efektif banget buat membandingkan kategori-kategori yang ada, sedangkan grafik lingkaran biasa dipakai untuk melihat proporsi data dalam satu keseluruhan. Visualisasi kayak gini mempermudah kita untuk melihat pola data.

3. Diagram Garis → Kalau kita mau melihat perkembangan data dalam periode waktu tertentu, diagram garis adalah pilihan yang tepat. Misalnya untuk melihat tren nilai siswa dari semester ke semester, kita bisa pakai diagram garis untuk menggambarkan perubahan secara jelas.

4. Histogram → Histogram ini cocok buat melihat distribusi data, terutama data kuantitatif. Dengan histogram, kita bisa tahu seberapa sering nilai tertentu muncul dalam data yang kita punya.

Jadi, penyajian data yang jelas dan tepat bisa banget membantu kita dalam menganalisis dan menarik kesimpulan yang valid. Statistik nggak cuma bikin kita ngerti data dengan lebih baik, tapi juga ngebantu kita buat ambil keputusan yang lebih tepat dan terarah.

2. TEKNIK ANALISA DATA

Analisis yang kami lakukan adalah mengamati kebiasaan belajar mahasiswa saat masa ujian dan memahami faktor-faktor yang mempengaruhi fokus mereka ketika belajar. Tujuan utamanya adalah untuk mencari tahu apa saja yang bisa membuat mereka tetap fokus atau malah teralihkan perhatiannya saat belajar.

A. METODE PENGUMPULAN DATA

1. Survei → Survei ini dalam bentuk kuesioner yang kami kasih ke 10 responden untuk ngumpulin data tentang pola belajar mereka. Pertanyaannya seputar kebiasaan belajar, waktu yang dihabiskan buat belajar, dan tingkat fokus saat belajar. Jawaban dari survei ini bakal menghasilkan data dalam bentuk angka atau skala (misalnya dari 1 sampai 5) yang bikin kita gampang buat analisis pola belajar secara umum.

2. Wawancara → Selain survei, kami juga wawancara langsung 10 mahasiswa buat dapetin insight yang lebih mendalam dan personal. Dari wawancara ini, kami bisa dapet jawaban lebih detail tentang kebiasaan belajar mereka, misalnya kapan dan di mana mereka paling suka belajar, sampai kendala yang mereka hadapi. Jadi, kami bisa paham alasan di balik kebiasaan belajar mereka.

B. ALASAN MEMILIH METODE TERSEBUT

1. Survei → Survei melalui Google Form dipilih karena bisa kasih gambaran umum tentang kebiasaan belajar mahasiswa secara cepat. Dengan format survei, kami bisa dapet banyak data dari responden dalam waktu yang relatif singkat. Selain itu, data survei lebih gampang diolah karena bentuknya udah terstruktur.

2. Wawancara → Kami pilih wawancara karena metode ini memungkinkan kami buat dapetin jawaban yang lebih mendalam. Wawancara cocok banget buat memahami alasan-alasan di balik kebiasaan belajar mahasiswa, yang nggak bisa didapat dari survei aja. Dengan wawancara, kita bisa lihat lebih detail gimana mahasiswa menghadapi masa ujian.

C. JENIS DATA YANG DIHASILKAN

1. Data Kuantitatif → Dari survei, kami mendapatkan data kuantitatif atau data angka, contohnya jumlah jam belajar per hari atau tingkat fokus mereka dalam skala tertentu. Data ini memudahkan buat lihat pola belajar mahasiswa dalam bentuk angka-angka.

2. Data Kualitatif → Dari wawancara, kami dapat data kualitatif, yaitu data yang sifatnya lebih deskriptif dan detail. Data ini mencakup pandangan atau opini responden tentang cara mereka belajar, alasan kenapa mereka milih waktu belajar tertentu, atau tantangan yang bikin mereka susah konsentrasi.

D. PENYAJIAN DATA

DATA KUALITATIF (MELALUI WAWANCARA)

Nama Jenis.Kelamin Apa.metode.atau.teknik.belajar.yang.paling.efektif Apakah.anda.merasa.stres.selama.ujian…Jika.ya..bagai.mana.anda.menhadapinya Apa.yang.menurut.anda.mempengaruhi.kebiasaan.belajar.anda.saat.ujian
Alfin Laki-laki Biasanya mulai belajar 5-7 hari sebelum ujian, sambil buat jadwal. Kadang olahraga ringan aja udah cukup buat ngurangin stres. Gadget dan notifikasi bikin gampang pecah fokus.
Bima Laki-laki pilih belajar setiap hari, terus intens beberapa hari sebelum ujian. usahain tidur cukup dan atur waktu belajar biar nggak panik. Jam belajar yang nggak teratur bikin fokus berantakan.
Salsa Perempuan atur waktu belajar per mata kuliah dan ngerjain soal-soal latihan. Stress? Pasti, tapi lebih baik cari cara biar tetep tenang. Cemas soal hasil ujian bikin susah fokus.
Rinjani Perempuan Belajar buku dulu, terus diskusi sama teman biar lebih paham. Biasanya atur waktu dan pecah tugas biar lebih manageable. Lingkungan berisik di rumah ganggu konsentrasi.
Putri Perempuan Aku biasanya mulai seminggu sebelum ujian biar nggak buru-buru. Kadang istirahat sebentar atau keluar rumah buat nenangin diri. Kelelahan bikin konsentrasi menurun.
William Laki-laki Persiapan gua fokusnya di review materi kuliah. Materi numpuk bikin stres, apalagi pas banyak banget. Kurang tidur bikin otak lemot dan nggak fokus.
Raka Laki-laki Biasanya mulai dua minggu sebelum ujian, biar nggak terlalu dadakan. Kalau lagi stres, lebih suka jalan-jalan buat refreshing. Kurang nutrisi bikin gampang lemes dan ngantuk.
Hamdi Laki-laki belajar tiap hari, tapi lebih fokus di beberapa hari terakhir. coba tetep fokus dan nggak panik saat stres datang. Tekanan keluarga dan teman bikin belajar terasa beban.
Gilbert Laki-laki Gua suka bikin ringkasan dan belajar bareng teman-teman. Kalau stres, biasanya ngobrol sama temen buat dukungan. Belajar monoton bikin cepat bosan dan pikiran melayang.
Sindy Perempuan Belajar dimulai dengan rencana, terus lanjut belajar sendiri. Bikin to-do list dan fokus satu-satu biar nggak kebebanan. Multitasking dengan streaming bikin materi nggak nyerap.

DATA KUANTITATIF (MELALUI SURVEI KUESIONER)

3. PENYAJIAN DATA DALAM BENTUK DIAGRAM

Jenis Kelamin Frekuensi
Laki-laki 6
Perempuan 4
Peran Sumber Daya Online Frekuensi Persentase
Cukup Membantu 3 30
Membantu 3 30
Sangat Membantu 3 30
Sedikit membantu 1 10

K

Dari diagram ini kesimpulan yang didapatkan adalah sumber daya online berpengaruh positif untuk belajar di masa ujian. dari grafik terlihat 90% responden merasa dibantu oleh sumber daya online dan hanya 10% yang tidak.

Diagram ini nunjukin kalau kebanyakan orang belajar 3-4 jam sehari (40%). Yang belajar 1-2 jam sama 5-6 jam itu masing-masing 20%, dan cuma dikit yang sampai 7-8 jam, sekitar 10%. Jadi, intinya mayoritas pada belajar 3-4 jam sehari, dan yang lebih dari 6 jam itu jarang banget.

Perubahan Metode Belajar Frekuensi Persentase
Jarang 3 30
Selalu 3 30
Biasa 2 20
Sering 2 20

Diagram ini nunjukin kalau 90% responden ngerasa sumber daya online itu bermanfaat buat belajar. Sebanyak 30% ngerasa sangat membantu, 30% bantu, dan 30% cukup bantu, sementara cuma 10% yang bilang sedikit membantu. Jadi, bisa disimpulin kalau sumber daya online punya pengaruh positif besar buat belajar.

KESIMPULAN

Dari data ini, bahwa kebanyakan mahasiswa belajar sekitar 3-4 jam sehari pas masa ujian. Beberapa dari mereka memang belajar lebih lama, sampai 5-6 jam, terutama yang ngerasa sumber daya online itu ngebantu banget buat nyerap materi. Faktor kayak stres karena mikirin nilai ujian juga cukup memberikan efek ke fokus belajar. Banyak yang bilang mereka sering khawatir atau malah harus coba-coba metode belajar baru buat lebih efektif.

Selain itu, ada aja gangguan kayak notifikasi di gadget atau suasana rumah yang berisik, yang bikin konsentrasi buyar. Buat ngatasin stres, biasanya kita coba istirahat, olahraga ringan, atau sekadar ganti suasana biar lebih rileks. Jadi, bisa disimpulin kalau suasana yang nyaman dan manajemen waktu yang oke itu penting banget buat ningkatin kebiasaan belajar, terutama pas persiapan ujian.

REFERENSI

  • Fakultas Keguruan dan Ilmu Pendidikan. (n.d.). Peran statistika dalam ekonomi, pendidikan, kesehatan, dan lingkungan. Universitas Muhammadiyah Surabaya. Klik Disini

  • Wijaya, H., Purnomo, A. P., & Nugroho, R. W. (2020). Implementasi metode statistika dalam peningkatan kualitas pendidikan di Indonesia. Jurnal Pendidikan Sekolah Dasar, 7(2), 15-24. Klik Disini

  • Simanjuntak, L., & Rahmadani, D. (2021). Peran st atistika dalam pembelajaran matematika di sekolah dasar. Jurnal Pendas, 5(1), 33-45.Klik disini

  • Alamsyah, H., & Suryani, T. (2021). Penerapan statistika dalam pengembangan kesehatan lingkungan. Alacrity: Journal of Health and Environmental Science, 3(1), 9-18. Klik disini

  • DSciencelabs. (n.d.). Pengantar Statistik untuk Sains Data. Bookdown. Retrieved from klik disini

LS0tDQp0aXRsZTogIlVUUyBTdGF0aXN0aWthIERhc2FyIg0KDQpzdWJ0aXRsZTogIktlYmlhc2FhbiBCZWxhamFyIE1haGFzaXN3YSBkaSBNYXNhIFVqaWFuIGRhbiBGYWt0b3IgeWFuZyBNZW1wZW5nYXJ1aGkgS29uc2VudHJhc2kiDQoNCmF1dGhvcjogDQogIC0gIlN5aWZhIE51cnVsZmFqcmkiDQogIC0gIk5hYmlsYSBBbmdnaXRhIFB1dHJpIg0KICAtICJNdWhhbW1hZCBSaXpreSBCYWdhcyINCg0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246DQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBjc3M6ICJzdHlsZS9zdHlsZS5jc3MiDQogICAgDQotLS0NCg0KPGltZyBzcmM9ImltZy9mb3RiYXItY3V5eS5qcGciIGFsdD0iYXdva3dvd2siIGlkPSJsb2dvLXV0YW1hIiBzdHlsZT0id2lkdGg6NTAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87Ii8+DQoNCg0KIyAxLiBQRU5USU5HTllBIFNUQVRJU1RJS0ENCg0KU3RhdGlzdGlrYSBpdHUgcGVudGluZyBzZWthbGksIGthcmVuYSBoYW1waXIgc2VtdWEgaGFsIGRpIHNla2l0YXIga2l0YSBzZWthcmFuZyBwYWthaSBkYXRhIHVudHVrIG1lbWFoYW1pIGJlcmJhZ2FpIGhhbCBkYW4ganVnYSBtZW5lbnR1a2FuIGtlcHV0dXNhbi4gRGFsYW0ga2VoaWR1cGFuIHNlaGFyaS1oYXJpLCBzdGF0aXN0aWsgZGlwYWthaSBkaSBiYW55YWsgYmlkYW5nLCBrYXlhayBiaXNuaXMsIGtlc2VoYXRhbiwgcGVuZGlkaWthbiwgc2FtcGFpIHRla25vbG9naSwgbWVtYnVhdCBhbmFsaXNpcyBkYXRhIGRhbiBueXVzdW4gc3RyYXRlZ2kgeWFuZyBsZWJpaCBlZmVrdGlmLiBKYWRpLCBzdGF0aXN0aWsgYmlraW4gc2VtdWFueWEgbGViaWggdGVyYXJhaCBkYW4gdGlkYWsgaGFueWEgcGVya2lyYWFuIHNhamEuDQoNCiMjIEEuIFBFTkdVTVBVTEFOIERBVEENCg0KU2ViZWx1bSBiaXNhIG11bGFpIG1lbmdhbmFsaXNpcyBkYXRhIGRlbmdhbiBzdGF0aXN0aWssIGxhbmdrYWggcGVydGFtYSB5YW5nIHBlcmx1IGRpbGFrdWthbiBhZGFsYWggbWVuZ3VtcHVsa2FuIGRhdGEgaXR1IHNlbmRpcmkuIEFkYSBiZWJlcmFwYSBtZXRvZGUgdW11bSB5YW5nIGJpYXNhIGRpZ3VuYWthbiB1bnR1ayBtZW5ndW1wdWxrYW4gZGF0YSA6DQoNCioqMS4gU3VydmVpKiog4oaSIFN1cnZlaSBpbmkgamFkaSBzYWxhaCBzYXR1IGNhcmEgeWFuZyBwYWxpbmcgdW11bSwga2FyZW5hIGN1a3VwIG11ZGFoIGRhbiBlZmVrdGlmIHVudHVrIG1lbmd1bXB1bGthbiBkYXRhIGRhbGFtIGp1bWxhaCBiZXNhci4gS2l0YSB0aW5nZ2FsIGJpa2luIGt1ZXNpb25lciBkYW4gbWVueWViYXJrYW5ueWEga2UgYmFueWFrIG9yYW5nLiBNZXRvZGUgaW5pIGNvY29rIGJhbmdldCBrYWxhdSBraXRhIGJ1dHVoIGRhdGEgZGFyaSBiYW55YWsgcmVzcG9uZGVuIGRhbGFtIHdha3R1IHlhbmcgcmVsYXRpZiBzaW5na2F0Lg0KDQoqKjIuIFdhd2FuY2FyYSoqIOKGkiAgVW50dWsgZGF0YSB5YW5nIGxlYmloIG1lbmRhbGFtLCB3YXdhbmNhcmEgYmlzYSBqYWRpIHBpbGloYW4geWFuZyBwYXMuIERpIHNpbmksIGtpdGEgbGFuZ3N1bmcgbmdvYnJvbCBkZW5nYW4gb3Jhbmctb3JhbmcgdW50dWsgbWVuZ2dhbGkgaW5mb3JtYXNpIHNlY2FyYSBsZWJpaCBwZXJzb25hbC4gTWV0b2RlIGluaSBsZWJpaCBjb2NvayBrYWxhdSBraXRhIGJ1dHVoIGphd2FiYW4geWFuZyBsZWJpaCBkZXRhaWwgZGFuIG1lbmRhbGFtIGRhcmkgcmVzcG9uZGVuLg0KDQoqKjMuIE9ic2VydmFzaSoqIOKGkiBLYWxhdSBwZW5nZW4gZGF0YSB5YW5nIGxlYmloIG9iamVrdGlmIGRhbiBiZXJkYXNhcmthbiBrZW55YXRhYW4sIG9ic2VydmFzaSBiaXNhIGphZGkgbWV0b2RlIHlhbmcgdGVwYXQuIERpIHNpbmksIGtpdGEgbWVsYWt1a2FuIHBlbmdhbWF0YW4gbGFuZ3N1bmcgdGVyaGFkYXAgc2l0dWFzaSBhdGF1IGtvbmRpc2kgdGVydGVudHUsIHNlaGluZ2dhIGJpc2EgbWVuZ2VjZWsgYXBha2FoIGhhc2lsIHN1cnZlaSBhdGF1IHdhd2FuY2FyYSBzZXN1YWkgZGVuZ2FuIGtlbnlhdGFhbiB5YW5nIGFkYS4NCg0KKio0LiBFa3NwZXJpbWVuKiog4oaSIE1ldG9kZSBla3NwZXJpbWVuIGRpcGFrYWkga2FsYXUga2l0YSBwZW5nZW4gbWVtYXN0aWthbiBiYWh3YSBoYXNpbCB5YW5nIGtpdGEgZGFwYXRrYW4gaXR1IGtvbnNpc3Rlbi4gQmlhc2FueWEsIGVrc3BlcmltZW4gZGlsYWt1a2FuIGRlbmdhbiBjYXJhIG1lbmd1bGFuZyBwZXJjb2JhYW4gYmViZXJhcGEga2FsaSB1bnR1ayBtZW1hc3Rpa2FuIGFwYWthaCBoYXNpbG55YSBzYW1hIGF0YXUgZW5nZ2FrLCBqYWRpIGtpdGEgYmlzYSBkYXBldCBkYXRhIHlhbmcgdmFsaWQgZGFuIGRhcGF0IGRpYW5kYWxrYW4uDQoNCiMjIEIuIEpFTklTIERBVEEgWUFORyBESVBFUk9MRUgNCg0KU2V0ZWxhaCBtZW5ndW1wdWxrYW4gZGF0YSwga2l0YSBwZXJsdSBtZW1haGFtaSBqZW5pcyBkYXRhIGFwYSB5YW5nIGtpdGEgZGFwYXRrYW4uIFNlY2FyYSB1bXVtLCBkYXRhIGJpc2EgZGliYWdpIG1lbmphZGkgZHVhIGthdGVnb3JpIHV0YW1hIDoNCg0KKioxLiBEYXRhIEt1YW50aXRhdGlmKiog4oaSIERhdGEga3VhbnRpdGF0aWYgaXR1IGJlcmJlbnR1ayBhbmdrYSwgc2VwZXJ0aSBuaWxhaSwganVtbGFoLCBhdGF1IHNrb3IuIERhdGEgaW5pIGJpc2EgZGloaXR1bmcgZGFuIGRpYW5hbGlzaXMgc2VjYXJhIG1hdGVtYXRpcywgamFkaSBjb2NvayBiYW5nZXQgdW50dWsgYW5hbGlzaXMgeWFuZyBidXR1aCBoYXNpbCB5YW5nIGplbGFzIGRhbiB0ZXBhdC4NCg0KKioyLiBEYXRhIEt1YWxpdGF0aWYqKiDihpIgRGkgc2lzaSBsYWluLCBkYXRhIGt1YWxpdGF0aWYgaXR1IGxlYmloIGJlcnNpZmF0IGRlc2tyaXB0aWYgZGFuIGJlcmJlbnR1ayBrYXRlZ29yaSwgc2VwZXJ0aSBvcGluaSBhdGF1IGtlc2FuIHlhbmcgZGliZXJpa2FuIHJlc3BvbmRlbi4gTWVza2lwdW4gbmdnYWsgYmVydXBhIGFuZ2thLCBkYXRhIGt1YWxpdGF0aWYgdGV0YXAgc2FuZ2F0IGJlcmd1bmEgdW50dWsgbWVtYmVyaWthbiBnYW1iYXJhbiBsZWJpaCBkYWxhbSBkYWxhbSBhbmFsaXNpcyBraXRhLg0KDQojIyBDLiBDQVJBIFBFTllBSklBTiBEQVRBDQoNClNldGVsYWggZGF0YSB0ZXJrdW1wdWwsIGxhbmdrYWggc2VsYW5qdXRueWEgYWRhbGFoIG1lbnlhamlrYW4gZGF0YSB0ZXJzZWJ1dCBzdXBheWEgbXVkYWggZGlwYWhhbWkuIEFkYSBiZWJlcmFwYSBjYXJhIHlhbmcgdW11bSBkaXBha2FpIHVudHVrIG1lbnlhamlrYW4gZGF0YSA6DQoNCioqMS4gVGFiZWwqKiDihpIgIFRhYmVsIGFkYWxhaCBjYXJhIHlhbmcgcGFsaW5nIHNlZGVyaGFuYSBkYW4gdGVyc3RydWt0dXIgdW50dWsgbWVueWFqaWthbiBkYXRhLiBEZW5nYW4gdGFiZWwsIGtpdGEgYmlzYSBsYW5nc3VuZyBtZWxpaGF0IHBlcmJlZGFhbiBhbnRhcmEga2F0ZWdvcmkta2F0ZWdvcmkgeWFuZyBhZGEsIGRhbiBkYXRhIG1lbmphZGkgbGViaWggbXVkYWggdW50dWsgZGlhbmFsaXNpcy4NCg0KKioyLiBHcmFmaWsgQmF0YW5nIGRhbiBEaWFncmFtIExpbmdrYXJhbioqIOKGkiAgR3JhZmlrIGJhdGFuZyBpdHUgZWZla3RpZiBiYW5nZXQgYnVhdCBtZW1iYW5kaW5na2FuIGthdGVnb3JpLWthdGVnb3JpIHlhbmcgYWRhLCBzZWRhbmdrYW4gZ3JhZmlrIGxpbmdrYXJhbiBiaWFzYSBkaXBha2FpIHVudHVrIG1lbGloYXQgcHJvcG9yc2kgZGF0YSBkYWxhbSBzYXR1IGtlc2VsdXJ1aGFuLiBWaXN1YWxpc2FzaSBrYXlhayBnaW5pIG1lbXBlcm11ZGFoIGtpdGEgdW50dWsgbWVsaWhhdCBwb2xhIGRhdGEuDQoNCioqMy4gRGlhZ3JhbSBHYXJpcyoqIOKGkiAgS2FsYXUga2l0YSBtYXUgbWVsaWhhdCBwZXJrZW1iYW5nYW4gZGF0YSBkYWxhbSBwZXJpb2RlIHdha3R1IHRlcnRlbnR1LCBkaWFncmFtIGdhcmlzIGFkYWxhaCBwaWxpaGFuIHlhbmcgdGVwYXQuIE1pc2FsbnlhIHVudHVrIG1lbGloYXQgdHJlbiBuaWxhaSBzaXN3YSBkYXJpIHNlbWVzdGVyIGtlIHNlbWVzdGVyLCBraXRhIGJpc2EgcGFrYWkgZGlhZ3JhbSBnYXJpcyB1bnR1ayBtZW5nZ2FtYmFya2FuIHBlcnViYWhhbiBzZWNhcmEgamVsYXMuDQoNCioqNC4gSGlzdG9ncmFtKiog4oaSICBIaXN0b2dyYW0gaW5pIGNvY29rIGJ1YXQgbWVsaWhhdCBkaXN0cmlidXNpIGRhdGEsIHRlcnV0YW1hIGRhdGEga3VhbnRpdGF0aWYuIERlbmdhbiBoaXN0b2dyYW0sIGtpdGEgYmlzYSB0YWh1IHNlYmVyYXBhIHNlcmluZyBuaWxhaSB0ZXJ0ZW50dSBtdW5jdWwgZGFsYW0gZGF0YSB5YW5nIGtpdGEgcHVueWEuDQoNCipKYWRpLCBwZW55YWppYW4gZGF0YSB5YW5nIGplbGFzIGRhbiB0ZXBhdCBiaXNhIGJhbmdldCBtZW1iYW50dSBraXRhIGRhbGFtIG1lbmdhbmFsaXNpcyBkYW4gbWVuYXJpayBrZXNpbXB1bGFuIHlhbmcgdmFsaWQuIFN0YXRpc3RpayBuZ2dhayBjdW1hIGJpa2luIGtpdGEgbmdlcnRpIGRhdGEgZGVuZ2FuIGxlYmloIGJhaWssIHRhcGkganVnYSBuZ2ViYW50dSBraXRhIGJ1YXQgYW1iaWwga2VwdXR1c2FuIHlhbmcgbGViaWggdGVwYXQgZGFuIHRlcmFyYWguKg0KDQojIDIuIFRFS05JSyBBTkFMSVNBIERBVEENCg0KQW5hbGlzaXMgeWFuZyBrYW1pIGxha3VrYW4gYWRhbGFoIG1lbmdhbWF0aSBrZWJpYXNhYW4gYmVsYWphciBtYWhhc2lzd2Egc2FhdCBtYXNhIHVqaWFuIGRhbiBtZW1haGFtaSBmYWt0b3ItZmFrdG9yIHlhbmcgbWVtcGVuZ2FydWhpIGZva3VzIG1lcmVrYSBrZXRpa2EgYmVsYWphci4gVHVqdWFuIHV0YW1hbnlhIGFkYWxhaCB1bnR1ayBtZW5jYXJpIHRhaHUgYXBhIHNhamEgeWFuZyBiaXNhIG1lbWJ1YXQgbWVyZWthIHRldGFwIGZva3VzIGF0YXUgbWFsYWggdGVyYWxpaGthbiBwZXJoYXRpYW5ueWEgc2FhdCBiZWxhamFyLg0KDQojIyBBLiBNRVRPREUgUEVOR1VNUFVMQU4gREFUQQ0KKioxLiBTdXJ2ZWkqKiDihpIgIFN1cnZlaSBpbmkgZGFsYW0gYmVudHVrIGt1ZXNpb25lciB5YW5nIGthbWkga2FzaWgga2UgMTAgcmVzcG9uZGVuIHVudHVrIG5ndW1wdWxpbiBkYXRhIHRlbnRhbmcgcG9sYSBiZWxhamFyIG1lcmVrYS4gUGVydGFueWFhbm55YSBzZXB1dGFyIGtlYmlhc2FhbiBiZWxhamFyLCB3YWt0dSB5YW5nIGRpaGFiaXNrYW4gYnVhdCBiZWxhamFyLCBkYW4gdGluZ2thdCBmb2t1cyBzYWF0IGJlbGFqYXIuIEphd2FiYW4gZGFyaSBzdXJ2ZWkgaW5pIGJha2FsIG1lbmdoYXNpbGthbiBkYXRhIGRhbGFtIGJlbnR1ayBhbmdrYSBhdGF1IHNrYWxhIChtaXNhbG55YSBkYXJpIDEgc2FtcGFpIDUpIHlhbmcgYmlraW4ga2l0YSBnYW1wYW5nIGJ1YXQgYW5hbGlzaXMgcG9sYSBiZWxhamFyIHNlY2FyYSB1bXVtLg0KDQoqKjIuIFdhd2FuY2FyYSoqIOKGkiBTZWxhaW4gc3VydmVpLCBrYW1pIGp1Z2Egd2F3YW5jYXJhIGxhbmdzdW5nIDEwIG1haGFzaXN3YSBidWF0IGRhcGV0aW4gaW5zaWdodCB5YW5nIGxlYmloIG1lbmRhbGFtIGRhbiBwZXJzb25hbC4gRGFyaSB3YXdhbmNhcmEgaW5pLCBrYW1pIGJpc2EgZGFwZXQgamF3YWJhbiBsZWJpaCBkZXRhaWwgdGVudGFuZyBrZWJpYXNhYW4gYmVsYWphciBtZXJla2EsIG1pc2FsbnlhIGthcGFuIGRhbiBkaSBtYW5hIG1lcmVrYSBwYWxpbmcgc3VrYSBiZWxhamFyLCBzYW1wYWkga2VuZGFsYSB5YW5nIG1lcmVrYSBoYWRhcGkuIEphZGksIGthbWkgYmlzYSBwYWhhbSBhbGFzYW4gZGkgYmFsaWsga2ViaWFzYWFuIGJlbGFqYXIgbWVyZWthLg0KDQojIyBCLiBBTEFTQU4gTUVNSUxJSCBNRVRPREUgVEVSU0VCVVQNCioqMS4gU3VydmVpKiog4oaSIFN1cnZlaSBtZWxhbHVpIDxhIGhyZWYgPSAiaHR0cDovL2JpdC5seS8zWVpsQ0JoIj5Hb29nbGUgRm9ybTwvYT4gZGlwaWxpaCBrYXJlbmEgYmlzYSBrYXNpaCBnYW1iYXJhbiB1bXVtIHRlbnRhbmcga2ViaWFzYWFuIGJlbGFqYXIgbWFoYXNpc3dhIHNlY2FyYSBjZXBhdC4gRGVuZ2FuIGZvcm1hdCBzdXJ2ZWksIGthbWkgYmlzYSBkYXBldCBiYW55YWsgZGF0YSBkYXJpIHJlc3BvbmRlbiBkYWxhbSB3YWt0dSB5YW5nIHJlbGF0aWYgc2luZ2thdC4gU2VsYWluIGl0dSwgZGF0YSBzdXJ2ZWkgbGViaWggZ2FtcGFuZyBkaW9sYWgga2FyZW5hIGJlbnR1a255YSB1ZGFoIHRlcnN0cnVrdHVyLg0KDQoqKjIuIFdhd2FuY2FyYSoqIOKGkiAgS2FtaSBwaWxpaCB3YXdhbmNhcmEga2FyZW5hIG1ldG9kZSBpbmkgbWVtdW5na2lua2FuIGthbWkgYnVhdCBkYXBldGluIGphd2FiYW4geWFuZyBsZWJpaCBtZW5kYWxhbS4gV2F3YW5jYXJhIGNvY29rIGJhbmdldCBidWF0IG1lbWFoYW1pIGFsYXNhbi1hbGFzYW4gZGkgYmFsaWsga2ViaWFzYWFuIGJlbGFqYXIgbWFoYXNpc3dhLCB5YW5nIG5nZ2FrIGJpc2EgZGlkYXBhdCBkYXJpIHN1cnZlaSBhamEuIERlbmdhbiB3YXdhbmNhcmEsIGtpdGEgYmlzYSBsaWhhdCBsZWJpaCBkZXRhaWwgZ2ltYW5hIG1haGFzaXN3YSBtZW5naGFkYXBpIG1hc2EgdWppYW4uDQoNCiMjIEMuIEpFTklTIERBVEEgWUFORyBESUhBU0lMS0FODQoqKjEuIERhdGEgS3VhbnRpdGF0aWYqKiDihpIgRGFyaSBzdXJ2ZWksIGthbWkgbWVuZGFwYXRrYW4gZGF0YSBrdWFudGl0YXRpZiBhdGF1IGRhdGEgYW5na2EsIGNvbnRvaG55YSBqdW1sYWggamFtIGJlbGFqYXIgcGVyIGhhcmkgYXRhdSB0aW5na2F0IGZva3VzIG1lcmVrYSBkYWxhbSBza2FsYSB0ZXJ0ZW50dS4gRGF0YSBpbmkgbWVtdWRhaGthbiBidWF0IGxpaGF0IHBvbGEgYmVsYWphciBtYWhhc2lzd2EgZGFsYW0gYmVudHVrIGFuZ2thLWFuZ2thLg0KDQoqKjIuIERhdGEgS3VhbGl0YXRpZioqIOKGkiBEYXJpIHdhd2FuY2FyYSwga2FtaSBkYXBhdCBkYXRhIGt1YWxpdGF0aWYsIHlhaXR1IGRhdGEgeWFuZyBzaWZhdG55YSBsZWJpaCBkZXNrcmlwdGlmIGRhbiBkZXRhaWwuIERhdGEgaW5pIG1lbmNha3VwIHBhbmRhbmdhbiBhdGF1IG9waW5pIHJlc3BvbmRlbiB0ZW50YW5nIGNhcmEgbWVyZWthIGJlbGFqYXIsIGFsYXNhbiBrZW5hcGEgbWVyZWthIG1pbGloIHdha3R1IGJlbGFqYXIgdGVydGVudHUsIGF0YXUgdGFudGFuZ2FuIHlhbmcgYmlraW4gbWVyZWthIHN1c2FoIGtvbnNlbnRyYXNpLg0KDQojIyBELiBQRU5ZQUpJQU4gREFUQQ0KDQojIyMjIERBVEEgS1VBTElUQVRJRiAoTUVMQUxVSSBXQVdBTkNBUkEpDQpgYGB7ciwgZWNobz1GQUxTRX0NCmRhdGFfa3VhbGkgPSByZWFkLmNzdigiZGF0YS9kYXRhX2t1YWxpdGF0aWYuY3N2IikNCmtuaXRyOjprYWJsZShkYXRhX2t1YWxpKQ0KYGBgDQoNCiMjIyMgREFUQSBLVUFOVElUQVRJRiAoTUVMQUxVSSBTVVJWRUkgS1VFU0lPTkVSKQ0KYGBge3IsIGVjaG89RkFMU0V9DQpkYXRhID0gcmVhZC5jc3YoImRhdGEvZGF0YV9rdWFudGl0YXRpZi5jc3YiKQ0KaGVhZChkYXRhKQ0KYGBgDQoNCg0KIyAzLiBQRU5ZQUpJQU4gREFUQSBEQUxBTSBCRU5UVUsgRElBR1JBTQ0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KDQojIEZ1bmdzaSB1bnR1ayBtZW1idWF0IGdyYWZpayBkb25hdA0KYnVhdF9kb251dF9wbG90bHkgPC0gZnVuY3Rpb24oZGF0YSwga29sb20sIGp1ZHVsKSB7DQogICMgTWVuZ2hpdHVuZyBmcmVrdWVuc2kgc2V0aWFwIGthdGVnb3JpIGRpIGtvbG9tDQogIGRhdGFfZGlhZ3JhbSA8LSBkYXRhICU+JQ0KICAgIGNvdW50KCEhc3ltKGtvbG9tKSwgbmFtZSA9ICJGcmVrdWVuc2kiKSAlPiUNCiAgICByZW5hbWUoIkthdGVnb3JpIiA9ICEhc3ltKGtvbG9tKSkgJT4lDQogICAgYXJyYW5nZShkZXNjKEZyZWt1ZW5zaSkpDQogIA0KICAjIE1lbWJ1YXQgZ3JhZmlrIGRvbmF0IGRlbmdhbiBQbG90bHkNCiAgcGxvdF9seShkYXRhX2RpYWdyYW0sIA0KICAgICAgICAgIGxhYmVscyA9IH5LYXRlZ29yaSwgDQogICAgICAgICAgdmFsdWVzID0gfkZyZWt1ZW5zaSwgDQogICAgICAgICAgdHlwZSA9ICdwaWUnLCANCiAgICAgICAgICB0ZXh0aW5mbyA9ICdsYWJlbCtwZXJjZW50JywgICAgICAgICMgTWVuYW1waWxrYW4gbGFiZWwgZGFuIHBlcnNlbnRhc2UNCiAgICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb24gPSAncmFkaWFsJywgICMgT3JpZW50YXNpIHRla3MgZGkgZGFsYW0gaXJpc2FuDQogICAgICAgICAgaG9sZSA9IDAuMywgICAgICAgICAgICAgICAgICAgICAgICAjIE1lbmdhdHVyIHVrdXJhbiBsdWJhbmcNCiAgICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gbnJvdyhkYXRhX2RpYWdyYW0pLCBuYW1lID0gIlNldDMiKSkpICU+JQ0KICAgIGxheW91dCh0aXRsZSA9IGp1ZHVsLCBzaG93bGVnZW5kID0gVFJVRSkNCn0NCg0KZGF0YV9kaWFncmFtIDwtIGRhdGEgJT4lDQogIGNvdW50KEplbmlzLktlbGFtaW4sIG5hbWUgPSAiRnJla3VlbnNpIikgJT4lDQogIHJlbmFtZSgiSmVuaXMgS2VsYW1pbiIgPSBKZW5pcy5LZWxhbWluKSAlPiUNCiAgYXJyYW5nZShkZXNjKEZyZWt1ZW5zaSkpDQprbml0cjo6a2FibGUoZGF0YV9kaWFncmFtKQ0KYnVhdF9kb251dF9wbG90bHkoZGF0YSwgIkplbmlzLktlbGFtaW4iLCAiRGlzdHJpYnVzaSBKZW5pcyBLZWxhbWluIikNCmBgYA0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IHRhYmVsIGRpc3RyaWJ1c2kgdW50dWsga29sb20gIlBlcmFuIFN1bWJlciBEYXlhIE9ubGluZSIgZGFuIG1lbmdoaXR1bmcgcGVyc2VudGFzZW55YQ0KdGFiZWxfZGF0YSA8LSBkYXRhICU+JQ0KICBjb3VudChgc2ViZXJhcGEuYmVzYXIucGVyYW4uc3VtYmVyLmRheWEub25saW5lLmRhbGFtLm1lbWJhbnR1LkFuZGEuYmVsYWphci5zZWxhbWEubWFzYS51amlhbi5gLCANCiAgICAgICAgbmFtZSA9ICJGcmVrdWVuc2kiKSAlPiUNCiAgbXV0YXRlKFBlcnNlbnRhc2UgPSByb3VuZCgoRnJla3VlbnNpIC8gc3VtKEZyZWt1ZW5zaSkpICogMTAwLCAyKSkgJT4lDQogIHJlbmFtZSgiUGVyYW4gU3VtYmVyIERheWEgT25saW5lIiA9IA0KICAgICAgICAgYHNlYmVyYXBhLmJlc2FyLnBlcmFuLnN1bWJlci5kYXlhLm9ubGluZS5kYWxhbS5tZW1iYW50dS5BbmRhLmJlbGFqYXIuc2VsYW1hLm1hc2EudWppYW4uYCkgJT4lDQogIGFycmFuZ2UoZGVzYyhGcmVrdWVuc2kpKQ0KDQojIE1lbmFtcGlsa2FuIHRhYmVsIGRpc3RyaWJ1c2kNCmtuaXRyOjprYWJsZSh0YWJlbF9kYXRhKQ0KYGBgDQpLDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCiMgTWVtYnVhdCBkaWFncmFtIGJhdGFuZyB2ZXJ0aWthbCBkZW5nYW4gZ2dwbG90Mg0KDQpwIDwtIGdncGxvdCh0YWJlbF9kYXRhLCBhZXMoeCA9IGBQZXJhbiBTdW1iZXIgRGF5YSBPbmxpbmVgLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnJla3VlbnNpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gYFBlcmFuIFN1bWJlciBEYXlhIE9ubGluZWAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBwYXN0ZTAoIlBlcnNlbnRhc2U6ICIsIFBlcnNlbnRhc2UsICIlIikpKSArICAjIE1lbmFtYmFoa2FuIHBlcnNlbnRhc2UgZGkgdG9vbHRpcA0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKEZyZWt1ZW5zaSwgIiAoIiwgUGVyc2VudGFzZSwgIiUpIikpLCAgIyBNZW5hbXBpbGthbiBGcmVrdWVuc2kgZGFuIFBlcnNlbnRhc2UNCiAgICAgICAgICAgIHZqdXN0ID0gLTAuNSwgICMgTWVuZ2F0dXIgcG9zaXNpIGxhYmVsIGRpIGF0YXMgYmF0YW5nDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSAzKSArICAjIE1lbmdhdHVyIHdhcm5hIGRhbiB1a3VyYW4gbGFiZWwNCiAgbGFicyh0aXRsZSA9ICJEaXN0cmlidXNpIFBlcmFuIFN1bWJlciBEYXlhIE9ubGluZSBkYWxhbSBNZW1iYW50dSBCZWxhamFyIFNlbGFtYSBNYXNhIFVqaWFuIiwNCiAgICAgICB4ID0gIlBlcmFuIFN1bWJlciBEYXlhIE9ubGluZSIsDQogICAgICAgeSA9ICJGcmVrdWVuc2kiKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgICMgTWVuZ2d1bmFrYW4gcGFsZXQgd2FybmENCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSAgICAgICAjIE1lbnllbWJ1bnlpa2FuIGxlZ2VuZGENCg0KIyBNZW5nb252ZXJzaSBnZ3Bsb3QgbWVuamFkaSBwbG90bHkgdW50dWsgaW50ZXJha3RpZiBkZW5nYW4gdG9vbHRpcCBwZXJzZW50YXNlDQpwbG90bHlfcGxvdCA8LSBnZ3Bsb3RseShwLCB0b29sdGlwID0gYygieCIsICJ5IiwgInRleHQiKSkNCg0KIyBNZW5hbXBpbGthbiBwbG90IGludGVyYWt0aWYNCnBsb3RseV9wbG90DQpgYGANCg0KDQpEYXJpIGRpYWdyYW0gaW5pIGtlc2ltcHVsYW4geWFuZyBkaWRhcGF0a2FuIGFkYWxhaCBzdW1iZXIgZGF5YSBvbmxpbmUgYmVycGVuZ2FydWggcG9zaXRpZiB1bnR1ayBiZWxhamFyIGRpIG1hc2EgdWppYW4uIGRhcmkgZ3JhZmlrIHRlcmxpaGF0IDkwJSByZXNwb25kZW4gbWVyYXNhIGRpYmFudHUgb2xlaCBzdW1iZXIgZGF5YSBvbmxpbmUgZGFuIGhhbnlhIDEwJSB5YW5nIHRpZGFrLg0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkocGxvdGx5KQ0KDQojIE1lbWJ1YXQgaGlzdG9ncmFtIGRlbmdhbiB2YXJpYXNpIHdhcm5hDQpwbG90X2x5KGRhdGEgPSBkYXRhLCANCiAgICAgICAgeCA9IH5CZXJhcGEuamFtLnJhdGEucmF0YS5BbmRhLm1lbmdhdHVyLndha3R1LnVudHVrLmJlbGFqYXIuc2V0aWFwLmhhcmkuc2VsYW1hLm1hc2EudWppYW4uLCAgIyBHYW50aSAnUGVuZGFwYXRhbicgZGVuZ2FuIG5hbWEga29sb20geWFuZyBzZXN1YWkNCiAgICAgICAgdHlwZSA9ICJoaXN0b2dyYW0iLA0KICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKG4gPSAzLCBuYW1lID0gIlNldDIiKVsxXSwgDQogICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpc3QoY29sb3IgPSAid2hpdGUiLCB3aWR0aCA9IDEpKSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJSYXRhLXJhdGEgV2FrdHUgQmVsYWphciIsDQogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiUmF0YS1yYXRhIFdha3R1IiksDQogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiRnJla3VlbnNpIikpDQpgYGANCg0KIERpYWdyYW0gaW5pIG51bmp1a2luIGthbGF1IGtlYmFueWFrYW4gb3JhbmcgYmVsYWphciAzLTQgamFtIHNlaGFyaSAoNDAlKS4gWWFuZyBiZWxhamFyIDEtMiBqYW0gc2FtYSA1LTYgamFtIGl0dSBtYXNpbmctbWFzaW5nIDIwJSwgZGFuIGN1bWEgZGlraXQgeWFuZyBzYW1wYWkgNy04IGphbSwgc2VraXRhciAxMCUuIEphZGksIGludGlueWEgbWF5b3JpdGFzIHBhZGEgYmVsYWphciAzLTQgamFtIHNlaGFyaSwgZGFuIHlhbmcgbGViaWggZGFyaSA2IGphbSBpdHUgamFyYW5nIGJhbmdldC4NCiANCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSBkcGx5cg0KbGlicmFyeShkcGx5cikNCg0KIyBNZW1idWF0IHRhYmVsIGRpc3RyaWJ1c2kgZGVuZ2FuIGtvbG9tIHBlcnNlbnRhc2UNCnRhYmVsX2RhdGEgPC0gZGF0YSAlPiUNCiAgY291bnQoU2ViZXJhcGEuc2VyaW5nLkFuZGEubWVyYXNhLnBlcmx1LnVudHVrLm1lbmd1YmFoLm1ldG9kZS5iZWxhamFyLkFuZGEuc2VsYW1hLm1hc2EudWppYW4uLCANCiAgICAgICAgbmFtZSA9ICJGcmVrdWVuc2kiKSAlPiUNCiAgbXV0YXRlKFBlcnNlbnRhc2UgPSByb3VuZCgoRnJla3VlbnNpIC8gc3VtKEZyZWt1ZW5zaSkpICogMTAwLCAyKSkgJT4lICAjIE1lbmdoaXR1bmcgcGVyc2VudGFzZQ0KICByZW5hbWUoIlBlcnViYWhhbiBNZXRvZGUgQmVsYWphciIgPSANCiAgICAgICAgIFNlYmVyYXBhLnNlcmluZy5BbmRhLm1lcmFzYS5wZXJsdS51bnR1ay5tZW5ndWJhaC5tZXRvZGUuYmVsYWphci5BbmRhLnNlbGFtYS5tYXNhLnVqaWFuLikgJT4lDQogIGFycmFuZ2UoZGVzYyhGcmVrdWVuc2kpKSAgIyBNZW5ndXJ1dGthbiBkYXJpIHlhbmcgdGVyYmVzYXIga2UgdGVya2VjaWwNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkaXN0cmlidXNpDQprbml0cjo6a2FibGUodGFiZWxfZGF0YSkgDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5IHlhbmcgZGlwZXJsdWthbg0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQoNCiMgTWVueWltcGFuIHRhYmVsIGRpc3RyaWJ1c2kgc2ViYWdhaSB0YWJsZV9kYXRhIGFnYXIgc2VzdWFpIGRlbmdhbiBuYW1hIG9iamVrIGRpIHBsb3QNCnRhYmxlX2RhdGEgPC0gdGFiZWxfZGF0YQ0KDQojIE1lbWJ1YXQgZGlhZ3JhbSBiYXRhbmcgZGVuZ2FuIGdncGxvdDINCnAgPC0gZ2dwbG90KHRhYmxlX2RhdGEsIGFlcyh4ID0gYFBlcnViYWhhbiBNZXRvZGUgQmVsYWphcmAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBGcmVrdWVuc2ksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBgUGVydWJhaGFuIE1ldG9kZSBCZWxhamFyYCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHBhc3RlMCgiUGVyc2VudGFzZTogIiwgUGVyc2VudGFzZSwgIiUiKSkpICsgICMgTWVuYW1iYWhrYW4gcGVyc2VudGFzZSBkaSB0b29sdGlwDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBGcmVrdWVuc2kpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAxLjEpLCAgIyBNZW5hbXBpbGthbiBoYW55YSBmcmVrdWVuc2kgZGkgbGFiZWwNCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDMpICsgICMgTWVuZ2F0dXIgd2FybmEgZGFuIHVrdXJhbiBsYWJlbA0KICBsYWJzKHRpdGxlID0gIkRpYWdyYW0gQmF0YW5nIERpc3RyaWJ1c2kgUGVydWJhaGFuIE1ldG9kZSBCZWxhamFyIiwNCiAgICAgICB4ID0gIlBlcnViYWhhbiBNZXRvZGUgQmVsYWphciIsDQogICAgICAgeSA9ICJGcmVrdWVuc2kiKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgICMgTWVuZ2d1bmFrYW4gcGFsZXQgd2FybmENCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAgICAgIyBNZW55ZW1idW55aWthbiBsZWdlbmRhDQogIGNvb3JkX2ZsaXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWVtYnVhdCBkaWFncmFtIG1lbmphZGkgaG9yaXpvbnRhbA0KDQojIE1lbmdvbnZlcnNpIGdncGxvdCBtZW5qYWRpIHBsb3RseSB1bnR1ayBpbnRlcmFrdGlmIGRlbmdhbiB0b29sdGlwIHBlcnNlbnRhc2UNCnBsb3RseV9wbG90IDwtIGdncGxvdGx5KHAsIHRvb2x0aXAgPSBjKCJ4IiwgInkiLCAidGV4dCIpKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QgaW50ZXJha3RpZg0KcGxvdGx5X3Bsb3QNCmBgYA0KDQoNCg0KRGlhZ3JhbSBpbmkgbnVuanVraW4ga2FsYXUgOTAlIHJlc3BvbmRlbiBuZ2VyYXNhIHN1bWJlciBkYXlhIG9ubGluZSBpdHUgYmVybWFuZmFhdCBidWF0IGJlbGFqYXIuIFNlYmFueWFrIDMwJSBuZ2VyYXNhIHNhbmdhdCBtZW1iYW50dSwgMzAlIGJhbnR1LCBkYW4gMzAlIGN1a3VwIGJhbnR1LCBzZW1lbnRhcmEgY3VtYSAxMCUgeWFuZyBiaWxhbmcgc2VkaWtpdCBtZW1iYW50dS4gSmFkaSwgYmlzYSBkaXNpbXB1bGluIGthbGF1IHN1bWJlciBkYXlhIG9ubGluZSBwdW55YSBwZW5nYXJ1aCBwb3NpdGlmIGJlc2FyIGJ1YXQgYmVsYWphci4NCg0KIyMgS0VTSU1QVUxBTg0KDQpEYXJpIGRhdGEgaW5pLCBiYWh3YSBrZWJhbnlha2FuIG1haGFzaXN3YSBiZWxhamFyIHNla2l0YXIgMy00IGphbSBzZWhhcmkgcGFzIG1hc2EgdWppYW4uIEJlYmVyYXBhIGRhcmkgbWVyZWthIG1lbWFuZyBiZWxhamFyIGxlYmloIGxhbWEsIHNhbXBhaSA1LTYgamFtLCB0ZXJ1dGFtYSB5YW5nIG5nZXJhc2Egc3VtYmVyIGRheWEgb25saW5lIGl0dSBuZ2ViYW50dSBiYW5nZXQgYnVhdCBueWVyYXAgbWF0ZXJpLiBGYWt0b3Iga2F5YWsgc3RyZXMga2FyZW5hIG1pa2lyaW4gbmlsYWkgdWppYW4ganVnYSBjdWt1cCBtZW1iZXJpa2FuIGVmZWsga2UgZm9rdXMgYmVsYWphci4gQmFueWFrIHlhbmcgYmlsYW5nIG1lcmVrYSBzZXJpbmcga2hhd2F0aXIgYXRhdSBtYWxhaCBoYXJ1cyBjb2JhLWNvYmEgbWV0b2RlIGJlbGFqYXIgYmFydSBidWF0IGxlYmloIGVmZWt0aWYuIA0KDQpTZWxhaW4gaXR1LCBhZGEgYWphIGdhbmdndWFuIGtheWFrIG5vdGlmaWthc2kgZGkgZ2FkZ2V0IGF0YXUgc3Vhc2FuYSBydW1haCB5YW5nIGJlcmlzaWssIHlhbmcgYmlraW4ga29uc2VudHJhc2kgYnV5YXIuIEJ1YXQgbmdhdGFzaW4gc3RyZXMsIGJpYXNhbnlhIGtpdGEgY29iYSBpc3RpcmFoYXQsIG9sYWhyYWdhIHJpbmdhbiwgYXRhdSBzZWthZGFyIGdhbnRpIHN1YXNhbmEgYmlhciBsZWJpaCByaWxla3MuIEphZGksIGJpc2EgZGlzaW1wdWxpbiBrYWxhdSBzdWFzYW5hIHlhbmcgbnlhbWFuIGRhbiBtYW5hamVtZW4gd2FrdHUgeWFuZyBva2UgaXR1IHBlbnRpbmcgYmFuZ2V0IGJ1YXQgbmluZ2thdGluIGtlYmlhc2FhbiBiZWxhamFyLCB0ZXJ1dGFtYSBwYXMgcGVyc2lhcGFuIHVqaWFuLg0KDQojIFJFRkVSRU5TSQ0KLSBGYWt1bHRhcyBLZWd1cnVhbiBkYW4gSWxtdSBQZW5kaWRpa2FuLiAobi5kLikuIFBlcmFuIHN0YXRpc3Rpa2EgZGFsYW0gZWtvbm9taSwgcGVuZGlkaWthbiwga2VzZWhhdGFuLCBkYW4gbGluZ2t1bmdhbi4gVW5pdmVyc2l0YXMgTXVoYW1tYWRpeWFoIFN1cmFiYXlhLiA8YSBocmVmID0gIiBodHRwczovL2ZraXAudW0tc3VyYWJheWEuYWMuaWQiPktsaWsgRGlzaW5pPC9hPg0KDQotIFdpamF5YSwgSC4sIFB1cm5vbW8sIEEuIFAuLCAmIE51Z3JvaG8sIFIuIFcuICgyMDIwKS4gSW1wbGVtZW50YXNpIG1ldG9kZSBzdGF0aXN0aWthIGRhbGFtIHBlbmluZ2thdGFuIGt1YWxpdGFzIHBlbmRpZGlrYW4gZGkgSW5kb25lc2lhLiBKdXJuYWwgUGVuZGlkaWthbiBTZWtvbGFoIERhc2FyLCA3KDIpLCAxNS0yNC4gPGEgaHJlZiA9ICJodHRwczovL2p1cm5hbC51bXB3ci5hYy5pZCI+S2xpayBEaXNpbmk8L2E+DQoNCi0gU2ltYW5qdW50YWssIEwuLCAmIFJhaG1hZGFuaSwgRC4gKDIwMjEpLiBQZXJhbiBzdCBhdGlzdGlrYSBkYWxhbSBwZW1iZWxhamFyYW4gbWF0ZW1hdGlrYSBkaSBzZWtvbGFoIGRhc2FyLiBKdXJuYWwgUGVuZGFzLCA1KDEpLCAzMy00NS48YSBocmVmID0gImh0dHBzOi8vam91cm5hbC51bnBhcy5hYy5pZCI+S2xpayBkaXNpbmk8L2E+DQoNCi0gQWxhbXN5YWgsIEguLCAmIFN1cnlhbmksIFQuICgyMDIxKS4gUGVuZXJhcGFuIHN0YXRpc3Rpa2EgZGFsYW0gcGVuZ2VtYmFuZ2FuIGtlc2VoYXRhbiBsaW5na3VuZ2FuLiBBbGFjcml0eTogSm91cm5hbCBvZiBIZWFsdGggYW5kIEVudmlyb25tZW50YWwgU2NpZW5jZSwgMygxKSwgOS0xOC4gPGEgaHJlZiA9ICJodHRwczovL2xwcHBpcHVibGlzaGluZy5jb20iPktsaWsgZGlzaW5pPC9hPg0KDQotIERTY2llbmNlbGFicy4gKG4uZC4pLiBQZW5nYW50YXIgU3RhdGlzdGlrIHVudHVrIFNhaW5zIERhdGEuIEJvb2tkb3duLiBSZXRyaWV2ZWQgZnJvbSA8YSBocmVmID0gImh0dHBzOi8vYm9va2Rvd24ub3JnL2RzY2llbmNlbGFicy9zdGF0aXN0aWthX2Rhc2FyL19ib29rLyIgPmtsaWsgZGlzaW5pPC9hPg0KDQoNCg0KDQoNCg0KDQoNCg0K