
SOAL 1
Andikan Anda adalah bagian dari tim riset lapangan yang diminta untuk
melakukan survei tingkat penggunaan aplikasi transportasi online di 3
kota menengah di Sumatera. Target sampel total adalah 600 responden,
masing-masing 200 per kota. Tetapi, setelah 2 minggu melakukan survei
anda menemukan:
Di Kota A, tim berhasil mendapatkan 250 responden.
Di Kota B, hanya 120 responden yang dapat diwawancarai.
Di Kota C, 180 responden.
Instruksi:
A. Jelaskan dua jenis kesalahan sampling yang terjadi berdasarkan
situasi ini.
B. Jika Anda harus menyesuaikan bobot untuk mengembalikan
representasi proporsional,
bagaimana Anda akan menghitungnya?
Jawaban
(a): Jenis Kesalahan Sampling
- Overcoverage (Kelebihan Responden)
Terjadi di: Kota A
Masalah: Responden melebihi target (target 200, dapat 250).
Dampak: Data Kota A jadi terlalu dominan di hasil survei.
- Undercoverage (Kekurangan Responden)
Terjadi di: Kota B & C
Kota B: Target 200, dapat 120 (kurang 80)
Kota C: Target 200, dapat 180 (kurang 20)
Dampak: Data Kota B & C kurang terepresentasi → hasil survei bisa
bias.
(b): Menghitung Bobot (Weighting Adjustment)
Tujuan: Membuat data proporsional seolah-olah semua kota dapat 200
responden.
Langkah-langkah:
- Hitung Total Aktual Responden
250 (A) + 120 (B) + 180 (C) = 550 responden
- Hitung Bobot Tiap Kota:
Rumus:
Bobot = Baris Sampel/Responden Aktual
Perhitungan:
-Kota A: 200 / 250 = 0.8
-Kota B: 200 / 120 ≈ 1.67
-Kota C: 200 / 180 ≈ 1.11
- Tabel Bobot (Opsional)
# Data Frame
data_survei <- data.frame(
Kota = c("A", "B", "C"),
Responden = c(250, 120, 180),
Target = c(200, 200, 200)
)
# Hitung Bobot
data_survei$Bobot <- data_survei$Target / data_survei$Responden
# Tampilkan Tabel
knitr::kable(data_survei, align = 'c', caption = "Tabel Bobot Survei")
Tabel Bobot Survei
A |
250 |
200 |
0.800000 |
B |
120 |
200 |
1.666667 |
C |
180 |
200 |
1.111111 |
- Contoh Aplikasi Bobot:
-Jika responden Kota A memberi nilai 80, setelah dibobot: 80 * 0.8 =
64.
-Responden Kota B nilai 90 → 90 * 1.67 ≈ 150.3.
Implementasi di R
# Langkah 1: Buat Data Frame
data_survei <- data.frame(
Kota = c("A", "B", "C"),
Responden = c(250, 120, 180),
Target = c(200, 200, 200)
)
# Langkah 2: Hitung Bobot
data_survei$Bobot <- data_survei$Target / data_survei$Responden
# Tampilkan Hasil
print(data_survei)
## Kota Responden Target Bobot
## 1 A 250 200 0.800000
## 2 B 120 200 1.666667
## 3 C 180 200 1.111111
SOAL 2
Buatlah desain rancangan survei tentang persepsi kenyamanan pengguna
ojek online saat jam sibuk (07.00–09.00 dan 17.00–19.00). Instruksi:
Desain pendekatan sampling yang memungkinkan Anda menangkap
persepsi pengguna secara representatif pada jam sibuk, tanpa melakukan
survei sepanjang hari.
Sertakan rancangan waktu, metode pemilihan responden, dan
justifikasi pemilihan unit sampling.
Jelaskan bagaimana Anda akan menyesuaikan hasil survei jika 60%
responden berasal dari pagi hari, sementara 40% dari sore hari,
sedangkan data historis menunjukkan pengguna ojek online saat sore hari
dua kali lebih banyak dibanding pagi.
Jawaban
a. Pendekatan Sampling Representatif
Metode: Stratified Time-Based Sampling
- Langkah:
- Stratifikasi waktu:
- Strata 1: Pagi (07.00–09.00)
- Strata 2: Sore (17.00–19.00)
- Alokasi sampel:
- Proporsi historis (1:2 untuk pagi:sore) → 33% pagi, 67% sore.
- Random sampling di setiap strata (via
aplikasi/street intercept).
Justifikasi:
> Memastikan representasi kedua waktu tanpa survei 24 jam.
b. Rancangan Survei
Waktu & Metode
- Periode survei: 1–2 minggu (weekday +
weekend).
- Metode pengumpulan:
- On-App Pop-Up: Kuesioner singkat di aplikasi ojol.
- Street Intercept: Wawancara di lokasi sibuk (contoh:
stasiun).
Unit Sampling
- Kriteria:
- Pengguna aktif (min. 1x order/jam sibuk dalam 1 bulan).
- Justifikasi:
> Unit relevan karena pengalaman langsung dengan kepadatan.
c. Penyesuaian Bobot Responden
Langkah:
1. Hitung bobot berdasarkan ketidakseimbangan data:
# Contoh kode R untuk menghitung bobot
weight_pagi <- (1/3) / 0.6 # Bobot pagi
weight_sore <- (2/3) / 0.4 # Bobot sore
- Analisis per strata, lalu gabungkan:
\[
\text{Skor Akhir} = (0.6 \times \text{Skor Pagi} \times
\text{weight\_pagi}) + (0.4 \times \text{Skor Sore} \times
\text{weight\_sore})
\]
Tambahan
- Tools Survei: Google Forms/Typeform dengan skala
Likert.
- Pilot Test: 10–20 responden uji coba.
SOAL 3
Anda ditugaskan oleh biro akademik kampus untuk merancang instrumen
survei yang bertujuan mengevaluasi kepuasan mahasiswa terhadap layanan
akademik, yang mencakup layanan seperti: KRS online, bimbingan akademik,
pelayanan administrasi, akses informasi akademik, dan bantuan
penyelesaian studi.
Tim peneliti meminta Anda untuk:
- Merancang 25 pertanyaan utama dengan variasi skala dan bentuk
pertanyaan.
- Merancang sistem validasi instrumen.
- Menentukan metode distribusi dan pengujian kuesioner secara
statistik.
- Menyiapkan simulasi strategi pengambilan sampel dan pengolahan data
awal.
Output Laporan yang diharapkan dalam bentuk naratif, mencakup:
• Desain pertanyaan
• Skema validasi
• Strategi distribusi dan sampling
• Simulasi data dan analisis awal
Laporan
1. Desain Pertanyaan
Survei dirancang untuk mengukur tingkat kepuasan mahasiswa terhadap
lima aspek layanan akademik utama:
-KRS Online
-Bimbingan Akademik
-Pelayanan Administrasi
-Akses Informasi Akademik
-Bantuan Penyelesaian Studi
Total terdapat 25 pertanyaan, terdiri dari:
-20 pertanyaan skala Likert (1–5),
-3 pertanyaan pilihan ganda,
-2 pertanyaan terbuka.
Skala Likert digunakan untuk menilai frekuensi, kepuasan, dan
efektivitas layanan. Variasi bentuk pertanyaan bertujuan agar data yang
diperoleh bersifat kuantitatif dan kualitatif.
2. Skema Validasi
Validasi dilakukan menggunakan validasi isi (content validity) dengan
membandingkan setiap butir pertanyaan terhadap indikator yang diukur.
Evaluasi dilakukan sendiri oleh perancang dengan mengacu pada literatur
akademik terkait survei layanan pendidikan tinggi. Butir-butir dinilai
berdasarkan kesesuaian, kejelasan, dan keterukuran.
3. Strategi Distribusi dan Pengambilan Sampel (Simulasi)
Survei direncanakan akan disebarkan secara daring menggunakan Google
Forms melalui WhatsApp grup mahasiswa, email kampus, dan media sosial
akademik. Metode ini dipilih karena efisien dan menjangkau populasi
luas.
Teknik pengambilan sampel yang digunakan adalah stratified random
sampling, yaitu membagi populasi berdasarkan jurusan dan angkatan.
Responden dipilih secara acak dari masing-masing kelompok.
Simulasi perhitungan menggunakan rumus Slovin (dengan margin of error
10%) menunjukkan bahwa dari populasi 1000 mahasiswa, diperlukan minimal
91 responden untuk mewakili populasi secara statistik.
4. Simulasi Data dan Analisis Awal
Simulasi dilakukan dengan mengasumsikan 91 responden mengisi survei.
Hasil rata-rata skor per aspek:
## Warning: package 'knitr' was built under R version 4.4.2
Tabel Rata-Rata Skor Simulasi Kepuasan Mahasiswa per
Aspek
Layanan KRS Online |
4.1 |
Bimbingan Akademik |
3.7 |
Pelayanan Administrasi |
3.9 |
Akses Informasi Akademik |
3.8 |
Bantuan Penyelesaian Studi |
3.5 |
Analisis awal menunjukkan bahwa secara umum tingkat kepuasan
mahasiswa cukup baik, meskipun aspek bantuan penyelesaian studi perlu
perhatian lebih.
LS0tDQp0aXRsZTogIlVUUyINCnN1YnRpdGxlOiAiU2FtcGxpbmcgYW5kIFN1cnZleSB0ZWNobmlxdWUiDQphdXRob3I6ICJNdWhhbW1hZCBOYWJpbCBQcmF0YW1hIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlLmNzcyINCi0tLQ0KDQo8aW1nIGlkPSJpc2lfbmFtYSIgc3JjPSJDOi9Vc2Vycy9NIE5hYmlsIFByYXRhbWEvT25lRHJpdmUvUGljdHVyZXMvU2NyZWVuc2hvdHMvR2FtYmFyIFdoYXRzQXBwIDIwMjQtMTItMDYgcHVrdWwgMTMuMzMuMTVfYzNmZDBmYzcuanBnIiBhbHQ9IkxvZ28iIHN0eWxlPSJ3aWR0aDoyMDBweDsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiPg0KDQojICoqU09BTCAxKioNCkFuZGlrYW4gQW5kYSBhZGFsYWggYmFnaWFuIGRhcmkgdGltIHJpc2V0IGxhcGFuZ2FuIHlhbmcgZGltaW50YSB1bnR1ayBtZWxha3VrYW4NCnN1cnZlaSB0aW5na2F0IHBlbmdndW5hYW4gYXBsaWthc2kgdHJhbnNwb3J0YXNpIG9ubGluZSBkaSAzIGtvdGEgbWVuZW5nYWggZGkgU3VtYXRlcmEuDQpUYXJnZXQgc2FtcGVsIHRvdGFsIGFkYWxhaCA2MDAgcmVzcG9uZGVuLCBtYXNpbmctbWFzaW5nIDIwMCBwZXIga290YS4gVGV0YXBpLCBzZXRlbGFoDQoyIG1pbmdndSBtZWxha3VrYW4gc3VydmVpIGFuZGEgbWVuZW11a2FuOg0KDQotIERpIEtvdGEgQSwgdGltIGJlcmhhc2lsIG1lbmRhcGF0a2FuIDI1MCByZXNwb25kZW4uDQoNCi0gRGkgS290YSBCLCBoYW55YSAxMjAgcmVzcG9uZGVuIHlhbmcgZGFwYXQgZGl3YXdhbmNhcmFpLg0KDQotIERpIEtvdGEgQywgMTgwIHJlc3BvbmRlbi4NCg0KSW5zdHJ1a3NpOg0KDQpBLiBKZWxhc2thbiBkdWEgamVuaXMga2VzYWxhaGFuIHNhbXBsaW5nIHlhbmcgdGVyamFkaSBiZXJkYXNhcmthbiBzaXR1YXNpIGluaS4NCg0KQi4gSmlrYSBBbmRhIGhhcnVzIG1lbnllc3VhaWthbiBib2JvdCB1bnR1ayBtZW5nZW1iYWxpa2FuIHJlcHJlc2VudGFzaSBwcm9wb3JzaW9uYWwsDQoNCmJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVuZ2hpdHVuZ255YT8NCg0KIyMgSmF3YWJhbg0KIyMjIChhKTogSmVuaXMgS2VzYWxhaGFuIFNhbXBsaW5nDQoNCjEuIE92ZXJjb3ZlcmFnZSAoS2VsZWJpaGFuIFJlc3BvbmRlbikNCg0KVGVyamFkaSBkaTogS290YSBBDQoNCk1hc2FsYWg6IFJlc3BvbmRlbiBtZWxlYmloaSB0YXJnZXQgKHRhcmdldCAyMDAsIGRhcGF0IDI1MCkuDQoNCkRhbXBhazogRGF0YSBLb3RhIEEgamFkaSB0ZXJsYWx1IGRvbWluYW4gZGkgaGFzaWwgc3VydmVpLg0KDQoyLiBVbmRlcmNvdmVyYWdlIChLZWt1cmFuZ2FuIFJlc3BvbmRlbikNCg0KVGVyamFkaSBkaTogS290YSBCICYgQw0KDQpLb3RhIEI6IFRhcmdldCAyMDAsIGRhcGF0IDEyMCAoa3VyYW5nIDgwKQ0KDQpLb3RhIEM6IFRhcmdldCAyMDAsIGRhcGF0IDE4MCAoa3VyYW5nIDIwKQ0KDQpEYW1wYWs6IERhdGEgS290YSBCICYgQyBrdXJhbmcgdGVyZXByZXNlbnRhc2kg4oaSIGhhc2lsIHN1cnZlaSBiaXNhIGJpYXMuDQoNCiMjIyAoYik6IE1lbmdoaXR1bmcgQm9ib3QgKFdlaWdodGluZyBBZGp1c3RtZW50KQ0KIA0KVHVqdWFuOiBNZW1idWF0IGRhdGEgcHJvcG9yc2lvbmFsIHNlb2xhaC1vbGFoIHNlbXVhIGtvdGEgZGFwYXQgMjAwIHJlc3BvbmRlbi4NCg0KTGFuZ2thaC1sYW5na2FoOg0KDQoxLiBIaXR1bmcgVG90YWwgQWt0dWFsIFJlc3BvbmRlbg0KDQoyNTAgKEEpICsgMTIwIChCKSArIDE4MCAoQykgPSA1NTAgcmVzcG9uZGVuICANCg0KMi4gSGl0dW5nIEJvYm90IFRpYXAgS290YToNCg0KKipSdW11czoqKg0KDQpCb2JvdCA9IEJhcmlzIFNhbXBlbC9SZXNwb25kZW4gQWt0dWFsDQoNCioqUGVyaGl0dW5nYW46KioNCg0KLUtvdGEgQTogMjAwIC8gMjUwID0gMC44DQoNCi1Lb3RhIEI6IDIwMCAvIDEyMCDiiYggMS42Nw0KDQotS290YSBDOiAyMDAgLyAxODAg4omIIDEuMTENCg0KMy4gVGFiZWwgQm9ib3QgKE9wc2lvbmFsKQ0KDQpgYGB7cn0NCiMgRGF0YSBGcmFtZQ0KZGF0YV9zdXJ2ZWkgPC0gZGF0YS5mcmFtZSgNCiAgS290YSA9IGMoIkEiLCAiQiIsICJDIiksDQogIFJlc3BvbmRlbiA9IGMoMjUwLCAxMjAsIDE4MCksDQogIFRhcmdldCA9IGMoMjAwLCAyMDAsIDIwMCkNCikNCg0KIyBIaXR1bmcgQm9ib3QNCmRhdGFfc3VydmVpJEJvYm90IDwtIGRhdGFfc3VydmVpJFRhcmdldCAvIGRhdGFfc3VydmVpJFJlc3BvbmRlbg0KDQojIFRhbXBpbGthbiBUYWJlbA0Ka25pdHI6OmthYmxlKGRhdGFfc3VydmVpLCBhbGlnbiA9ICdjJywgY2FwdGlvbiA9ICJUYWJlbCBCb2JvdCBTdXJ2ZWkiKQ0KYGBgDQo0LiBDb250b2ggQXBsaWthc2kgQm9ib3Q6DQoNCi1KaWthIHJlc3BvbmRlbiBLb3RhIEEgbWVtYmVyaSBuaWxhaSA4MCwgc2V0ZWxhaCBkaWJvYm90OiA4MCAqIDAuOCA9IDY0Lg0KDQotUmVzcG9uZGVuIEtvdGEgQiBuaWxhaSA5MCDihpIgOTAgKiAxLjY3IOKJiCAxNTAuMy4NCg0KIyMjIEltcGxlbWVudGFzaSBkaSBSDQpgYGB7cn0NCiMgTGFuZ2thaCAxOiBCdWF0IERhdGEgRnJhbWUgIA0KZGF0YV9zdXJ2ZWkgPC0gZGF0YS5mcmFtZSggIA0KICBLb3RhID0gYygiQSIsICJCIiwgIkMiKSwgIA0KICBSZXNwb25kZW4gPSBjKDI1MCwgMTIwLCAxODApLCAgDQogIFRhcmdldCA9IGMoMjAwLCAyMDAsIDIwMCkgIA0KKSAgDQoNCiMgTGFuZ2thaCAyOiBIaXR1bmcgQm9ib3QgIA0KZGF0YV9zdXJ2ZWkkQm9ib3QgPC0gZGF0YV9zdXJ2ZWkkVGFyZ2V0IC8gZGF0YV9zdXJ2ZWkkUmVzcG9uZGVuICANCg0KIyBUYW1waWxrYW4gSGFzaWwgIA0KcHJpbnQoZGF0YV9zdXJ2ZWkpICANCmBgYA0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQojIE9wdGlvbmFsOiBBZGQgYW55IFIgc2V0dXAgY29kZSBoZXJlIGlmIHlvdSdyZSBhbmFseXppbmcgc3VydmV5IGRhdGENCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UpDQpgYGANCiMgKipTT0FMIDIqKg0KQnVhdGxhaCBkZXNhaW4gcmFuY2FuZ2FuIHN1cnZlaSB0ZW50YW5nIHBlcnNlcHNpIGtlbnlhbWFuYW4gcGVuZ2d1bmEgb2playBvbmxpbmUNCnNhYXQgamFtIHNpYnVrICgwNy4wMOKAkzA5LjAwIGRhbiAxNy4wMOKAkzE5LjAwKS4NCkluc3RydWtzaToNCg0KYS4gRGVzYWluIHBlbmRla2F0YW4gc2FtcGxpbmcgeWFuZyBtZW11bmdraW5rYW4gQW5kYSBtZW5hbmdrYXAgcGVyc2Vwc2kNCnBlbmdndW5hIHNlY2FyYSByZXByZXNlbnRhdGlmIHBhZGEgamFtIHNpYnVrLCB0YW5wYSBtZWxha3VrYW4gc3VydmVpIHNlcGFuamFuZw0KaGFyaS4NCg0KYi4gU2VydGFrYW4gcmFuY2FuZ2FuIHdha3R1LCBtZXRvZGUgcGVtaWxpaGFuIHJlc3BvbmRlbiwgZGFuIGp1c3RpZmlrYXNpDQpwZW1pbGloYW4gdW5pdCBzYW1wbGluZy4NCg0KYy4gSmVsYXNrYW4gYmFnYWltYW5hIEFuZGEgYWthbiBtZW55ZXN1YWlrYW4gaGFzaWwgc3VydmVpIGppa2EgNjAlIHJlc3BvbmRlbiBiZXJhc2FsDQpkYXJpIHBhZ2kgaGFyaSwgc2VtZW50YXJhIDQwJSBkYXJpIHNvcmUgaGFyaSwgc2VkYW5na2FuIGRhdGEgaGlzdG9yaXMgbWVudW5qdWtrYW4NCnBlbmdndW5hIG9qZWsgb25saW5lIHNhYXQgc29yZSBoYXJpIGR1YSBrYWxpIGxlYmloIGJhbnlhayBkaWJhbmRpbmcgcGFnaS4NCg0KIyMgSmF3YWJhbg0KDQojIyMgKiphLiBQZW5kZWthdGFuIFNhbXBsaW5nIFJlcHJlc2VudGF0aWYqKiAgDQoqKk1ldG9kZToqKiAqU3RyYXRpZmllZCBUaW1lLUJhc2VkIFNhbXBsaW5nKiAgDQoNCi0gKipMYW5na2FoOioqICANCiAgMS4gKipTdHJhdGlmaWthc2kgd2FrdHUqKjogIA0KICAgICAtIFN0cmF0YSAxOiBQYWdpICgwNy4wMOKAkzA5LjAwKSAgDQogICAgIC0gU3RyYXRhIDI6IFNvcmUgKDE3LjAw4oCTMTkuMDApICANCiAgMi4gKipBbG9rYXNpIHNhbXBlbCoqOiAgDQogICAgIC0gUHJvcG9yc2kgaGlzdG9yaXMgKDE6MiB1bnR1ayBwYWdpOnNvcmUpIOKGkiAzMyUgcGFnaSwgNjclIHNvcmUuICANCiAgMy4gKipSYW5kb20gc2FtcGxpbmcqKiBkaSBzZXRpYXAgc3RyYXRhICh2aWEgYXBsaWthc2kvc3RyZWV0IGludGVyY2VwdCkuICANCg0KKipKdXN0aWZpa2FzaSoqOiAgDQo+IE1lbWFzdGlrYW4gcmVwcmVzZW50YXNpIGtlZHVhIHdha3R1IHRhbnBhIHN1cnZlaSAyNCBqYW0uICANCg0KLS0tDQoNCiMjIyAqKmIuIFJhbmNhbmdhbiBTdXJ2ZWkqKiAgDQoNCiMjIyMgKipXYWt0dSAmIE1ldG9kZSoqICANCi0gKipQZXJpb2RlIHN1cnZlaSoqOiAx4oCTMiBtaW5nZ3UgKHdlZWtkYXkgKyB3ZWVrZW5kKS4gIA0KLSAqKk1ldG9kZSBwZW5ndW1wdWxhbioqOiAgDQogIC0gKk9uLUFwcCBQb3AtVXAqOiBLdWVzaW9uZXIgc2luZ2thdCBkaSBhcGxpa2FzaSBvam9sLiAgDQogIC0gKlN0cmVldCBJbnRlcmNlcHQqOiBXYXdhbmNhcmEgZGkgbG9rYXNpIHNpYnVrIChjb250b2g6IHN0YXNpdW4pLiAgDQoNCiMjIyMgKipVbml0IFNhbXBsaW5nKiogIA0KLSAqKktyaXRlcmlhKio6ICANCiAgLSBQZW5nZ3VuYSBha3RpZiAobWluLiAxeCBvcmRlci9qYW0gc2lidWsgZGFsYW0gMSBidWxhbikuICANCi0gKipKdXN0aWZpa2FzaSoqOiAgDQogID4gVW5pdCByZWxldmFuIGthcmVuYSBwZW5nYWxhbWFuIGxhbmdzdW5nIGRlbmdhbiBrZXBhZGF0YW4uICANCg0KLS0tDQoNCiMjIyAqKmMuIFBlbnllc3VhaWFuIEJvYm90IFJlc3BvbmRlbioqICANCg0KKipMYW5na2FoKio6ICANCjEuIEhpdHVuZyBib2JvdCBiZXJkYXNhcmthbiBrZXRpZGFrc2VpbWJhbmdhbiBkYXRhOiAgDQogICBgYGB7ciB3ZWlnaHQtY2FsY3VsYXRpb24sIGVjaG89VFJVRX0NCiAgICMgQ29udG9oIGtvZGUgUiB1bnR1ayBtZW5naGl0dW5nIGJvYm90DQogICB3ZWlnaHRfcGFnaSA8LSAoMS8zKSAvIDAuNiAgIyBCb2JvdCBwYWdpDQogICB3ZWlnaHRfc29yZSA8LSAoMi8zKSAvIDAuNCAgIyBCb2JvdCBzb3JlDQogICBgYGANCjIuIEFuYWxpc2lzIHBlciBzdHJhdGEsIGxhbHUgZ2FidW5na2FuOiAgDQogICBcWw0KICAgXHRleHR7U2tvciBBa2hpcn0gPSAoMC42IFx0aW1lcyBcdGV4dHtTa29yIFBhZ2l9IFx0aW1lcyBcdGV4dHt3ZWlnaHRcX3BhZ2l9KSArICgwLjQgXHRpbWVzIFx0ZXh0e1Nrb3IgU29yZX0gXHRpbWVzIFx0ZXh0e3dlaWdodFxfc29yZX0pDQogICBcXQ0KDQotLS0NCg0KIyMjICoqVGFtYmFoYW4qKiAgDQotICoqVG9vbHMgU3VydmVpKio6IEdvb2dsZSBGb3Jtcy9UeXBlZm9ybSBkZW5nYW4gc2thbGEgTGlrZXJ0LiAgDQotICoqUGlsb3QgVGVzdCoqOiAxMOKAkzIwIHJlc3BvbmRlbiB1amkgY29iYS4gIA0KDQpgYGB7ciBvcHRpb25hbC1hbmFseXNpcywgZXZhbD1GQUxTRX0NCiMgQ29udG9oIGFuYWxpc2lzIGRhdGEgc3VydmVpIChvcHNpb25hbCkNCiMgZGF0YSAlPiUgZ3JvdXBfYnkod2FrdHUpICU+JSBzdW1tYXJpc2UobWVhbl9rZW55YW1hbmFuID0gbWVhbihza29yKSkNCmBgYA0KIyAqKlNPQUwgMyoqDQpBbmRhIGRpdHVnYXNrYW4gb2xlaCBiaXJvIGFrYWRlbWlrIGthbXB1cyB1bnR1ayBtZXJhbmNhbmcgaW5zdHJ1bWVuIHN1cnZlaSB5YW5nDQpiZXJ0dWp1YW4gbWVuZ2V2YWx1YXNpIGtlcHVhc2FuIG1haGFzaXN3YSB0ZXJoYWRhcCBsYXlhbmFuIGFrYWRlbWlrLCB5YW5nDQptZW5jYWt1cCBsYXlhbmFuIHNlcGVydGk6IEtSUyBvbmxpbmUsIGJpbWJpbmdhbiBha2FkZW1paywgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSwgYWtzZXMNCmluZm9ybWFzaSBha2FkZW1paywgZGFuIGJhbnR1YW4gcGVueWVsZXNhaWFuIHN0dWRpLg0KDQpUaW0gcGVuZWxpdGkgbWVtaW50YSBBbmRhIHVudHVrOg0KDQotIE1lcmFuY2FuZyAyNSBwZXJ0YW55YWFuIHV0YW1hIGRlbmdhbiB2YXJpYXNpIHNrYWxhIGRhbiBiZW50dWsgcGVydGFueWFhbi4NCi0gTWVyYW5jYW5nIHNpc3RlbSB2YWxpZGFzaSBpbnN0cnVtZW4uDQotIE1lbmVudHVrYW4gbWV0b2RlIGRpc3RyaWJ1c2kgZGFuIHBlbmd1amlhbiBrdWVzaW9uZXIgc2VjYXJhIHN0YXRpc3Rpay4NCi0gTWVueWlhcGthbiBzaW11bGFzaSBzdHJhdGVnaSBwZW5nYW1iaWxhbiBzYW1wZWwgZGFuIHBlbmdvbGFoYW4gZGF0YSBhd2FsLg0KDQpPdXRwdXQgTGFwb3JhbiB5YW5nIGRpaGFyYXBrYW4gZGFsYW0gYmVudHVrIG5hcmF0aWYsIG1lbmNha3VwOg0KDQrigKIgRGVzYWluIHBlcnRhbnlhYW4NCg0K4oCiIFNrZW1hIHZhbGlkYXNpDQoNCuKAoiBTdHJhdGVnaSBkaXN0cmlidXNpIGRhbiBzYW1wbGluZw0KDQrigKIgU2ltdWxhc2kgZGF0YSBkYW4gYW5hbGlzaXMgYXdhbA0KDQojIyAqKkphd2FiYW4qKiANCg0KIyMjIFN1cnZlaSBNZW5nZ3VuYWthbjogR29vZ2xlIEZvcm0NCkxpbmsgdG8gQWNjZXMgR29vZ2xlIEZvcm0gKGh0dHBzOi8vZm9ybXMuZ2xlL1p1dHdvVGdNRXNVbmloWDI3P2F1dGh1c2VyPTEuY29tKQ0KDQojIyBMYXBvcmFuDQojIyMgMS4gRGVzYWluIFBlcnRhbnlhYW4NClN1cnZlaSBkaXJhbmNhbmcgdW50dWsgbWVuZ3VrdXIgdGluZ2thdCBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGltYSBhc3BlayBsYXlhbmFuIGFrYWRlbWlrIHV0YW1hOg0KDQotS1JTIE9ubGluZQ0KDQotQmltYmluZ2FuIEFrYWRlbWlrDQoNCi1QZWxheWFuYW4gQWRtaW5pc3RyYXNpDQoNCi1Ba3NlcyBJbmZvcm1hc2kgQWthZGVtaWsNCg0KLUJhbnR1YW4gUGVueWVsZXNhaWFuIFN0dWRpDQoNClRvdGFsIHRlcmRhcGF0IDI1IHBlcnRhbnlhYW4sIHRlcmRpcmkgZGFyaToNCg0KLTIwIHBlcnRhbnlhYW4gc2thbGEgTGlrZXJ0ICgx4oCTNSksDQoNCi0zIHBlcnRhbnlhYW4gcGlsaWhhbiBnYW5kYSwNCg0KLTIgcGVydGFueWFhbiB0ZXJidWthLg0KDQpTa2FsYSBMaWtlcnQgZGlndW5ha2FuIHVudHVrIG1lbmlsYWkgZnJla3VlbnNpLCBrZXB1YXNhbiwgZGFuIGVmZWt0aXZpdGFzIGxheWFuYW4uIFZhcmlhc2kgYmVudHVrIHBlcnRhbnlhYW4gYmVydHVqdWFuIGFnYXIgZGF0YSB5YW5nIGRpcGVyb2xlaCBiZXJzaWZhdCBrdWFudGl0YXRpZiBkYW4ga3VhbGl0YXRpZi4NCg0KIyMjIDIuIFNrZW1hIFZhbGlkYXNpDQoNClZhbGlkYXNpIGRpbGFrdWthbiBtZW5nZ3VuYWthbiB2YWxpZGFzaSBpc2kgKGNvbnRlbnQgdmFsaWRpdHkpIGRlbmdhbiBtZW1iYW5kaW5na2FuIHNldGlhcCBidXRpciBwZXJ0YW55YWFuIHRlcmhhZGFwIGluZGlrYXRvciB5YW5nIGRpdWt1ci4gRXZhbHVhc2kgZGlsYWt1a2FuIHNlbmRpcmkgb2xlaCBwZXJhbmNhbmcgZGVuZ2FuIG1lbmdhY3UgcGFkYSBsaXRlcmF0dXIgYWthZGVtaWsgdGVya2FpdCBzdXJ2ZWkgbGF5YW5hbiBwZW5kaWRpa2FuIHRpbmdnaS4gQnV0aXItYnV0aXIgZGluaWxhaSBiZXJkYXNhcmthbiBrZXNlc3VhaWFuLCBrZWplbGFzYW4sIGRhbiBrZXRlcnVrdXJhbi4NCg0KIyMjIDMuIFN0cmF0ZWdpIERpc3RyaWJ1c2kgZGFuIFBlbmdhbWJpbGFuIFNhbXBlbCAoU2ltdWxhc2kpDQpTdXJ2ZWkgZGlyZW5jYW5ha2FuIGFrYW4gZGlzZWJhcmthbiBzZWNhcmEgZGFyaW5nIG1lbmdndW5ha2FuIEdvb2dsZSBGb3JtcyBtZWxhbHVpIFdoYXRzQXBwIGdydXAgbWFoYXNpc3dhLCBlbWFpbCBrYW1wdXMsIGRhbiBtZWRpYSBzb3NpYWwgYWthZGVtaWsuIE1ldG9kZSBpbmkgZGlwaWxpaCBrYXJlbmEgZWZpc2llbiBkYW4gbWVuamFuZ2thdSBwb3B1bGFzaSBsdWFzLg0KDQpUZWtuaWsgcGVuZ2FtYmlsYW4gc2FtcGVsIHlhbmcgZGlndW5ha2FuIGFkYWxhaCBzdHJhdGlmaWVkIHJhbmRvbSBzYW1wbGluZywgeWFpdHUgbWVtYmFnaSBwb3B1bGFzaSBiZXJkYXNhcmthbiBqdXJ1c2FuIGRhbiBhbmdrYXRhbi4gUmVzcG9uZGVuIGRpcGlsaWggc2VjYXJhIGFjYWsgZGFyaSBtYXNpbmctbWFzaW5nIGtlbG9tcG9rLg0KDQpTaW11bGFzaSBwZXJoaXR1bmdhbiBtZW5nZ3VuYWthbiBydW11cyBTbG92aW4gKGRlbmdhbiBtYXJnaW4gb2YgZXJyb3IgMTAlKSBtZW51bmp1a2thbiBiYWh3YSBkYXJpIHBvcHVsYXNpIDEwMDAgbWFoYXNpc3dhLCBkaXBlcmx1a2FuIG1pbmltYWwgOTEgcmVzcG9uZGVuIHVudHVrIG1ld2FraWxpIHBvcHVsYXNpIHNlY2FyYSBzdGF0aXN0aWsuDQoNCiMjIyA0LiBTaW11bGFzaSBEYXRhIGRhbiBBbmFsaXNpcyBBd2FsDQpTaW11bGFzaSBkaWxha3VrYW4gZGVuZ2FuIG1lbmdhc3Vtc2lrYW4gOTEgcmVzcG9uZGVuIG1lbmdpc2kgc3VydmVpLiBIYXNpbCByYXRhLXJhdGEgc2tvciBwZXIgYXNwZWs6DQoNCmBgYHtyfQ0KIyBTaW11bGFzaSBEYXRhIGRhbiBBbmFsaXNpcyBBd2FsDQpsaWJyYXJ5KGtuaXRyKQ0KDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogICJBc3BlayBMYXlhbmFuIiA9IGMoDQogICAgIkxheWFuYW4gS1JTIE9ubGluZSIsDQogICAgIkJpbWJpbmdhbiBBa2FkZW1payIsDQogICAgIlBlbGF5YW5hbiBBZG1pbmlzdHJhc2kiLA0KICAgICJBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsiLA0KICAgICJCYW50dWFuIFBlbnllbGVzYWlhbiBTdHVkaSINCiAgKSwNCiAgIlJhdGEtcmF0YSBTa29yIiA9IGMoNC4xLCAzLjcsIDMuOSwgMy44LCAzLjUpDQopDQoNCmthYmxlKGRhdGEsIGNhcHRpb24gPSAiVGFiZWwgUmF0YS1SYXRhIFNrb3IgU2ltdWxhc2kgS2VwdWFzYW4gTWFoYXNpc3dhIHBlciBBc3BlayIpDQpgYGANCkFuYWxpc2lzIGF3YWwgbWVudW5qdWtrYW4gYmFod2Egc2VjYXJhIHVtdW0gdGluZ2thdCBrZXB1YXNhbiBtYWhhc2lzd2EgY3VrdXAgYmFpaywgbWVza2lwdW4gYXNwZWsgYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkgcGVybHUgcGVyaGF0aWFuIGxlYmloLg0KDQoNCg==