From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SmMim-0007IW-TN for kexec@lists.infradead.org; Wed, 04 Jul 2012 10:22:18 +0000 Message-ID: <4FF4155F.6070508@cn.fujitsu.com> Date: Wed, 04 Jul 2012 18:05:19 +0800 From: Yanfei Zhang MIME-Version: 1.0 Subject: [PATCH v4 2/3] KVM-INTEL: Add new module vmcsinfo-intel to fill VMCSINFO References: <4FF413D2.4030006@cn.fujitsu.com> In-Reply-To: <4FF413D2.4030006@cn.fujitsu.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Avi Kivity , mtosatti@redhat.com Cc: dzickus@redhat.com, luto@mit.edu, kvm@vger.kernel.org, Joerg Roedel , kexec@lists.infradead.org, linux-kernel@vger.kernel.org, paul.gortmaker@windriver.com, ludwig.nussel@suse.de, ebiederm@xmission.com, Greg KH VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IG1vZHVsZSBuYW1lZCB2bWNzaW5mby1pbnRlbC4g VGhlCm1vZHVsZSBmaWxscyBWTUNTSU5GTyB3aXRoIHRoZSBWTUNTIHJldmlzaW9uIGlkZW50aWZp ZXIsCmFuZCBvZmZzZXRzIG9mIFZNQ1MgZmllbGRzLgoKTm90ZSwgb2Zmc2V0cyBvZiBmaWVsZHMg dGhhdCBkZWZpbmVkIGluIEludGVsIHNwZWNpZmljYXRpb24KKEludGVswq4gNjQgYW5kIElBLTMy IEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy4oCZcyBNYW51YWwsClZvbHVtZSAzQykg YnV0IG5vdCBkZWZpbmVkIGluICp2bWNzX2ZpZWxkKiB3aWxsIG5vdCBiZSBmaWxsZWQgaW4KVk1D U0lORk8uIEFuZCwgc29tZSBmaWVsZHMgbWF5IGJlIHVuc3VwcG9ydGVkIGluIHNvbWUgbWFjaGlu ZXMsCmluIHRoZXNlIG1hY2hpbmVzLCBjb3JyZXNwb25kaW5nIG9mZnNldHMgd2lsbCBiZSB6ZXJv LgoKQmVzaWRlcywgdGhpcyBwYXRjaCBhbHNvIGV4cG9ydHMgdm1jcyByZXZpc2lvbiBpZGVudGlm aWVyIHZpYQovc3lzL2RldmljZXMvc3lzdGVtL2NwdS92bWNzX2lkIGFuZCBvZmZzZXRzIG9mIGZp ZWxkcyB2aWEKL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvdm1jcy8uCkluZGl2aWR1YWwgb2Zmc2V0 cyBhcmUgY29udGFpbmVkIGluIHN1YmZpbGVzIG5hbWVkIGJ5IHRoZSBmaWxlZCdzCmVuY29kaW5n LCBlLmcuOiAvc3lzL2RldmljZXMvY3B1L3ZtY3MvMDgwMAoKU2lnbmVkLW9mZi1ieTogemhhbmd5 YW5mZWkgPHpoYW5neWFuZmVpQGNuLmZ1aml0c3UuY29tPgotLS0KIGFyY2gveDg2L2t2bS9LY29u ZmlnICAgIHwgICAxMSArCiBhcmNoL3g4Ni9rdm0vTWFrZWZpbGUgICB8ICAgIDMgKwogYXJjaC94 ODYva3ZtL3ZtY3NpbmZvLmMgfCAgNTg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDYwMCBpbnNlcnRpb25zKCspLCAwIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L2t2bS92bWNzaW5mby5jCgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL0tjb25maWcgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZwpp bmRleCBhMjhmMzM4Li4xZGQ2NGIxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZwor KysgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZwpAQCAtNjMsNiArNjMsMTcgQEAgY29uZmlnIEtWTV9J TlRFTAogCSAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUg bW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBrdm0taW50ZWwuCiAKK2NvbmZpZyBWTUNTSU5GT19J TlRFTAorCXRyaXN0YXRlICJFeHBvcnQgVk1DU0lORk8gZm9yIEludGVsIHByb2Nlc3NvcnMiCisJ ZGVwZW5kcyBvbiBLVk1fSU5URUwKKwktLS1oZWxwLS0tCisJICBQcm92aWRlcyBzdXBwb3J0IGZv ciBleHBvcnRpbmcgVk1DU0lORk8gb24gSW50ZWwgcHJvY2Vzc29ycyBlcXVpcHBlZAorCSAgd2l0 aCB0aGUgVlQgZXh0ZW5zaW9ucy4gVGhlIFZNQ1NJTkZPIGNvbnRhaW5zIGEgVk1DUyByZXZpc2lv bgorCSAgaWRlbnRpZmllciBhbmQgb2Zmc2V0cyBvZiBWTUNTIGZpZWxkcy4KKworCSAgVG8gY29t cGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCisJICB3aWxs IGJlIGNhbGxlZCB2bWNzaW5mby1pbnRlbC4KKwogY29uZmlnIEtWTV9BTUQKIAl0cmlzdGF0ZSAi S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0IgogCWRlcGVuZHMgb24gS1ZNCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0vTWFrZWZpbGUgYi9hcmNoL3g4Ni9rdm0vTWFrZWZpbGUKaW5kZXgg NGY1NzllOC4uMTJhMWVmNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL01ha2VmaWxlCisrKyBi L2FyY2gveDg2L2t2bS9NYWtlZmlsZQpAQCAtNCw2ICs0LDcgQEAgY2NmbGFncy15ICs9IC1Jdmly dC9rdm0gLUlhcmNoL3g4Ni9rdm0KIENGTEFHU194ODYubyA6PSAtSS4KIENGTEFHU19zdm0ubyA6 PSAtSS4KIENGTEFHU192bXgubyA6PSAtSS4KK0NGTEFHU192bWNzaW5mby5vIDo9IC1JLgogCiBr dm0teQkJCSs9ICQoYWRkcHJlZml4IC4uLy4uLy4uL3ZpcnQva3ZtLywga3ZtX21haW4ubyBpb2Fw aWMubyBcCiAJCQkJY29hbGVzY2VkX21taW8ubyBpcnFfY29tbS5vIGV2ZW50ZmQubyBcCkBAIC0x NSw3ICsxNiw5IEBAIGt2bS15CQkJKz0geDg2Lm8gbW11Lm8gZW11bGF0ZS5vIGk4MjU5Lm8gaXJx Lm8gbGFwaWMubyBcCiAJCQkgICBpODI1NC5vIHRpbWVyLm8gY3B1aWQubyBwbXUubwoga3ZtLWlu dGVsLXkJCSs9IHZteC5vCiBrdm0tYW1kLXkJCSs9IHN2bS5vCit2bWNzaW5mby1pbnRlbC15CSs9 IHZtY3NpbmZvLm8KIAogb2JqLSQoQ09ORklHX0tWTSkJKz0ga3ZtLm8KIG9iai0kKENPTkZJR19L Vk1fSU5URUwpCSs9IGt2bS1pbnRlbC5vCiBvYmotJChDT05GSUdfS1ZNX0FNRCkJKz0ga3ZtLWFt ZC5vCitvYmotJChDT05GSUdfVk1DU0lORk9fSU5URUwpCSs9IHZtY3NpbmZvLWludGVsLm8KZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bWNzaW5mby5jIGIvYXJjaC94ODYva3ZtL3ZtY3NpbmZv LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZmNmExZQotLS0gL2Rldi9u dWxsCisrKyBiL2FyY2gveDg2L2t2bS92bWNzaW5mby5jCkBAIC0wLDAgKzEsNTg2IEBACisvKgor ICogS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSBkcml2ZXIgZm9yIExpbnV4CisgKgorICog VGhpcyBtb2R1bGUgZW5hYmxlcyBtYWNoaW5lcyB3aXRoIEludGVsIFZULXggZXh0ZW5zaW9ucyB0 byBleHBvcnQKKyAqIG9mZnNldHMgb2YgVk1DUyBmaWVsZHMgZm9yIGd1ZXN0IGRlYnVnZ2luZy4K KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRnVqaXRzdSwgSW5jLgorICoKKyAqIEF1dGhvcnM6 CisgKiAgIFpoYW5nIFlhbmZlaSA8emhhbmd5YW5mZWlAY24uZnVqaXRzdS5jb20+CisgKgorICog VGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVy c2lvbiAyLiAgU2VlCisgKiB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0 b3J5LgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGlu dXgvbW9kX2RldmljZXRhYmxlLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVk ZSA8bGludXgvc3dhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgorCisjaW5jbHVkZSA8YXNt L3ZteC5oPgorCitNT0RVTEVfQVVUSE9SKCJGdWppdHN1Iik7CitNT0RVTEVfTElDRU5TRSgiR1BM Iik7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2NwdV9pZCB2bWNzaW5mb19jcHVfaWRbXSA9 IHsKKwlYODZfRkVBVFVSRV9NQVRDSChYODZfRkVBVFVSRV9WTVgpLAorCXt9Cit9OworTU9EVUxF X0RFVklDRV9UQUJMRSh4ODZjcHUsIHZtY3NpbmZvX2NwdV9pZCk7CisKKy8qCisgKiB2bWNzIGZp ZWxkIG9mZnNldHMuCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgdm1jc2luZm8geworCXUzMiB2bWNzX3Jl dmlzaW9uX2lkOworCXUxNiB2bWNzX2ZpZWxkX3RvX29mZnNldF90YWJsZVtIT1NUX1JJUCArIDFd OworfSB2bWNzaW5mbzsKKworI2RlZmluZSBWTUNTSU5GT19NQVhfRklFTEQgXAorCUFSUkFZX1NJ WkUodm1jc2luZm8udm1jc19maWVsZF90b19vZmZzZXRfdGFibGUpCisKK3N0YXRpYyBpbmxpbmUg dm9pZCB2bWNzaW5mb19yZXZpc2lvbl9pZCh1MzIgaWQpCit7CisJdm1jc2luZm8udm1jc19yZXZp c2lvbl9pZCA9IGlkOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdm1jc2luZm9fZmllbGQodW5z aWduZWQgbG9uZyBmaWVsZCwgdTE2IG9mZnNldCkKK3sKKwlpZiAoZmllbGQgPCBWTUNTSU5GT19N QVhfRklFTEQpCisJCXZtY3NpbmZvLnZtY3NfZmllbGRfdG9fb2Zmc2V0X3RhYmxlW2ZpZWxkXSA9 IG9mZnNldDsKK30KKworc3RhdGljIGlubGluZSBzaG9ydCBnZXRfdm1jc19maWVsZF9vZmZzZXQo dW5zaWduZWQgbG9uZyBmaWVsZCkKK3sKKwlpZiAoZmllbGQgPj0gVk1DU0lORk9fTUFYX0ZJRUxE IHx8CisJICAgIHZtY3NpbmZvLnZtY3NfZmllbGRfdG9fb2Zmc2V0X3RhYmxlW2ZpZWxkXSA9PSAw KQorCQlyZXR1cm4gLTE7CisJcmV0dXJuIHZtY3NpbmZvLnZtY3NfZmllbGRfdG9fb2Zmc2V0X3Rh YmxlW2ZpZWxkXTsKK30KKworY29uc3QgY2hhciB2bWNzX2dyb3VwX25hbWVbXSA9ICJ2bWNzIjsK KworI2RlZmluZSBCVUlMRF9PRkZTRVRfU0hPVyhmaWVsZF9jb2RlKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIHNzaXplX3QgXyMjZmllbGRfY29kZSMj X3Nob3coc3RydWN0IGRldmljZSAqZGV2LCAgICAgICAgICAgICAgICAgICAgICAgXAorCQkJCSAg ICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgICAgICAgICAgICBcCisJCQkJICAgIGNo YXIgKmJ1ZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorCQkgICAgICAgdm1jc2luZm8udm1jc19maWVsZF90 b19vZmZzZXRfdGFibGVbMHgjI2ZpZWxkX2NvZGVdKTsgIFwKK30gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKK3N0YXRpYyBERVZJQ0VfQVRUUihmaWVsZF9jb2RlLCAwNDQ0LCBfIyNmaWVsZF9jb2RlIyNf c2hvdywgTlVMTCk7ICAgICAgICAgICAgIFwKKworQlVJTERfT0ZGU0VUX1NIT1coMDAwMCk7IC8q IFZJUlRVQUxfUFJPQ0VTU09SX0lEICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygw ODAwKTsgLyogR1VFU1RfRVNfU0VMRUNUT1IgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNF VF9TSE9XKDA4MDIpOyAvKiBHVUVTVF9DU19TRUxFQ1RPUiAgICAgICAgICAgICAgICAqLworQlVJ TERfT0ZGU0VUX1NIT1coMDgwNCk7IC8qIEdVRVNUX1NTX1NFTEVDVE9SICAgICAgICAgICAgICAg ICovCitCVUlMRF9PRkZTRVRfU0hPVygwODA2KTsgLyogR1VFU1RfRFNfU0VMRUNUT1IgICAgICAg ICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDA4MDgpOyAvKiBHVUVTVF9GU19TRUxFQ1RP UiAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMDgwYSk7IC8qIEdVRVNUX0dT X1NFTEVDVE9SICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygwODBjKTsgLyog R1VFU1RfTERUUl9TRUxFQ1RPUiAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDA4 MGUpOyAvKiBHVUVTVF9UUl9TRUxFQ1RPUiAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VU X1NIT1coMGMwMCk7IC8qIEhPU1RfRVNfU0VMRUNUT1IgICAgICAgICAgICAgICAgICovCitCVUlM RF9PRkZTRVRfU0hPVygwYzAyKTsgLyogSE9TVF9DU19TRUxFQ1RPUiAgICAgICAgICAgICAgICAg Ki8KK0JVSUxEX09GRlNFVF9TSE9XKDBjMDQpOyAvKiBIT1NUX1NTX1NFTEVDVE9SICAgICAgICAg ICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMGMwNik7IC8qIEhPU1RfRFNfU0VMRUNUT1Ig ICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygwYzA4KTsgLyogSE9TVF9GU19T RUxFQ1RPUiAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDBjMGEpOyAvKiBI T1NUX0dTX1NFTEVDVE9SICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMGMw Yyk7IC8qIEhPU1RfVFJfU0VMRUNUT1IgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRf U0hPVygyMDAwKTsgLyogSU9fQklUTUFQX0EgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxE X09GRlNFVF9TSE9XKDIwMDEpOyAvKiBJT19CSVRNQVBfQV9ISUdIICAgICAgICAgICAgICAgICAq LworQlVJTERfT0ZGU0VUX1NIT1coMjAwMik7IC8qIElPX0JJVE1BUF9CICAgICAgICAgICAgICAg ICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyMDAzKTsgLyogSU9fQklUTUFQX0JfSElHSCAg ICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDIwMDQpOyAvKiBNU1JfQklUTUFQ ICAgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMjAwNSk7IC8qIE1T Ul9CSVRNQVBfSElHSCAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyMDA2 KTsgLyogVk1fRVhJVF9NU1JfU1RPUkVfQUREUiAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9T SE9XKDIwMDcpOyAvKiBWTV9FWElUX01TUl9TVE9SRV9BRERSX0hJR0ggICAgICAqLworQlVJTERf T0ZGU0VUX1NIT1coMjAwOCk7IC8qIFZNX0VYSVRfTVNSX0xPQURfQUREUiAgICAgICAgICAgICov CitCVUlMRF9PRkZTRVRfU0hPVygyMDA5KTsgLyogVk1fRVhJVF9NU1JfTE9BRF9BRERSX0hJR0gg ICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDIwMGEpOyAvKiBWTV9FTlRSWV9NU1JfTE9BRF9B RERSICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMjAwYik7IC8qIFZNX0VOVFJZX01T Ul9MT0FEX0FERFJfSElHSCAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyMDEwKTsgLyogVFND X09GRlNFVCAgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDIwMTEp OyAvKiBUU0NfT0ZGU0VUX0hJR0ggICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NI T1coMjAxMik7IC8qIFZJUlRVQUxfQVBJQ19QQUdFX0FERFIgICAgICAgICAgICovCitCVUlMRF9P RkZTRVRfU0hPVygyMDEzKTsgLyogVklSVFVBTF9BUElDX1BBR0VfQUREUl9ISUdIICAgICAgKi8K K0JVSUxEX09GRlNFVF9TSE9XKDIwMTQpOyAvKiBBUElDX0FDQ0VTU19BRERSICAgICAgICAgICAg ICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMjAxNSk7IC8qIEFQSUNfQUNDRVNTX0FERFJfSElH SCAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyMDFhKTsgLyogRVBUX1BPSU5URVIg ICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDIwMWIpOyAvKiBFUFRf UE9JTlRFUl9ISUdIICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMjQwMCk7 IC8qIEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hP VygyNDAxKTsgLyogR1VFU1RfUEhZU0lDQUxfQUREUkVTU19ISUdIICAgICAgKi8KK0JVSUxEX09G RlNFVF9TSE9XKDI4MDApOyAvKiBWTUNTX0xJTktfUE9JTlRFUiAgICAgICAgICAgICAgICAqLwor QlVJTERfT0ZGU0VUX1NIT1coMjgwMSk7IC8qIFZNQ1NfTElOS19QT0lOVEVSX0hJR0ggICAgICAg ICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyODAyKTsgLyogR1VFU1RfSUEzMl9ERUJVR0NUTCAg ICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDI4MDMpOyAvKiBHVUVTVF9JQTMyX0RF QlVHQ1RMX0hJR0ggICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMjgwNCk7IC8qIEdVRVNU X0lBMzJfUEFUICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyODA1KTsg LyogR1VFU1RfSUEzMl9QQVRfSElHSCAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9X KDI4MDYpOyAvKiBHVUVTVF9JQTMyX0VGRVIgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZG U0VUX1NIT1coMjgwNyk7IC8qIEdVRVNUX0lBMzJfRUZFUl9ISUdIICAgICAgICAgICAgICovCitC VUlMRF9PRkZTRVRfU0hPVygyODA4KTsgLyogR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMICAg ICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDI4MDkpOyAvKiBHVUVTVF9JQTMyX1BFUkZfR0xPQkFM X0NUUkxfSElHSCAqLworQlVJTERfT0ZGU0VUX1NIT1coMjgwYSk7IC8qIEdVRVNUX1BEUFRSMCAg ICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyODBiKTsgLyogR1VFU1Rf UERQVFIwX0hJR0ggICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDI4MGMpOyAv KiBHVUVTVF9QRFBUUjEgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1co MjgwZCk7IC8qIEdVRVNUX1BEUFRSMV9ISUdIICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZT RVRfU0hPVygyODBlKTsgLyogR1VFU1RfUERQVFIyICAgICAgICAgICAgICAgICAgICAgKi8KK0JV SUxEX09GRlNFVF9TSE9XKDI4MGYpOyAvKiBHVUVTVF9QRFBUUjJfSElHSCAgICAgICAgICAgICAg ICAqLworQlVJTERfT0ZGU0VUX1NIT1coMjgxMCk7IC8qIEdVRVNUX1BEUFRSMyAgICAgICAgICAg ICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygyODExKTsgLyogR1VFU1RfUERQVFIzX0hJ R0ggICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDJjMDApOyAvKiBIT1NUX0lB MzJfUEFUICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMmMwMSk7IC8q IEhPU1RfSUEzMl9QQVRfSElHSCAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygy YzAyKTsgLyogSE9TVF9JQTMyX0VGRVIgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNF VF9TSE9XKDJjMDMpOyAvKiBIT1NUX0lBMzJfRUZFUl9ISUdIICAgICAgICAgICAgICAqLworQlVJ TERfT0ZGU0VUX1NIT1coMmMwNCk7IC8qIEhPU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMICAgICAg ICovCitCVUlMRF9PRkZTRVRfU0hPVygyYzA1KTsgLyogSE9TVF9JQTMyX1BFUkZfR0xPQkFMX0NU UkxfSElHSCAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQwMDApOyAvKiBQSU5fQkFTRURfVk1fRVhF Q19DT05UUk9MICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDAwMik7IC8qIENQVV9CQVNF RF9WTV9FWEVDX0NPTlRST0wgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0MDA0KTsgLyog RVhDRVBUSU9OX0JJVE1BUCAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQw MDYpOyAvKiBQQUdFX0ZBVUxUX0VSUk9SX0NPREVfTUFTSyAgICAgICAqLworQlVJTERfT0ZGU0VU X1NIT1coNDAwOCk7IC8qIFBBR0VfRkFVTFRfRVJST1JfQ09ERV9NQVRDSCAgICAgICovCitCVUlM RF9PRkZTRVRfU0hPVyg0MDBhKTsgLyogQ1IzX1RBUkdFVF9DT1VOVCAgICAgICAgICAgICAgICAg Ki8KK0JVSUxEX09GRlNFVF9TSE9XKDQwMGMpOyAvKiBWTV9FWElUX0NPTlRST0xTICAgICAgICAg ICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDAwZSk7IC8qIFZNX0VYSVRfTVNSX1NUT1JF X0NPVU5UICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0MDEwKTsgLyogVk1fRVhJVF9N U1JfTE9BRF9DT1VOVCAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQwMTIpOyAvKiBW TV9FTlRSWV9DT05UUk9MUyAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDAx NCk7IC8qIFZNX0VOVFJZX01TUl9MT0FEX0NPVU5UICAgICAgICAgICovCitCVUlMRF9PRkZTRVRf U0hPVyg0MDE2KTsgLyogVk1fRU5UUllfSU5UUl9JTkZPX0ZJRUxEICAgICAgICAgKi8KK0JVSUxE X09GRlNFVF9TSE9XKDQwMTgpOyAvKiBWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSAgICAq LworQlVJTERfT0ZGU0VUX1NIT1coNDAxYSk7IC8qIFZNX0VOVFJZX0lOU1RSVUNUSU9OX0xFTiAg ICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0MDFjKTsgLyogVFBSX1RIUkVTSE9MRCAgICAg ICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQwMWUpOyAvKiBTRUNPTkRBUllf Vk1fRVhFQ19DT05UUk9MICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDAyMCk7IC8qIFBM RV9HQVAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0MDIy KTsgLyogUExFX1dJTkRPVyAgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9T SE9XKDQ0MDApOyAvKiBWTV9JTlNUUlVDVElPTl9FUlJPUiAgICAgICAgICAgICAqLworQlVJTERf T0ZGU0VUX1NIT1coNDQwMik7IC8qIFZNX0VYSVRfUkVBU09OICAgICAgICAgICAgICAgICAgICov CitCVUlMRF9PRkZTRVRfU0hPVyg0NDA0KTsgLyogVk1fRVhJVF9JTlRSX0lORk8gICAgICAgICAg ICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQ0MDYpOyAvKiBWTV9FWElUX0lOVFJfRVJST1Jf Q09ERSAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDQwOCk7IC8qIElEVF9WRUNUT1JJ TkdfSU5GT19GSUVMRCAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0NDBhKTsgLyogSURU X1ZFQ1RPUklOR19FUlJPUl9DT0RFICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQ0MGMp OyAvKiBWTV9FWElUX0lOU1RSVUNUSU9OX0xFTiAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NI T1coNDQwZSk7IC8qIFZNWF9JTlNUUlVDVElPTl9JTkZPICAgICAgICAgICAgICovCitCVUlMRF9P RkZTRVRfU0hPVyg0ODAwKTsgLyogR1VFU1RfRVNfTElNSVQgICAgICAgICAgICAgICAgICAgKi8K K0JVSUxEX09GRlNFVF9TSE9XKDQ4MDIpOyAvKiBHVUVTVF9DU19MSU1JVCAgICAgICAgICAgICAg ICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDgwNCk7IC8qIEdVRVNUX1NTX0xJTUlUICAgICAg ICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0ODA2KTsgLyogR1VFU1RfRFNfTElN SVQgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQ4MDgpOyAvKiBHVUVT VF9GU19MSU1JVCAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDgwYSk7 IC8qIEdVRVNUX0dTX0xJTUlUICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hP Vyg0ODBjKTsgLyogR1VFU1RfTERUUl9MSU1JVCAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09G RlNFVF9TSE9XKDQ4MGUpOyAvKiBHVUVTVF9UUl9MSU1JVCAgICAgICAgICAgICAgICAgICAqLwor QlVJTERfT0ZGU0VUX1NIT1coNDgxMCk7IC8qIEdVRVNUX0dEVFJfTElNSVQgICAgICAgICAgICAg ICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0ODEyKTsgLyogR1VFU1RfSURUUl9MSU1JVCAgICAg ICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQ4MTQpOyAvKiBHVUVTVF9FU19BUl9C WVRFUyAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDgxNik7IC8qIEdVRVNU X0NTX0FSX0JZVEVTICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0ODE4KTsg LyogR1VFU1RfU1NfQVJfQllURVMgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9X KDQ4MWEpOyAvKiBHVUVTVF9EU19BUl9CWVRFUyAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZG U0VUX1NIT1coNDgxYyk7IC8qIEdVRVNUX0ZTX0FSX0JZVEVTICAgICAgICAgICAgICAgICovCitC VUlMRF9PRkZTRVRfU0hPVyg0ODFlKTsgLyogR1VFU1RfR1NfQVJfQllURVMgICAgICAgICAgICAg ICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQ4MjApOyAvKiBHVUVTVF9MRFRSX0FSX0JZVEVTICAg ICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNDgyMik7IC8qIEdVRVNUX1RSX0FSX0JZ VEVTICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg0ODI0KTsgLyogR1VFU1Rf SU5URVJSVVBUSUJJTElUWV9JTkZPICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDQ4MjYpOyAv KiBHVUVTVF9BQ1RJVklUWV9TVEFURSAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1co NDgyQSk7IC8qIEdVRVNUX1NZU0VOVEVSX0NTICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZT RVRfU0hPVyg0YzAwKTsgLyogSE9TVF9JQTMyX1NZU0VOVEVSX0NTICAgICAgICAgICAgKi8KK0JV SUxEX09GRlNFVF9TSE9XKDYwMDApOyAvKiBDUjBfR1VFU1RfSE9TVF9NQVNLICAgICAgICAgICAg ICAqLworQlVJTERfT0ZGU0VUX1NIT1coNjAwMik7IC8qIENSNF9HVUVTVF9IT1NUX01BU0sgICAg ICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2MDA0KTsgLyogQ1IwX1JFQURfU0hBRE9X ICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDYwMDYpOyAvKiBDUjRfUkVB RF9TSEFET1cgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNjAwOCk7IC8q IENSM19UQVJHRVRfVkFMVUUwICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2 MDBhKTsgLyogQ1IzX1RBUkdFVF9WQUxVRTEgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNF VF9TSE9XKDYwMGMpOyAvKiBDUjNfVEFSR0VUX1ZBTFVFMiAgICAgICAgICAgICAgICAqLworQlVJ TERfT0ZGU0VUX1NIT1coNjAwZSk7IC8qIENSM19UQVJHRVRfVkFMVUUzICAgICAgICAgICAgICAg ICovCitCVUlMRF9PRkZTRVRfU0hPVyg2NDAwKTsgLyogRVhJVF9RVUFMSUZJQ0FUSU9OICAgICAg ICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDY0MGEpOyAvKiBHVUVTVF9MSU5FQVJfQURE UkVTUyAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNjgwMCk7IC8qIEdVRVNUX0NS MCAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2ODAyKTsgLyog R1VFU1RfQ1IzICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDY4 MDQpOyAvKiBHVUVTVF9DUjQgICAgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VU X1NIT1coNjgwNik7IC8qIEdVRVNUX0VTX0JBU0UgICAgICAgICAgICAgICAgICAgICovCitCVUlM RF9PRkZTRVRfU0hPVyg2ODA4KTsgLyogR1VFU1RfQ1NfQkFTRSAgICAgICAgICAgICAgICAgICAg Ki8KK0JVSUxEX09GRlNFVF9TSE9XKDY4MGEpOyAvKiBHVUVTVF9TU19CQVNFICAgICAgICAgICAg ICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNjgwYyk7IC8qIEdVRVNUX0RTX0JBU0UgICAg ICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2ODBlKTsgLyogR1VFU1RfRlNf QkFTRSAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDY4MTApOyAvKiBH VUVTVF9HU19CQVNFICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNjgx Mik7IC8qIEdVRVNUX0xEVFJfQkFTRSAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRf U0hPVyg2ODE0KTsgLyogR1VFU1RfVFJfQkFTRSAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxE X09GRlNFVF9TSE9XKDY4MTYpOyAvKiBHVUVTVF9HRFRSX0JBU0UgICAgICAgICAgICAgICAgICAq LworQlVJTERfT0ZGU0VUX1NIT1coNjgxOCk7IC8qIEdVRVNUX0lEVFJfQkFTRSAgICAgICAgICAg ICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2ODFhKTsgLyogR1VFU1RfRFI3ICAgICAgICAg ICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDY4MWMpOyAvKiBHVUVTVF9SU1Ag ICAgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNjgxZSk7IC8qIEdV RVNUX1JJUCAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2ODIw KTsgLyogR1VFU1RfUkZMQUdTICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9T SE9XKDY4MjIpOyAvKiBHVUVTVF9QRU5ESU5HX0RCR19FWENFUFRJT05TICAgICAqLworQlVJTERf T0ZGU0VUX1NIT1coNjgyNCk7IC8qIEdVRVNUX1NZU0VOVEVSX0VTUCAgICAgICAgICAgICAgICov CitCVUlMRF9PRkZTRVRfU0hPVyg2ODI2KTsgLyogR1VFU1RfU1lTRU5URVJfRUlQICAgICAgICAg ICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDZjMDApOyAvKiBIT1NUX0NSMCAgICAgICAgICAg ICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNmMwMik7IC8qIEhPU1RfQ1IzICAg ICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2YzA0KTsgLyogSE9T VF9DUjQgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDZjMDYp OyAvKiBIT1NUX0ZTX0JBU0UgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NI T1coNmMwOCk7IC8qIEhPU1RfR1NfQkFTRSAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9P RkZTRVRfU0hPVyg2YzBhKTsgLyogSE9TVF9UUl9CQVNFICAgICAgICAgICAgICAgICAgICAgKi8K K0JVSUxEX09GRlNFVF9TSE9XKDZjMGMpOyAvKiBIT1NUX0dEVFJfQkFTRSAgICAgICAgICAgICAg ICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNmMwZSk7IC8qIEhPU1RfSURUUl9CQVNFICAgICAg ICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyg2YzEwKTsgLyogSE9TVF9JQTMyX1NZ U0VOVEVSX0VTUCAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDZjMTIpOyAvKiBIT1NU X0lBMzJfU1lTRU5URVJfRUlQICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coNmMxNCk7 IC8qIEhPU1RfUlNQICAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hP Vyg2YzE2KTsgLyogSE9TVF9SSVAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGUgKnZtY3NfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfMDAwMC5hdHRy LAorCSZkZXZfYXR0cl8wODAwLmF0dHIsCisJJmRldl9hdHRyXzA4MDIuYXR0ciwKKwkmZGV2X2F0 dHJfMDgwNC5hdHRyLAorCSZkZXZfYXR0cl8wODA2LmF0dHIsCisJJmRldl9hdHRyXzA4MDguYXR0 ciwKKwkmZGV2X2F0dHJfMDgwYS5hdHRyLAorCSZkZXZfYXR0cl8wODBjLmF0dHIsCisJJmRldl9h dHRyXzA4MGUuYXR0ciwKKwkmZGV2X2F0dHJfMGMwMC5hdHRyLAorCSZkZXZfYXR0cl8wYzAyLmF0 dHIsCisJJmRldl9hdHRyXzBjMDQuYXR0ciwKKwkmZGV2X2F0dHJfMGMwNi5hdHRyLAorCSZkZXZf YXR0cl8wYzA4LmF0dHIsCisJJmRldl9hdHRyXzBjMGEuYXR0ciwKKwkmZGV2X2F0dHJfMGMwYy5h dHRyLAorCSZkZXZfYXR0cl8yMDAwLmF0dHIsCisJJmRldl9hdHRyXzIwMDEuYXR0ciwKKwkmZGV2 X2F0dHJfMjAwMi5hdHRyLAorCSZkZXZfYXR0cl8yMDAzLmF0dHIsCisJJmRldl9hdHRyXzIwMDQu YXR0ciwKKwkmZGV2X2F0dHJfMjAwNS5hdHRyLAorCSZkZXZfYXR0cl8yMDA2LmF0dHIsCisJJmRl dl9hdHRyXzIwMDcuYXR0ciwKKwkmZGV2X2F0dHJfMjAwOC5hdHRyLAorCSZkZXZfYXR0cl8yMDA5 LmF0dHIsCisJJmRldl9hdHRyXzIwMGEuYXR0ciwKKwkmZGV2X2F0dHJfMjAwYi5hdHRyLAorCSZk ZXZfYXR0cl8yMDEwLmF0dHIsCisJJmRldl9hdHRyXzIwMTEuYXR0ciwKKwkmZGV2X2F0dHJfMjAx Mi5hdHRyLAorCSZkZXZfYXR0cl8yMDEzLmF0dHIsCisJJmRldl9hdHRyXzIwMTQuYXR0ciwKKwkm ZGV2X2F0dHJfMjAxNS5hdHRyLAorCSZkZXZfYXR0cl8yMDFhLmF0dHIsCisJJmRldl9hdHRyXzIw MWIuYXR0ciwKKwkmZGV2X2F0dHJfMjQwMC5hdHRyLAorCSZkZXZfYXR0cl8yNDAxLmF0dHIsCisJ JmRldl9hdHRyXzI4MDAuYXR0ciwKKwkmZGV2X2F0dHJfMjgwMS5hdHRyLAorCSZkZXZfYXR0cl8y ODAyLmF0dHIsCisJJmRldl9hdHRyXzI4MDMuYXR0ciwKKwkmZGV2X2F0dHJfMjgwNC5hdHRyLAor CSZkZXZfYXR0cl8yODA1LmF0dHIsCisJJmRldl9hdHRyXzI4MDYuYXR0ciwKKwkmZGV2X2F0dHJf MjgwNy5hdHRyLAorCSZkZXZfYXR0cl8yODA4LmF0dHIsCisJJmRldl9hdHRyXzI4MDkuYXR0ciwK KwkmZGV2X2F0dHJfMjgwYS5hdHRyLAorCSZkZXZfYXR0cl8yODBiLmF0dHIsCisJJmRldl9hdHRy XzI4MGMuYXR0ciwKKwkmZGV2X2F0dHJfMjgwZC5hdHRyLAorCSZkZXZfYXR0cl8yODBlLmF0dHIs CisJJmRldl9hdHRyXzI4MGYuYXR0ciwKKwkmZGV2X2F0dHJfMjgxMC5hdHRyLAorCSZkZXZfYXR0 cl8yODExLmF0dHIsCisJJmRldl9hdHRyXzJjMDAuYXR0ciwKKwkmZGV2X2F0dHJfMmMwMS5hdHRy LAorCSZkZXZfYXR0cl8yYzAyLmF0dHIsCisJJmRldl9hdHRyXzJjMDMuYXR0ciwKKwkmZGV2X2F0 dHJfMmMwNC5hdHRyLAorCSZkZXZfYXR0cl8yYzA1LmF0dHIsCisJJmRldl9hdHRyXzQwMDAuYXR0 ciwKKwkmZGV2X2F0dHJfNDAwMi5hdHRyLAorCSZkZXZfYXR0cl80MDA0LmF0dHIsCisJJmRldl9h dHRyXzQwMDYuYXR0ciwKKwkmZGV2X2F0dHJfNDAwOC5hdHRyLAorCSZkZXZfYXR0cl80MDBhLmF0 dHIsCisJJmRldl9hdHRyXzQwMGMuYXR0ciwKKwkmZGV2X2F0dHJfNDAwZS5hdHRyLAorCSZkZXZf YXR0cl80MDEwLmF0dHIsCisJJmRldl9hdHRyXzQwMTIuYXR0ciwKKwkmZGV2X2F0dHJfNDAxNC5h dHRyLAorCSZkZXZfYXR0cl80MDE2LmF0dHIsCisJJmRldl9hdHRyXzQwMTguYXR0ciwKKwkmZGV2 X2F0dHJfNDAxYS5hdHRyLAorCSZkZXZfYXR0cl80MDFjLmF0dHIsCisJJmRldl9hdHRyXzQwMWUu YXR0ciwKKwkmZGV2X2F0dHJfNDAyMC5hdHRyLAorCSZkZXZfYXR0cl80MDIyLmF0dHIsCisJJmRl dl9hdHRyXzQ0MDAuYXR0ciwKKwkmZGV2X2F0dHJfNDQwMi5hdHRyLAorCSZkZXZfYXR0cl80NDA0 LmF0dHIsCisJJmRldl9hdHRyXzQ0MDYuYXR0ciwKKwkmZGV2X2F0dHJfNDQwOC5hdHRyLAorCSZk ZXZfYXR0cl80NDBhLmF0dHIsCisJJmRldl9hdHRyXzQ0MGMuYXR0ciwKKwkmZGV2X2F0dHJfNDQw ZS5hdHRyLAorCSZkZXZfYXR0cl80ODAwLmF0dHIsCisJJmRldl9hdHRyXzQ4MDIuYXR0ciwKKwkm ZGV2X2F0dHJfNDgwNC5hdHRyLAorCSZkZXZfYXR0cl80ODA2LmF0dHIsCisJJmRldl9hdHRyXzQ4 MDguYXR0ciwKKwkmZGV2X2F0dHJfNDgwYS5hdHRyLAorCSZkZXZfYXR0cl80ODBjLmF0dHIsCisJ JmRldl9hdHRyXzQ4MGUuYXR0ciwKKwkmZGV2X2F0dHJfNDgxMC5hdHRyLAorCSZkZXZfYXR0cl80 ODEyLmF0dHIsCisJJmRldl9hdHRyXzQ4MTQuYXR0ciwKKwkmZGV2X2F0dHJfNDgxNi5hdHRyLAor CSZkZXZfYXR0cl80ODE4LmF0dHIsCisJJmRldl9hdHRyXzQ4MWEuYXR0ciwKKwkmZGV2X2F0dHJf NDgxYy5hdHRyLAorCSZkZXZfYXR0cl80ODFlLmF0dHIsCisJJmRldl9hdHRyXzQ4MjAuYXR0ciwK KwkmZGV2X2F0dHJfNDgyMi5hdHRyLAorCSZkZXZfYXR0cl80ODI0LmF0dHIsCisJJmRldl9hdHRy XzQ4MjYuYXR0ciwKKwkmZGV2X2F0dHJfNDgyQS5hdHRyLAorCSZkZXZfYXR0cl80YzAwLmF0dHIs CisJJmRldl9hdHRyXzYwMDAuYXR0ciwKKwkmZGV2X2F0dHJfNjAwMi5hdHRyLAorCSZkZXZfYXR0 cl82MDA0LmF0dHIsCisJJmRldl9hdHRyXzYwMDYuYXR0ciwKKwkmZGV2X2F0dHJfNjAwOC5hdHRy LAorCSZkZXZfYXR0cl82MDBhLmF0dHIsCisJJmRldl9hdHRyXzYwMGMuYXR0ciwKKwkmZGV2X2F0 dHJfNjAwZS5hdHRyLAorCSZkZXZfYXR0cl82NDAwLmF0dHIsCisJJmRldl9hdHRyXzY0MGEuYXR0 ciwKKwkmZGV2X2F0dHJfNjgwMC5hdHRyLAorCSZkZXZfYXR0cl82ODAyLmF0dHIsCisJJmRldl9h dHRyXzY4MDQuYXR0ciwKKwkmZGV2X2F0dHJfNjgwNi5hdHRyLAorCSZkZXZfYXR0cl82ODA4LmF0 dHIsCisJJmRldl9hdHRyXzY4MGEuYXR0ciwKKwkmZGV2X2F0dHJfNjgwYy5hdHRyLAorCSZkZXZf YXR0cl82ODBlLmF0dHIsCisJJmRldl9hdHRyXzY4MTAuYXR0ciwKKwkmZGV2X2F0dHJfNjgxMi5h dHRyLAorCSZkZXZfYXR0cl82ODE0LmF0dHIsCisJJmRldl9hdHRyXzY4MTYuYXR0ciwKKwkmZGV2 X2F0dHJfNjgxOC5hdHRyLAorCSZkZXZfYXR0cl82ODFhLmF0dHIsCisJJmRldl9hdHRyXzY4MWMu YXR0ciwKKwkmZGV2X2F0dHJfNjgxZS5hdHRyLAorCSZkZXZfYXR0cl82ODIwLmF0dHIsCisJJmRl dl9hdHRyXzY4MjIuYXR0ciwKKwkmZGV2X2F0dHJfNjgyNC5hdHRyLAorCSZkZXZfYXR0cl82ODI2 LmF0dHIsCisJJmRldl9hdHRyXzZjMDAuYXR0ciwKKwkmZGV2X2F0dHJfNmMwMi5hdHRyLAorCSZk ZXZfYXR0cl82YzA0LmF0dHIsCisJJmRldl9hdHRyXzZjMDYuYXR0ciwKKwkmZGV2X2F0dHJfNmMw OC5hdHRyLAorCSZkZXZfYXR0cl82YzBhLmF0dHIsCisJJmRldl9hdHRyXzZjMGMuYXR0ciwKKwkm ZGV2X2F0dHJfNmMwZS5hdHRyLAorCSZkZXZfYXR0cl82YzEwLmF0dHIsCisJJmRldl9hdHRyXzZj MTIuYXR0ciwKKwkmZGV2X2F0dHJfNmMxNC5hdHRyLAorCSZkZXZfYXR0cl82YzE2LmF0dHIsCisJ TlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHZtY3NfYXR0cl9ncm91 cCA9IHsKKwkubmFtZSA9IHZtY3NfZ3JvdXBfbmFtZSwKKwkuYXR0cnMgPSB2bWNzX2F0dHJzLAor fTsKKworaW50IHZtY3Nfc3lzZnNfYWRkKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlyZXR1cm4g c3lzZnNfY3JlYXRlX2dyb3VwKCZkZXYtPmtvYmosICZ2bWNzX2F0dHJfZ3JvdXApOworfQorCit2 b2lkIHZtY3Nfc3lzZnNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzeXNmc19yZW1v dmVfZ3JvdXAoJmRldi0+a29iaiwgJnZtY3NfYXR0cl9ncm91cCk7Cit9CisKK3N0YXRpYyBzc2l6 ZV90IHZtY3NfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCB2bWNzaW5mby52bWNzX3JldmlzaW9uX2lkKTsKK30KKworc3RhdGljIERF VklDRV9BVFRSKHZtY3NfaWQsIDA0NDQsIHZtY3NfaWRfc2hvdywgTlVMTCk7CisKK2ludCB2bWNz X2lkX3N5c2ZzX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJcmV0dXJuIGRldmljZV9jcmVh dGVfZmlsZShkZXYsICZkZXZfYXR0cl92bWNzX2lkKTsKK30KKwordm9pZCB2bWNzX2lkX3N5c2Zz X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJZGV2aWNlX3JlbW92ZV9maWxlKGRldiwg JmRldl9hdHRyX3ZtY3NfaWQpOworfQorCisvKgorICogRm9yIGNhY3VsYXRpbmcgb2Zmc2V0cyBv ZiBmaWVsZHMgaW4gVk1DUyBkYXRhLCB3ZSBpbmRleCBldmVyeSAxNi1iaXQKKyAqIGZpZWxkIGJ5 IHRoaXMga2luZCBvZiBmb3JtYXQ6CisgKiAgICAgICAgIHwgLS0tLS0tLS0tIDE2IGJpdHMgLS0t LS0tLS0tLSB8CisgKiAgICAgICAgICstLS0tLS0tLS0tLS0tKy0rLS0tLS0tLS0tLS0tKy0rCisg KiAgICAgICAgIHwgaGlnaCA3IGJpdHMgfDF8IGxvdyA3IGJpdHMgfDB8CisgKiAgICAgICAgICst LS0tLS0tLS0tLS0tKy0rLS0tLS0tLS0tLS0tKy0rCisgKiBJbiBoaWdoIGJ5dGUsIHRoZSBsb3dl c3QgYml0IG11c3QgYmUgMTsgSW4gbG93IGJ5dGUsIHRoZSBsb3dlc3QgYml0CisgKiBtdXN0IGJl IDAuIFRoZSB0d28gYml0cyBhcmUgc2V0IGxpa2UgdGhpcyBpbiBjYXNlIGluZGV4ZXMgaW4gVk1D UworICogZGF0YSBhcmUgcmVhZCBhcyBiaWcgZW5kaWFuIG1vZGUuCisgKiBUaGUgcmVtYWluaW5n IDE0IGJpdHMgb2YgdGhlIGluZGV4IGluZGljYXRlIHRoZSByZWFsIG9mZnNldCBvZiB0aGUKKyAq IGZpZWxkLiBCZWNhdXNlIHRoZSBzaXplIG9mIGEgVk1DUyByZWdpb24gaXMgYXQgbW9zdCA0IEtC eXRlcywgc28KKyAqIDE0IGJpdHMgYXJlIGVub3VnaCB0byBpbmRleCB0aGUgd2hvbGUgVk1DUyBy ZWdpb24uCisgKgorICogRU5DT0RJTkdfT0ZGU0VUOiBlbmNvZGUgdGhlIG9mZnNldCBpbnRvIHRo ZSBpbmRleCBvZiB0aGlzIGtpbmQuCisgKiBERUNPRElOR19PRkZTRVQ6IGRlY29kZSB0aGUgaW5k ZXggb2YgdGhpcyBraW5kIGludG8gcmVhbCBvZmZzZXQuCisgKi8KKyNkZWZpbmUgT0ZGU0VUX0hJ R0hfU0hJRlQgKDcpCisjZGVmaW5lIE9GRlNFVF9MT1dfTUFTSyAgICgoMSA8PCBPRkZTRVRfSElH SF9TSElGVCkgLSAxKSAvKiAweDdmICovCisjZGVmaW5lIE9GRlNFVF9ISUdIX01BU0sgIChPRkZT RVRfTE9XX01BU0sgPDwgT0ZGU0VUX0hJR0hfU0hJRlQpIC8qIDB4M2Y4MCAqLworI2RlZmluZSBF TkNPRElOR19PRkZTRVQob2Zmc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisJKCgoKG9mZnNldCkgJiBPRkZTRVRfTE9XX01BU0spIDw8IDEpICsgICAgICAgICAgICAg ICAgICAgICAgXAorCSgoKChvZmZzZXQpICYgT0ZGU0VUX0hJR0hfTUFTSykgPDwgMikgfCAweDEw MCkpCisvKgorICogaW5kZXggaGVyZSBzaG91bGQgYmUgYWx3YXlzIHJlYWQgaW4gbGl0dGxlIGVu ZGlhbiBtb2RlLgorICovCisjZGVmaW5lIERFQ09ESU5HX09GRlNFVF9MRShpbmRleCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkoKCgoaW5kZXgpID4+IDEpICYgT0ZGU0VU X0xPV19NQVNLKSArICAgICAgICAgICAgICAgICAgICAgICBcCisJKCgoaW5kZXgpID4+IDIpICYg T0ZGU0VUX0hJR0hfTUFTSykpCisvKgorICogbiBpbmRpY2F0ZXMgdGhlIGJpdHMgb2YgaW5kZXgu IFdlIGZpcnN0IGNoZWNrIGlmIGluZGV4CisgKiBpcyByZWFkIGluIGJpZyBlbmRpYW4gbW9kZS4K KyAqLworI2RlZmluZSBERUNPRElOR19PRkZTRVQoaW5kZXgsIG4pICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisJKChpbmRleCAmIDEpID8gKERFQ09ESU5HX09GRlNFVF9MRShf X3N3YWIjI24oaW5kZXgpKSkgOiAgICAgXAorCShERUNPRElOR19PRkZTRVRfTEUoaW5kZXgpKSkK KworI2RlZmluZSBGSUVMRF9PRkZTRVQxNihmaWVsZCwgb2Zmc2V0KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisJdm1jc2luZm9fZmllbGQoZmllbGQsIERFQ09ESU5HX09GRlNFVChv ZmZzZXQsIDE2KSkKKyNkZWZpbmUgRklFTERfT0ZGU0VUNjQoZmllbGQsIG9mZnNldCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorCXZtY3NpbmZvX2ZpZWxkKGZpZWxkLCBERUNPRElO R19PRkZTRVQob2Zmc2V0LCA2NCkpCisjZGVmaW5lIEZJRUxEX09GRlNFVDMyKGZpZWxkLCBvZmZz ZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl2bWNzaW5mb19maWVsZChmaWVs ZCwgREVDT0RJTkdfT0ZGU0VUKG9mZnNldCwgMzIpKQorI2RlZmluZSBGSUVMRF9PRkZTRVROVyhm aWVsZCwgb2Zmc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKwlpZiAoc2l6ZW9mKG9mZnNldCkgPT0gOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisJCXZtY3NpbmZvX2ZpZWxkKGZpZWxkLCBERUNPRElOR19PRkZTRVQob2Zmc2V0 LCA2NCkpOyBcCisJZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorCQl2bWNzaW5mb19maWVsZChmaWVsZCwgREVDT0RJTkdfT0ZGU0VU KG9mZnNldCwgMzIpKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBWTUNTX0ZJRUxEX0NIRUNL KGZpZWxkLCBvZmZzZXQsIHR5cGUpICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKwlpZiAodm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpICE9ICAgICAgICAgICAg ICAgICAgICBcCisJCVZNWEVSUl9VTlNVUFBPUlRFRF9WTUNTX0NPTVBPTkVOVCkgICAgICAgICAg ICAgICAgICBcCisJCUZJRUxEX09GRlNFVCMjdHlwZShmaWVsZCwgb2Zmc2V0KTsgICAgICAgICAg ICAgICAgICBcCit9IHdoaWxlICgwKQorCitzdGF0aWMgaW5saW5lIHZvaWQgdm1jc19yZWFkX2No ZWNraW5nKHVuc2lnbmVkIGxvbmcgZmllbGQpCit7CisJdTE2IG9mZnNldDE2OworCXU2NCBvZmZz ZXQ2NDsKKwl1MzIgb2Zmc2V0MzI7CisJdW5zaWduZWQgbG9uZyBvZmZzZXRudzsKKworCXN3aXRj aCAodm1jc19maWVsZF90eXBlKGZpZWxkKSkgeworCWNhc2UgVk1DU19GSUVMRF9UWVBFX1UxNjoK KwkJb2Zmc2V0MTYgPSB2bWNzX3JlYWQxNihmaWVsZCk7CisJCVZNQ1NfRklFTERfQ0hFQ0soZmll bGQsIG9mZnNldDE2LCAxNik7CisJCWJyZWFrOworCWNhc2UgVk1DU19GSUVMRF9UWVBFX1U2NDoK KwkJb2Zmc2V0NjQgPSB2bWNzX3JlYWQ2NChmaWVsZCk7CisJCVZNQ1NfRklFTERfQ0hFQ0soZmll bGQsIG9mZnNldDY0LCA2NCk7CisJCWJyZWFrOworCWNhc2UgVk1DU19GSUVMRF9UWVBFX1UzMjoK KwkJb2Zmc2V0MzIgPSB2bWNzX3JlYWQzMihmaWVsZCk7CisJCVZNQ1NfRklFTERfQ0hFQ0soZmll bGQsIG9mZnNldDMyLCAzMik7CisJCWJyZWFrOworCWNhc2UgVk1DU19GSUVMRF9UWVBFX05BVFVS QUxfV0lEVEg6CisJCW9mZnNldG53ID0gdm1jc19yZWFkbChmaWVsZCk7CisJCVZNQ1NfRklFTERf Q0hFQ0soZmllbGQsIG9mZnNldG53LCBOVyk7CisJCWJyZWFrOworCX0KK30KKworLyoKKyAqIE5v dGUsIG9mZnNldHMgb2YgZmllbGRzIGJlbG93IHdpbGwgbm90IGJlIGZpbGxlZCBpbnRvCisgKiBW TUNTSU5GTzoKKyAqIDEuIGZpZWxkcyBkZWZpbmVkIGluIEludGVsIHNwZWNpZmljYXRpb24gKElu dGVswq4gNjQgYW5kCisgKiAgICBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3Bl cuKAmXMgTWFudWFsLCBWb2x1bWUKKyAqICAgIDNDKSBidXQgbm90IGRlZmluZWQgaW4gKnZtY3Nf ZmllbGQqLgorICogMi4gZmllbGRzIHVuc3VwcG9ydGVkLgorICovCitzdGF0aWMgaW50IF9faW5p dCBhbGxvY192bWNzaW5mb19pbml0KHZvaWQpCit7CisvKgorICogVGhlIGZpcnN0IDggYnl0ZXMg aW4gdm1jcyByZWdpb24gYXJlIGZvcgorICogICBWTUNTIHJldmlzaW9uIGlkZW50aWZpZXIKKyAq ICAgVk1YLWFib3J0IGluZGljYXRvcgorICovCisjZGVmaW5lIEZJRUxEX1NUQVJUICg4KQorCisJ aW50IHIsIG9mZnNldDsKKwlzdHJ1Y3Qgdm1jcyAqdm1jczsKKwlpbnQgY3B1OworCXVuc2lnbmVk IGxvbmcgZmllbGQ7CisKKwl2bWNzID0gYWxsb2Nfdm1jcygpOworCWlmICghdm1jcykgeworCQly ZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyID0gaGFyZHdhcmVfZW5hYmxlX2FsbCgpOworCWlmIChy KQorCQlnb3RvIG91dDsKKworCS8qCisJICogV3JpdGUgZW5jb2RlZCBvZmZzZXRzIGludG8gVk1D UyBkYXRhIGZvciBsYXRlciB2bWNzX3JlYWQuCisJICovCisJZm9yIChvZmZzZXQgPSBGSUVMRF9T VEFSVDsgb2Zmc2V0IDwgdm1jc19jb25maWcuc2l6ZTsKKwkgICAgIG9mZnNldCArPSBzaXplb2Yo dTE2KSkKKwkJKih1MTYgKikoKGNoYXIgKil2bWNzICsgb2Zmc2V0KSA9IEVOQ09ESU5HX09GRlNF VChvZmZzZXQpOworCisJY3B1ID0gZ2V0X2NwdSgpOworCXZtY3NfY2xlYXIodm1jcyk7CisJcGVy X2NwdShjdXJyZW50X3ZtY3MsIGNwdSkgPSB2bWNzOworCXZtY3NfbG9hZCh2bWNzKTsKKworCXZt Y3NpbmZvX3JldmlzaW9uX2lkKHZtY3MtPnJldmlzaW9uX2lkKTsKKwl2bWNzX3JlYWRfY2hlY2tp bmcoVk1fSU5TVFJVQ1RJT05fRVJST1IpOworCW9mZnNldCA9IGdldF92bWNzX2ZpZWxkX29mZnNl dChWTV9JTlNUUlVDVElPTl9FUlJPUik7CisJaWYgKG9mZnNldCA9PSAtMSkKKwkJZ290byBvdXRf Y2xlYXI7CisKKwlmb3IgKGZpZWxkID0gMDsgZmllbGQgPCBWTUNTSU5GT19NQVhfRklFTEQ7ICsr ZmllbGQpIHsKKwkJaWYgKGZpZWxkID09IFZNX0lOU1RSVUNUSU9OX0VSUk9SKQorCQkJY29udGlu dWU7CisJCS8qCisJCSAqIEJlZm9yZSBlYWNoIHJlYWRpbmcsIHplcm9lZCBmaWVsZCBWTV9JTlNU UlVDVElPTl9FUlJPUgorCQkgKi8KKwkJKih1MzIgKikoKGNoYXIgKil2bWNzICsgb2Zmc2V0KSA9 IDA7CisJCXZtY3NfcmVhZF9jaGVja2luZyhmaWVsZCk7CisJfQorCisJciA9IHZtY3NfaWRfc3lz ZnNfYWRkKGNwdV9zdWJzeXMuZGV2X3Jvb3QpOworCWlmIChyKQorCQlnb3RvIG91dF9jbGVhcjsK KwlyID0gdm1jc19zeXNmc19hZGQoY3B1X3N1YnN5cy5kZXZfcm9vdCk7CisJaWYgKHIpCisJCXZt Y3NfaWRfc3lzZnNfcmVtb3ZlKGNwdV9zdWJzeXMuZGV2X3Jvb3QpOworCitvdXRfY2xlYXI6CisJ dm1jc19jbGVhcih2bWNzKTsKKwlwdXRfY3B1KCk7CisJaGFyZHdhcmVfZGlzYWJsZV9hbGwoKTsK K291dDoKKwlmcmVlX3ZtY3Modm1jcyk7CisJcmV0dXJuIHI7Cit9CisKK3N0YXRpYyB2b2lkIF9f ZXhpdCBhbGxvY192bWNzaW5mb19leGl0KHZvaWQpCit7CisJdm1jc19zeXNmc19yZW1vdmUoY3B1 X3N1YnN5cy5kZXZfcm9vdCk7CisJdm1jc19pZF9zeXNmc19yZW1vdmUoY3B1X3N1YnN5cy5kZXZf cm9vdCk7Cit9CisKK21vZHVsZV9pbml0KGFsbG9jX3ZtY3NpbmZvX2luaXQpOworbW9kdWxlX2V4 aXQoYWxsb2Nfdm1jc2luZm9fZXhpdCk7Ci0tIAoxLjcuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18Ka2V4ZWMgbWFpbGluZyBsaXN0CmtleGVjQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9rZXhlYwo=