--=_c864110a076fc513331e0370bcb9adbe Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8; format=flowed
I put patch here because the ftp server is full. DB
--=_c864110a076fc513331e0370bcb9adbe Content-Transfer-Encoding: base64 Content-Type: text/plain; name=bart-130624.patch Content-Disposition: attachment; filename=bart-130624.patch
RnJvbSBiOTM0MjdiZDVjYmNkMmJmOWMzYmM3M2IxYzE2NWYzNDY3MGRkOWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBiYXJ0IDxiYXJ0QG5iLWJhcnQuKG5vbmUpPgpEYXRlOiBNb24s IDI0IEp1biAyMDEzIDIzOjA2OjEwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gT3ZlcmxheSB0byBy ZXdyaXRlIHZhbHVlIG9mIGF0dHJpYnV0ZSB1c2luZyByZWdleAoKLS0tCiBjb250cmliL3NsYXBk LW1vZHVsZXMvcmV3YXR0L01ha2VmaWxlIHwgICA0NiArKysrCiBjb250cmliL3NsYXBkLW1vZHVs ZXMvcmV3YXR0L3Jld2F0dC5jIHwgIDQ2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDIgZmlsZXMgY2hhbmdlZCwgNTEzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9zbGFwZC1tb2R1bGVzL3Jld2F0dC9NYWtlZmlsZQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvc2xhcGQtbW9kdWxlcy9yZXdhdHQvcmV3YXR0LmMK CmRpZmYgLS1naXQgYS9jb250cmliL3NsYXBkLW1vZHVsZXMvcmV3YXR0L01ha2VmaWxlIGIvY29u dHJpYi9zbGFwZC1tb2R1bGVzL3Jld2F0dC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5kNWQ5ZDEyCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zbGFwZC1t b2R1bGVzL3Jld2F0dC9NYWtlZmlsZQpAQCAtMCwwICsxLDQ2IEBACisjICRPcGVuTERBUCQKKwor TERBUF9TUkMgPSAuLi8uLi8uLgorTERBUF9CVUlMRCA9IC4uLy4uLy4uCitMREFQX0lOQyA9IC1J JChMREFQX0JVSUxEKS9pbmNsdWRlIC1JJChMREFQX1NSQykvaW5jbHVkZSAtSSQoTERBUF9TUkMp L3NlcnZlcnMvc2xhcGQKK0xEQVBfTElCID0gJChMREFQX0JVSUxEKS9saWJyYXJpZXMvbGlibGRh cF9yL2xpYmxkYXBfci5sYSBcCisJJChMREFQX0JVSUxEKS9saWJyYXJpZXMvbGlibGJlci9saWJs YmVyLmxhCisKK0xJQlRPT0wgPSAkKExEQVBfQlVJTEQpL2xpYnRvb2wKK0NDID0gZ2NjCitPUFQg PSAtZyAtTzIgLVdhbGwgLWdnZGIKK0RFRlMgPSAKK0lOQ1MgPSAkKExEQVBfSU5DKQorTElCUyA9 ICQoTERBUF9MSUIpCisKK1BST0dSQU1TID0gcmV3YXR0LmxhCitMVFZFUiA9IDA6MDowCisKK3By ZWZpeD0vdXNyL2xvY2FsCitleGVjX3ByZWZpeD0kKHByZWZpeCkKK2xkYXBfc3ViZGlyPS9vcGVu bGRhcAorCitsaWJkaXI9JChleGVjX3ByZWZpeCkvbGliCitsaWJleGVjZGlyPSQoZXhlY19wcmVm aXgpL2xpYmV4ZWMKK21vZHVsZWRpciA9ICQobGliZXhlY2RpcikkKGxkYXBfc3ViZGlyKQorCisu U1VGRklYRVM6IC5jIC5vIC5sbworCisuYy5sbzoKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxl ICQoQ0MpICQoT1BUKSAkKERFRlMpICQoSU5DUykgLWMgJDwKKworYWxsOiAkKFBST0dSQU1TKQor CityZXdhdHQubGE6IHJld2F0dC5sbworCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChP UFQpIC12ZXJzaW9uLWluZm8gJChMVFZFUikgXAorCS1ycGF0aCAkKG1vZHVsZWRpcikgLW1vZHVs ZSAtbyAkQCAkPyAkKExJQlMpCisKK2NsZWFuOgorCXJtIC1yZiAqLm8gKi5sbyAqLmxhIC5saWJz CisKK2luc3RhbGw6ICQoUFJPR1JBTVMpCisJbWtkaXIgLXAgJChERVNURElSKSQobW9kdWxlZGly KQorCWZvciBwIGluICQoUFJPR1JBTVMpIDsgZG8gXAorCQkkKExJQlRPT0wpIC0tbW9kZT1pbnN0 YWxsIGNwICQkcCAkKERFU1RESVIpJChtb2R1bGVkaXIpIDsgXAorCWRvbmUKKwpkaWZmIC0tZ2l0 IGEvY29udHJpYi9zbGFwZC1tb2R1bGVzL3Jld2F0dC9yZXdhdHQuYyBiL2NvbnRyaWIvc2xhcGQt bW9kdWxlcy9yZXdhdHQvcmV3YXR0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNjgzYmVjYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvc2xhcGQtbW9kdWxlcy9yZXdh dHQvcmV3YXR0LmMKQEAgLTAsMCArMSw0NjcgQEAKKy8qIHJld2F0dC5jIC0gT3ZlcmxheSB0byBy ZXdyaXRlIHNvbWUgYXR0cmlidXRlICAqLworLyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgb25seSBhcyBhdXRob3JpemVkIGJ5IHRoZSBPcGVuTERBUAorICogUHVi bGljIExpY2Vuc2UuCisgKgorICogQSBjb3B5IG9mIHRoaXMgbGljZW5zZSBpcyBhdmFpbGFibGUg aW4gdGhlIGZpbGUgTElDRU5TRSBpbiB0aGUKKyAqIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhl IGRpc3RyaWJ1dGlvbiBvciwgYWx0ZXJuYXRpdmVseSwgYXQKKyAqIDxodHRwOi8vd3d3Lk9wZW5M REFQLm9yZy9saWNlbnNlLmh0bWw+LgorICovCisvKiBBQ0tOT1dMRURHRU1FTlRTOgorICogVGhp cyB3b3JrIHdhcyBvcmlnaW5hbGx5IGRldmVsb3BlZCBieSB0aGUgRG9taW5payBCYXJ0a2lld2lj eiBiYXJ0QGljbS5lZHUucGwgZm9yCisgKiBpbmNsdXNpb24gaW4gT3BlbkxEQVAgU29mdHdhcmUu CisgKi8KKworI2luY2x1ZGUgInBvcnRhYmxlLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPHJlZ2V4Lmg+CisKKyNpbmNsdWRlICJhYy9zdHJpbmcuaCIKKyNpbmNsdWRlICJhYy9z b2NrZXQuaCIKKworI2luY2x1ZGUgImx1dGlsLmgiCisjaW5jbHVkZSAic2xhcC5oIgorI2luY2x1 ZGUgImNvbmZpZy5oIgorCisjZGVmaW5lIE1BWF9NQVRDSEVTIDEKKworZW51bSB7CisJUkVXQVRU X0FUVFJJQlVURT0xLAorCVJFV0FUVF9SRUdFWCwKKwlSRVdBVFRfU1VCLAorCVJFV0FUVF9BVFRS SUJVVEVfVCwKKwlSRVdBVFRfUkVHRVhfVAorfTsKKworCit0eXBlZGVmIHN0cnVjdCByZXdhdHRf aW5mb190IHsKKwlBdHRyaWJ1dGVEZXNjcmlwdGlvbgkqcmFfYXR0cmlidXRlOworCXJlZ2V4X3QJ CQkqcmFfcmVnZXg7CisJY2hhcgkJKnJhX3N1YjsKKwlBdHRyaWJ1dGVEZXNjcmlwdGlvbgkqcmFf YXR0cmlidXRlX3Q7CisJcmVnZXhfdAkJCSpyYV9yZWdleF90OworCXN0cnVjdCByZXdhdHRfaW5m b190CSpyYV9uZXh0OworfSByZXdhdHRfaW5mb190OworCitzdGF0aWMgaW50CityZXdhdHRfY2Zn ZW4oIENvbmZpZ0FyZ3MgKmMgKQoreworCXNsYXBfb3Zlcmluc3QJKm9uID0gKHNsYXBfb3Zlcmlu c3QgKiljLT5iaTsKKwlyZXdhdHRfaW5mb190CSpjaSA9IChyZXdhdHRfaW5mb190ICopb24tPm9u X2JpLmJpX3ByaXZhdGUgOworCisgICAgICAgIGlmKCBjaSA9PSBOVUxMICkgeworICAgICAgICAg ICAgICAgIGNpID0gKHJld2F0dF9pbmZvX3QqKWNoX2NhbGxvYyggMSwgc2l6ZW9mKHJld2F0dF9p bmZvX3QpICk7CisJCWNpIC0+IHJhX3JlZ2V4ID0gTlVMTDsKKwkJY2kgLT4gcmFfcmVnZXggPSBO VUxMOworCQljaSAtPiByYV9zdWIgPSBOVUxMOworCQljaSAtPiByYV9hdHRyaWJ1dGUgPSBOVUxM OworCQljaSAtPiByYV9hdHRyaWJ1dGVfdCA9IE5VTEw7CisJCWNpIC0+IHJhX25leHQgPSBOVUxM OworCQlvbi0+b25fYmkuYmlfcHJpdmF0ZT0gKHZvaWQgKikgY2k7CisJCURlYnVnKCBMREFQX0RF QlVHX1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIG9uLT5vbl9iaS5iaV9wcml2YXRlPSAlcCBcbiIs IG9uLT5vbl9iaS5iaV9wcml2YXRlLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKwkJZm9yICg7 Y2k7Y2k9Y2ktPnJhX25leHQpIHsKKyAgICAgICAgCQlpZiggY2ktPnJhX25leHQgPT0gTlVMTCAp IHsKKwkJCQlpZihjaS0+cmFfYXR0cmlidXRlICE9IE5VTEwgJiYgYy0+dHlwZSA9PSBSRVdBVFRf QVRUUklCVVRFICYmICBjLT5vcCAhPSBTTEFQX0NPTkZJR19FTUlUICYmIGMtPm9wICE9ICBMREFQ X01PRF9ERUxFVEUpeworICAgICAgICAgICAgICAgIAkJCWNpLT5yYV9uZXh0ID0gKHJld2F0dF9p bmZvX3QqKWNoX2NhbGxvYyggMSwgc2l6ZW9mKHJld2F0dF9pbmZvX3QpICk7CisJCQkJCWNpLT5y YV9uZXh0IC0+IHJhX3JlZ2V4ID0gTlVMTDsKKwkJCQkJY2ktPnJhX25leHQgLT4gcmFfcmVnZXhf dCA9IE5VTEw7CisJCQkJCWNpLT5yYV9uZXh0IC0+IHJhX3N1YiA9IE5VTEw7CisJCQkJCWNpLT5y YV9uZXh0IC0+IHJhX2F0dHJpYnV0ZSA9IE5VTEw7CisJCQkJCWNpLT5yYV9uZXh0IC0+IHJhX2F0 dHJpYnV0ZV90ID0gTlVMTDsKKwkJCQkJY2ktPnJhX25leHQgLT4gcmFfbmV4dCA9IE5VTEw7CisJ CQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIG9uLT5vbl9iaS5i aV9wcml2YXRlPSAlcCBcbiIsIG9uLT5vbl9iaS5iaV9wcml2YXRlLCAwLCAwKTsKKwkJCQl9IGVs c2UgeworCQkJCQlicmVhazsKKwkJCQl9CisgICAgICAgIAkJfQorCQkJCisJCX0KKworCX0KKwor CWNvbnN0IGNoYXIJCSp0ZXh0OworCWludCByYyA9IDE7CisJaW50IHIgPSAxOworCWludCBpID0g MDsKKwlpbnQgbGVuID0gMDsKKwlmb3IoaT0wO2k8Yy0+YXJnYztpKyspeworCQlEZWJ1ZyggTERB UF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbjogICBjLT5hcmd2WyVkXTogJXNcbiIsIGksIGMt PmFyZ3ZbaV0sIDApOworCX0KKwlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdl bjogICBjLT5vcDogJWRcbiIsICBjLT5vcCwgMCwwKTsKKwlpZiAoIGMtPm9wID09IFNMQVBfQ09O RklHX0VNSVQgKSB7CisJCWNpID0gb24tPm9uX2JpLmJpX3ByaXZhdGUgOworCQlzdHJ1Y3QgYmVy dmFsCWJ2OworCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbiBTTEFQX0NP TkZJR19FTUlUIDogICBjLT50eXBlOiAlZFxuIiwgIGMtPnR5cGUsIDAsMCk7CisJCXN3aXRjaChj LT50eXBlKSB7CisJCWNhc2UgUkVXQVRUX0FUVFJJQlVURToKKwkJCWxlbiA9IHNucHJpbnRmKCBj LT5jcl9tc2csIHNpemVvZiggYy0+Y3JfbXNnICksCisJCQkJICIlcyIsIAorCQkJCWNpLT5yYV9h dHRyaWJ1dGUtPmFkX2NuYW1lLmJ2X3ZhbCApOworCisJCQlidi5idl92YWwgPSBjLT5jcl9tc2c7 CisJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbiBSRVdBVFRfQVRUUklC VVRFOiAgIGMtPmNyX21zZzogJXNcbiIsICBjLT5jcl9tc2csIDAsMCk7CisJCQlidi5idl9sZW4g PSBsZW47CisJCQl2YWx1ZV9hZGRfb25lICggJmMtPnJ2YWx1ZV92YWxzLCAmYnYgKTsKKwkJCXJj ID0gMDsKKwkJCWJyZWFrOworCQljYXNlIFJFV0FUVF9SRUdFWDoKKworCQkJLy9sZW4gPSBzbnBy aW50ZiggYy0+Y3JfbXNnLCBzaXplb2YoIGMtPmNyX21zZyApLCAiJXMiLCBjaS0+cmFfcmVnZXhw ICk7CisJCQkvL2J2LmJ2X3ZhbCA9IGMtPmNyX21zZzsKKwkJCS8vRGVidWcoIExEQVBfREVCVUdf VFJBQ0UsICJyZXdhdHRfY2ZnZW4gUkVXQVRUX1JFR0VYUDogICBjLT5jcl9tc2c6ICVzXG4iLCAg Yy0+Y3JfbXNnLCAwLDApOworCQkJLy9idi5idl9sZW4gPSBsZW47CisJCQkvL3ZhbHVlX2FkZF9v bmUgKCAmYy0+cnZhbHVlX3ZhbHMsICZidiApOworCQkJcmMgPSAwOworCQkJYnJlYWs7CisJCWNh c2UgUkVXQVRUX1NVQjoKKwkJCWlmICggY2ktPnJhX3N1YiApeworCQkJCWxlbiA9IHNucHJpbnRm KCBjLT5jcl9tc2csIHNpemVvZiggYy0+Y3JfbXNnICksCisJCQkJCSIlcyIsCisJCQkJCWNpLT5y YV9zdWIgKTsKKworCQkJCWJ2LmJ2X3ZhbCA9IGMtPmNyX21zZzsKKwkJCQlEZWJ1ZyggTERBUF9E RUJVR19UUkFDRSwgInJld2F0dF9jZmdlbiBSRVdBVFRfU1VCOiAgIGMtPmNyX21zZzogJXNcbiIs ICBjLT5jcl9tc2csIDAsMCk7CisJCQkJYnYuYnZfbGVuID0gbGVuOworCQkJCXZhbHVlX2FkZF9v bmUgKCAmYy0+cnZhbHVlX3ZhbHMsICZidiApOworCQkJfQorCQkJcmMgPSAwOworCQkJYnJlYWs7 CisJCWNhc2UgUkVXQVRUX0FUVFJJQlVURV9UOgorCQkJaWYoY2ktPnJhX2F0dHJpYnV0ZV90KXsK KwkJCQlsZW4gPSBzbnByaW50ZiggYy0+Y3JfbXNnLCBzaXplb2YoIGMtPmNyX21zZyApLAorCQkJ CQkgIiVzIiwgCisJCQkJCWNpLT5yYV9hdHRyaWJ1dGVfdC0+YWRfY25hbWUuYnZfdmFsICk7CisJ CQkJYnYuYnZfdmFsID0gYy0+Y3JfbXNnOworCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAi cmV3YXR0X2NmZ2VuIFJFV0FUVF9BVFRSSUJVVEU6ICAgYy0+Y3JfbXNnOiAlc1xuIiwgIGMtPmNy X21zZywgMCwwKTsKKwkJCQlidi5idl9sZW4gPSBsZW47CisJCQkJdmFsdWVfYWRkX29uZSAoICZj LT5ydmFsdWVfdmFscywgJmJ2ICk7CisJCQl9CisJCQlyYyA9IDA7CisJCQlicmVhazsKKwkJY2Fz ZSBSRVdBVFRfUkVHRVhfVDoKKwkJCXJjID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJ CQlyYyA9IDE7CisJCQlicmVhazsKKwkJfQorCQlyZXR1cm4gcmM7CisJfSBlbHNlIGlmICggYy0+ b3AgPT0gTERBUF9NT0RfREVMRVRFICkgeworCSAgICAgICAgLyogRklYTUUgKi8KKwkgICAgICAg IHJldHVybiAxOworCX0KKwlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbjog ICBjLT50eXBlOiAlZFxuIiwgIGMtPnR5cGUsIDAsMCk7CisJc3dpdGNoKCBjLT50eXBlICkgewor CWNhc2UgUkVXQVRUX0FUVFJJQlVURToKKwkJaWYgKCBjLT5hcmdjID09IDIgKXsKKwkJCXIgPSBz bGFwX3N0cjJhZCggYy0+YXJndlsxXSwgJihjaS0+cmFfYXR0cmlidXRlKSwgJnRleHQgKTsKKwkJ CWlmICggciAhPSBMREFQX1NVQ0NFU1MgKSB7CisJCQkJRGVidWcoIExEQVBfREVCVUdfVFJBQ0Us ICJyZXdhdHRfY2ZnZW46ICBzbGFwX3N0cjJhZDogcmV0dXJuIGNvZGUgPSAlZFxuIiwgciwgMCww KTsKKwkJCQlyYyA9IDE7CisJCQl9IGVsc2UgeworCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNF LCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9hdHRyaWJ1dGUtPmFkX2NuYW1lLmJ2X3ZhbCA9ICVz XG4iLCAgY2ktPnJhX2F0dHJpYnV0ZS0+YWRfY25hbWUuYnZfdmFsICwgMCwwKTsKKwkJCQlyYyA9 IDA7CisJCQl9CisJCX0KKwkJYnJlYWs7CisJY2FzZSBSRVdBVFRfUkVHRVg6CisJCWlmICggYy0+ YXJnYyA9PSAyICl7CisJCQljaS0+cmFfcmVnZXg9KHJlZ2V4X3QgKilTTEFQX01BTExPQyhzaXpl b2YocmVnZXhfdCkpOworCQkJciA9IHJlZ2NvbXAoY2ktPnJhX3JlZ2V4LCBjLT5hcmd2WzFdLCBS RUdfRVhURU5ERUQpOworCQkJaWYoIHIgKXsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwg InJld2F0dF9jZmdlbjogQ291bGQgbm90IGNvbXBpbGUgcmVnZXggciA9ICVkXG4iLCByICwgMCww KTsKKwkJCQlyZWdmcmVlKGNpLT5yYV9yZWdleCk7CisJCQkJY2ktPnJhX3JlZ2V4PU5VTEw7CisJ CQkJcmMgPSAxOworCQkJfSBlbHNlIHsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJl d2F0dF9jZmdlbjogICBjaS0+cmFfcmVnZXggbWFrZSBmcm9tICM+ICVzIDwjJ1xuIiwgIGMtPmFy Z3ZbMV0gLCAwLDApOworCQkJCXJjID0gMDsKKwkJCX0KKwkJfQorCQlicmVhazsKKwljYXNlIFJF V0FUVF9TVUI6CisJCWlmICggYy0+YXJnYyA9PSAyICl7CisJCQljaS0+cmFfc3ViPVNMQVBfTUFM TE9DKChzdHJsZW4oYy0+YXJndlsxXSkrMSkqIHNpemVvZihjaGFyKSApOworCQkJRGVidWcoIExE QVBfREVCVUdfVFJBQ0UsICJyZXdhdHRfY2ZnZW46ICAgY2ktPnJhX3N1Yj1tYWxsb2MoJWx1KVxu IiwgICgoc3RybGVuKGMtPmFyZ3ZbMV0pKzEpKiBzaXplb2YoY2hhcikgKSwgMCwwKTsKKwkJCXN0 cm5jcHkoY2ktPnJhX3N1YixjLT5hcmd2WzFdLHN0cmxlbihjLT5hcmd2WzFdKSk7CisJCQljaS0+ cmFfc3ViW3N0cmxlbihjLT5hcmd2WzFdKV09J1wwJzsKKwkJCURlYnVnKCBMREFQX0RFQlVHX1RS QUNFLCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9zdWI9ICVzXG4iLCAgY2ktPnJhX3N1YiwgMCww KTsKKwkJCXJjID0gMDsKKwkJfSBlbHNlIHsKKwkJCWNpLT5yYV9zdWI9bWFsbG9jKHNpemVvZihj aGFyKSk7CisJCQljaS0+cmFfc3ViWzBdPSdcMCc7CisJCQlyYyA9IDA7CisJCX0KKwkJYnJlYWs7 CisJY2FzZSBSRVdBVFRfQVRUUklCVVRFX1Q6CisJCWlmICggYy0+YXJnYyA9PSAyICl7CisJCQly ID0gc2xhcF9zdHIyYWQoIGMtPmFyZ3ZbMV0sICYoY2ktPnJhX2F0dHJpYnV0ZV90KSwgJnRleHQg KTsKKwkJCWlmICggciAhPSBMREFQX1NVQ0NFU1MgKSB7CisJCQkJRGVidWcoIExEQVBfREVCVUdf VFJBQ0UsICJyZXdhdHRfY2ZnZW46ICBzbGFwX3N0cjJhZDogcmV0dXJuIGNvZGUgPSAlZFxuIiwg ciwgMCwwKTsKKwkJCQlyYyA9IDE7CisJCQl9IGVsc2UgeworCQkJCURlYnVnKCBMREFQX0RFQlVH X1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9hdHRyaWJ1dGVfdC0+YWRfY25hbWUuYnZf dmFsID0gJXNcbiIsICBjaS0+cmFfYXR0cmlidXRlX3QtPmFkX2NuYW1lLmJ2X3ZhbCAsIDAsMCk7 CisJCQkJcmMgPSAwOworCQkJfQorCQl9CisJCWJyZWFrOworCWNhc2UgUkVXQVRUX1JFR0VYX1Q6 CisJCWlmICggYy0+YXJnYyA9PSAyICl7CisJCQljaS0+cmFfcmVnZXhfdD0ocmVnZXhfdCAqKVNM QVBfTUFMTE9DKHNpemVvZihyZWdleF90KSk7CisJCQlyID0gcmVnY29tcChjaS0+cmFfcmVnZXhf dCwgYy0+YXJndlsxXSwgUkVHX0VYVEVOREVEKTsKKwkJCWlmKCByICl7CisJCQkJRGVidWcoIExE QVBfREVCVUdfVFJBQ0UsICJyZXdhdHRfY2ZnZW46IENvdWxkIG5vdCBjb21waWxlIHJlZ2V4IHIg PSAlZFxuIiwgciAsIDAsMCk7CisJCQkJcmVnZnJlZShjaS0+cmFfcmVnZXhfdCk7CisJCQkJY2kt PnJhX3JlZ2V4X3Q9TlVMTDsKKwkJCQlyYyA9IDE7CisJCQl9IGVsc2UgeworCQkJCURlYnVnKCBM REFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9yZWdleF90IG1ha2UgZnJv bSAjPiAlcyA8IydcbiIsICBjLT5hcmd2WzFdICwgMCwwKTsKKwkJCQlyYyA9IDA7CisJCQl9CisJ CX0KKwkJYnJlYWs7CisKKworCWRlZmF1bHQ6CQkKKwkJcmV0dXJuIDE7CisJCWJyZWFrOworCX0K KwlyZXR1cm4gcmM7Cit9CitzdGF0aWMgaW50CityZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiKCBP cGVyYXRpb24gKm9wLCBTbGFwUmVwbHkgKnJzICkKK3sKKwlzbGFwX2NhbGxiYWNrICAgKnNjOwor CXJld2F0dF9pbmZvX3QJKnJhaTsKKwlFbnRyeQkJKmUgPSBOVUxMOworCUF0dHJpYnV0ZSAqYTsK KwljaGFyIG1zZ2J1ZlsxMDBdOworCWludCByZXRpOworCWludCBpOworCisJYXNzZXJ0KCBvcCAm JiBvcC0+b19jYWxsYmFjayAmJiBycyApOworCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3 YXR0X3NlYXJjaF9yZXNwb25zZV9jYiBcbiIsIDAsIDAsMCk7CisJaWYgKCBycy0+c3JfdHlwZSAh PSBSRVBfU0VBUkNIIHx8ICFycy0+c3JfZW50cnkgKSB7CisJCXNsYXBfZnJlZXNlbGZfY2IoIG9w LCBycyApOworCQlyZXR1cm4gKCBTTEFQX0NCX0NPTlRJTlVFICk7CisJfQorCXNjID0gb3AtPm9f Y2FsbGJhY2s7CisJcmFpID0gKHJld2F0dF9pbmZvX3QgKilzYy0+c2NfcHJpdmF0ZTsKKworCWZv ciAocmFpID0gKHJld2F0dF9pbmZvX3QgKilzYy0+c2NfcHJpdmF0ZTtyYWk7cmFpPXJhaS0+cmFf bmV4dCl7CisJCS8vRGVidWcoIExEQVBfREVCVUdfVFJBQ0UsICJyZXdhdHRfc2VhcmNoX3Jlc3Bv bnNlX2NiOiByYWkgPSAlcCBcbiIsIHJhaSwgMCwgMCk7CisJCWUgPSBycy0+c3JfZW50cnk7CisJ CWZvciAoIGEgPSBlLT5lX2F0dHJzOyBhOyBhID0gYS0+YV9uZXh0ICkgeworCQkJaWYgKCBhLT5h X2Rlc2MgPT0gcmFpLT5yYV9hdHRyaWJ1dGUgKSB7CisJCQkJRGVidWcoIExEQVBfREVCVUdfVFJB Q0UsICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiByZXdhdHQgZmluZDogJXNcbiIsIGEtPmFf ZGVzYy0+YWRfY25hbWUuYnZfdmFsLCAwLDApOworCQkJCWJyZWFrOworCQkJCX0KKwkJfQorCisJ CWlmICggYSA9PSBOVUxMICkgeworCQkJRGVidWcoIExEQVBfREVCVUdfVFJBQ0UsICJyZXdhdHRf c2VhcmNoX3Jlc3BvbnNlX2NiOiByZXdhdHQgbm90IGZpbmQ6ICVzXG4iLCByYWktPnJhX2F0dHJp YnV0ZS0+YWRfY25hbWUuYnZfdmFsLCAwLDApOworCQkJY29udGludWU7CisJCX0KKworCQlEZWJ1 ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IGEtPmFfZGVz Yy0+YWRfY25hbWUuYnZfdmFsOiAlc1xuIiwgYS0+YV9kZXNjLT5hZF9jbmFtZS5idl92YWwsIDAs MCk7CisKKwkJaWYgKCByYWktPnJhX2F0dHJpYnV0ZV90ICE9IE5VTEwgKXsKKwkJCWZvciAoIGEg PSBlLT5lX2F0dHJzOyBhOyBhID0gYS0+YV9uZXh0ICkgeworCQkJCWlmICggYS0+YV9kZXNjID09 IHJhaS0+cmFfYXR0cmlidXRlX3QgKSB7CisJCQkJCWJyZWFrOworCQkJCQl9CisJCQl9CisJCisJ CQlpZiAoIGEgPT0gTlVMTCApIHsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0 dF9zZWFyY2hfcmVzcG9uc2VfY2I6IHJld2F0dCBub3QgZmluZCByYV9hdHRyaWJ1dGVfdCA6ICVz XG4iLCByYWktPnJhX2F0dHJpYnV0ZV90LT5hZF9jbmFtZS5idl92YWwsIDAsMCk7CisJCQkJY29u dGludWU7CisJCQl9CisJCX0KKwkJaWYgKCByYWktPnJhX2F0dHJpYnV0ZV90ICE9IE5VTEwgJiYg cmFpLT5yYV9yZWdleF90ICE9IE5VTEwpeworCQkJZm9yICggYSA9IGUtPmVfYXR0cnM7IGE7IGEg PSBhLT5hX25leHQgKSB7CisJCQkJaWYgKCBhLT5hX2Rlc2MgPT0gcmFpLT5yYV9hdHRyaWJ1dGVf dCApIHsKKwkJCQkJCWZvcihpPTA7aSA8IGEtPmFfbnVtdmFscyA7aSsrKXsKKwkJCQkJCQkgcmV0 aSA9IHJlZ2V4ZWMocmFpLT5yYV9yZWdleF90LCBhLT5hX3ZhbHNbaV0uYnZfdmFsICwgMCAsIE5V TEwgLCBSRUdfTk9UQk9MIHwgUkVHX05PVEVPTCk7CisJCQkJCQkJIGlmIChyZXRpID09IDApIGJy ZWFrOworCQkJCQkJfQorCQkJCQkJaWYgKHJldGkgPT0gMCApIGJyZWFrOworCQkJCQl9CisJCQl9 CisJCisJCQlpZiAoIGEgPT0gTlVMTCApIHsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwg InJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IHJhX3JlZ2V4X3QgUkVHX05PTUFUQ0ggaW4gJXMg XG4iLCAgcmFpLT5yYV9hdHRyaWJ1dGVfdC0+YWRfY25hbWUuYnZfdmFsICwgMCwwKTsKKwkJCQlj b250aW51ZTsKKwkJCX0KKworCQl9CisKKwkJLy9OZXcgZnVuY3Rpb24gZm9yIHNsYXBkID4gMi40 LjI0CisJCXJzX2VudHJ5Mm1vZGlmaWFibGUoIG9wLCBycywgKHNsYXBfb3Zlcmluc3QgKikgb3At Pm9fYmQtPmJkX2luZm8gKTsKKwkJLy9yc19lbnN1cmVfZW50cnlfbW9kaWZpYWJsZSggb3AsIHJz LCAoc2xhcF9vdmVyaW5zdCAqKSBvcC0+b19iZC0+YmRfaW5mbyApOworCQllID0gcnMtPnNyX2Vu dHJ5OworCisJCWZvciAoIGEgPSBlLT5lX2F0dHJzOyBhOyBhID0gYS0+YV9uZXh0ICkgeworCQkJ aWYgKCBhLT5hX2Rlc2MgIT0gIHJhaS0+cmFfYXR0cmlidXRlICkKKwkJCQljb250aW51ZTsKKwkJ CWZvcihpPTA7aSA8IGEtPmFfbnVtdmFscyA7aSsrKXsKKworCisJCQkJRGVidWcoIExEQVBfREVC VUdfVFJBQ0UsICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiBvbGQgIHZhbHVlICAlc1xuIiwg YS0+YV92YWxzW2ldLmJ2X3ZhbCwgMCwwICk7CisJCQkJRGVidWcoIExEQVBfREVCVUdfVFJBQ0Us ICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiBvbGQgbnZhbHVlICAlc1xuIiwgYS0+YV9udmFs c1tpXS5idl92YWwsIDAsMCApOworCisJCQkJaW50IGo7CisJCQkJY2hhciAqIHZhbF90bXA9TlVM TDsKKwkJCQlyZWdtYXRjaF90IG1hdGNoZXNbTUFYX01BVENIRVNdOworCQkJCQorCQkJCS8qIEV4 ZWN1dGUgcmVndWxhciBleHByZXNzaW9uICovCisJCQkJcmV0aSA9IHJlZ2V4ZWMocmFpLT5yYV9y ZWdleCwgYS0+YV92YWxzW2ldLmJ2X3ZhbCAsIE1BWF9NQVRDSEVTICwgbWF0Y2hlcyAsIFJFR19O T1RCT0wgfCBSRUdfTk9URU9MKTsKKworCQkJCWlmKCAhcmV0aSApeworCQkJCQlmb3IgKGogPSAw OyBqIDwgIE1BWF9NQVRDSEVTOyBqKyspIHsKKwkJCQkJCWlmIChtYXRjaGVzW2pdLnJtX3NvID09 IC0xKSB7CisJCQkJCQkgICAgYnJlYWs7CisJCQkJCQl9CisJCQkJCQlpZiAoaiA9PSAwICkgewor CQkJCQkJCXZhbF90bXAgPSByZWFsbG9jKHZhbF90bXAgLCAoc3RybGVuKHJhaS0+cmFfc3ViKSAt IG1hdGNoZXNbal0ucm1fZW8gKyBtYXRjaGVzW2pdLnJtX3NvICsxICsgc3RybGVuKGEtPmFfdmFs c1tpXS5idl92YWwpICkgKiBzaXplb2YoY2hhcikpOworCQkJCQkJCWlmKG1hdGNoZXNbal0ucm1f c28gPiAwKQorCQkJCQkJCQlzdHJuY3B5KCB2YWxfdG1wLCAgYS0+YV92YWxzW2ldLmJ2X3ZhbCwg bWF0Y2hlc1tqXS5ybV9zbyk7CisJCQkJCQkJc3RyY3B5KCB2YWxfdG1wICsgbWF0Y2hlc1tqXS5y bV9zbywgIHJhaS0+cmFfc3ViKTsKKwkJCQkJCQlzdHJjcHkoIHZhbF90bXAgKyBzdHJsZW4odmFs X3RtcCkgLCBhLT5hX3ZhbHNbaV0uYnZfdmFsICsgbWF0Y2hlc1tqXS5ybV9lbyApOworCQkJCQkJ fQorCQkJCQl9CisJCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X3NlYXJjaF9y ZXNwb25zZV9jYjogdmFsX3RtcCB2YWx1ZTogJXNcbiIsIHZhbF90bXAsIDAsIDAgKTsKKwkJCQkJ YS0+YV92YWxzW2ldLmJ2X3ZhbCA9IHJlYWxsb2MoIGEtPmFfdmFsc1tpXS5idl92YWwgLCAoIHN0 cmxlbih2YWxfdG1wKSArIDEgKSAqIHNpemVvZihjaGFyKSAgKTsKKwkJCQkJYS0+YV9udmFsc1tp XS5idl92YWwgPSByZWFsbG9jKCBhLT5hX252YWxzW2ldLmJ2X3ZhbCAsICggc3RybGVuKHZhbF90 bXApICsgMSApICAqIHNpemVvZihjaGFyKSAgKTsKKwkJCQkJRGVidWcoIExEQVBfREVCVUdfVFJB Q0UsICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiBhZnRlciBTTEFQX1JFQUxMT0MgYS0+YV9b bl12YWxzWyVkXS0+YnZfdmFsIHRvICAlbHVcbiIsIGkgLChzdHJsZW4odmFsX3RtcCkrMSkqc2l6 ZW9mKGNoYXIpLCAwICk7CisJCQkJCXN0cmNweSggYS0+YV92YWxzW2ldLmJ2X3ZhbCAsdmFsX3Rt cCk7CisJCQkJCXN0cmNweSggYS0+YV9udmFsc1tpXS5idl92YWwgLHZhbF90bXApOworCQkJCQlE ZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IG5ldyBh LT5hX1tuXXZhbHNbJWRdLmJ2X3ZhbD0gJXNcbiIsaSwgYS0+YV9udmFsc1tpXS5idl92YWwsIDAg KTsKKwkJCQkJYS0+YV92YWxzW2ldLmJ2X2xlbj0gc3RybGVuKHZhbF90bXApIDsKKwkJCQkJYS0+ YV9udmFsc1tpXS5idl9sZW49IHN0cmxlbih2YWxfdG1wKSA7CisJCQkJCURlYnVnKCBMREFQX0RF QlVHX1RSQUNFLCAicmV3YXR0X3NlYXJjaF9yZXNwb25zZV9jYjogbmV3IGEtPmFfW25ddmFsc1sl ZF0uYnZfbGVuPSAlenVcbiIsaSwgc3RybGVuKHZhbF90bXApLCAwICk7CisJCQkJCWlmICh2YWxf dG1wKSBmcmVlKHZhbF90bXApOworCQkJCX0KKwkJCQllbHNlIGlmKCByZXRpID09IFJFR19OT01B VENIICl7CisJCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X3NlYXJjaF9yZXNw b25zZV9jYjogUkVHX05PTUFUQ0ggaW4gOiAlc1xuIiwgIGEtPmFfdmFsc1tpXS5idl92YWwgICwg MCwwKTsKKwkJCQl9CisJCQkJZWxzZXsKKwkJCQkgICAgICAgIHJlZ2Vycm9yKHJldGksIHJhaS0+ cmFfcmVnZXgsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZikpOworCQkJCQlEZWJ1ZyggTERBUF9ERUJV R19UUkFDRSwgInJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IFJlZ2V4IG1hdGNoIGZhaWxlZDog JXNcbiIsICBtc2didWYgLCAwLDApOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKyAgICAg ICAgCX0KKwl9CisJcmV0dXJuICggU0xBUF9DQl9DT05USU5VRSApOworfQorCitzdGF0aWMgaW50 CityZXdhdHRfc2VhcmNoX2NsZWFudXBfY2IoIE9wZXJhdGlvbiAqb3AsIFNsYXBSZXBseSAqcnMg KQoreworCWlmICggcnMtPnNyX3R5cGUgPT0gUkVQX1JFU1VMVCB8fCBycy0+c3JfZXJyICE9IExE QVBfU1VDQ0VTUyApIHsKKwkJc2xhcF9mcmVlc2VsZl9jYiggb3AsIHJzICk7CisJfQorCisJcmV0 dXJuIFNMQVBfQ0JfQ09OVElOVUU7Cit9CisKK3N0YXRpYyBpbnQKK3Jld2F0dF9zZWFyY2goIE9w ZXJhdGlvbiAqb3AsIFNsYXBSZXBseSAqcnMgKQoreworICAgICAgICBzbGFwX292ZXJpbnN0ICAg Km9uID0gKHNsYXBfb3Zlcmluc3QgKilvcC0+b19iZC0+YmRfaW5mbzsKKyAgICAgICAgcmV3YXR0 X2luZm9fdCAgICAqY2kgPSAocmV3YXR0X2luZm9fdCAqKW9uLT5vbl9iaS5iaV9wcml2YXRlOwor CXNsYXBfY2FsbGJhY2sJKnNjOworCisJRGVidWcoIExEQVBfREVCVUdfVFJBQ0UsICJyZXdhdHRf c2VhcmNoIFxuIiwgMCwgMCwgMCApOworCXNjID0gb3AtPm9fdG1wY2FsbG9jKCAxLCBzaXplb2Yo ICpzYyApLCBvcC0+b190bXBtZW1jdHggKTsKKwlzYy0+c2NfcmVzcG9uc2UgPSByZXdhdHRfc2Vh cmNoX3Jlc3BvbnNlX2NiOworCXNjLT5zY19jbGVhbnVwID0gcmV3YXR0X3NlYXJjaF9jbGVhbnVw X2NiOworCXNjLT5zY19uZXh0ID0gb3AtPm9fY2FsbGJhY2s7CisgICAgICAgIHNjLT5zY19wcml2 YXRlID0gY2k7CisJb3AtPm9fY2FsbGJhY2sgPSBzYzsKKworCXJldHVybiBTTEFQX0NCX0NPTlRJ TlVFOworCit9CitzdGF0aWMgaW50CityZXdhdHRfZGJfZGVzdHJveSgKKyAgICAgICAgQmFja2Vu ZERCICpiZSwKKyAgICAgICAgQ29uZmlnUmVwbHkgKmNyICkKK3sKKyAgICAgICAgc2xhcF9vdmVy aW5zdCAqb24gPSAoc2xhcF9vdmVyaW5zdCAqKWJlLT5iZF9pbmZvOworCisgICAgICAgIG9uLT5v bl9iaS5iaV9wcml2YXRlID0gTlVMTDsKKworICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IHNsYXBfb3Zlcmluc3QgcmV3YXR0X292bDsKKworc3RhdGljIENvbmZpZ0RyaXZlciAgICAgcmV3 YXR0X2NmZ2VuOworCitzdGF0aWMgQ29uZmlnVGFibGUgcmV3YXR0X2NmZ1tdID0geworCXsgInJh X2F0dHJpYnV0ZSIsIE5VTEwsIDIsIDIsIDAsIEFSR19NQUdJQ3xSRVdBVFRfQVRUUklCVVRFLAor CQlyZXdhdHRfY2ZnZW4sICIoT0xjZmdDdEF0OjIyLjEgTkFNRSAnb2xjUmV3YXR0QXR0cmlidXRl JyAiCisJCQkiREVTQyAnQXR0cmlidXRlIE5hbWUnICIKKwkJCSJFUVVBTElUWSBjYXNlSWdub3Jl TWF0Y2ggIgorCQkJIlNZTlRBWCBPTXNEaXJlY3RvcnlTdHJpbmcgIgorCQkJIlgtT1JERVJFRCAn VkFMVUVTJyApIiwgTlVMTCwgTlVMTCB9LAorCXsgInJhX3JlZ2V4IiwgTlVMTCwgMiwgMiwgMCwg QVJHX01BR0lDfFJFV0FUVF9SRUdFWCwKKwkJcmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi4y IE5BTUUgJ29sY1Jld2F0dFJlZ2V4JyAiCisJCQkiREVTQyAnUmVnZXgnICIKKwkJCSJTWU5UQVgg T01zRGlyZWN0b3J5U3RyaW5nICIKKwkJCSJYLU9SREVSRUQgJ1ZBTFVFUycgKSIsIE5VTEwsIE5V TEwgfSwKKwl7ICJyYV9zdWIiLCBOVUxMLCAxLCAyLCAwLCBBUkdfTUFHSUN8UkVXQVRUX1NVQiwK KwkJcmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi4zIE5BTUUgJ29sY1Jld2F0dFN1YicgIgor CQkJIkRFU0MgJ1N1YnN0aXR1dGlvbicgIgorCQkJIlNZTlRBWCBPTXNEaXJlY3RvcnlTdHJpbmcg IgorCQkJIlgtT1JERVJFRCAnVkFMVUVTJyApIiwgTlVMTCwgTlVMTCB9LAorCXsgInJhX2F0dHJp YnV0ZV90IiwgTlVMTCwgMiwgMiwgMCwgQVJHX01BR0lDfFJFV0FUVF9BVFRSSUJVVEVfVCwKKwkJ cmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi40IE5BTUUgJ29sY1Jld2F0dEF0dHJpYnV0ZVQn ICIKKwkJCSJERVNDICdUcmlnZ2VyaW5nIEF0dHJpYnV0ZSBOYW1lJyAiCisJCQkiU1lOVEFYIE9N c0RpcmVjdG9yeVN0cmluZyAiCisJCQkiWC1PUkRFUkVEICdWQUxVRVMnICkiLCBOVUxMLCBOVUxM IH0sCisJeyAicmFfcmVnZXhfdCIsIE5VTEwsIDIsIDIsIDAsIEFSR19NQUdJQ3xSRVdBVFRfUkVH RVhfVCwKKwkJcmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi41IE5BTUUgJ29sY1Jld2F0dFJl Z2V4VCcgIgorCQkJIkRFU0MgJ1RyaWdnZXJpbmcgUmVnZXgnICIKKwkJCSJTWU5UQVggT01zRGly ZWN0b3J5U3RyaW5nICIKKwkJCSJYLU9SREVSRUQgJ1ZBTFVFUycgKSIsIE5VTEwsIE5VTEwgfSwK Kwl7IE5VTEwsIE5VTEwsIDAsIDAsIDAsIEFSR19JR05PUkVEIH0KK307CisKK3N0YXRpYyBDb25m aWdPQ3MgcmV3YXR0X29jc1tdID0geworCXsgIiggT0xjZmdDdE9jOjIyLjEgIgorCSAgIk5BTUUg J29sY1Jld2F0dENvbmZpZycgIgorCSAgIkRFU0MgJ0F0dHJpYnV0ZSBSZXdhdHQgY29uZmlndXJh dGlvbicgIgorCSAgIlNVUCBvbGNPdmVybGF5Q29uZmlnICIKKwkgICJNVVNUICggb2xjUmV3YXR0 QXR0cmlidXRlICQgb2xjUmV3YXR0UmVnZXgpICIgCisJICAiTUFZICggb2xjUmV3YXR0UmVnZXhU ICQgb2xjUmV3YXR0U3ViICQgb2xjUmV3YXR0QXR0cmlidXRlVCApICIgCisJICAiICkgIiwgCisJ ICBDZnRfT3ZlcmxheSwgcmV3YXR0X2NmZyB9LAorCXsgTlVMTCwgMCwgTlVMTCB9Cit9OworCitz dGF0aWMgaW50CityZXdhdHRfaW5pdGlhbGl6ZSggdm9pZCApIHsKKwlpbnQgcmM7CisJcmV3YXR0 X292bC5vbl9iaS5iaV90eXBlID0gInJld2F0dCI7CisKKwlyZXdhdHRfb3ZsLm9uX2JpLmJpX2Ri X2Rlc3Ryb3kgPSByZXdhdHRfZGJfZGVzdHJveTsKKwlyZXdhdHRfb3ZsLm9uX2JpLmJpX29wX3Nl YXJjaCA9IHJld2F0dF9zZWFyY2g7CisJcmV3YXR0X292bC5vbl9iaS5iaV9jZl9vY3MgPSByZXdh dHRfb2NzOworCQorCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X2luaXRpYWxpemU6 IHJld2F0dF9vdmwub25fYmkuYmlfdHlwZT0gICVzXG4iLCByZXdhdHRfb3ZsLm9uX2JpLmJpX3R5 cGUgLCAwLDAgKTsKKwlyYyA9IGNvbmZpZ19yZWdpc3Rlcl9zY2hlbWEgKCByZXdhdHRfY2ZnLHJl d2F0dF9vY3MgKTsKKwlpZiAoIHJjICkgCisJCXJldHVybiByYzsKKwlyZXR1cm4gb3ZlcmxheV9y ZWdpc3RlciggJnJld2F0dF9vdmwgKTsKK30KKworaW50IGluaXRfbW9kdWxlKGludCBhcmdjLCBj aGFyICphcmd2W10pIHsKKwlyZXR1cm4gcmV3YXR0X2luaXRpYWxpemUoKTsKK30KKwotLSAKMS43 LjUuNAoK --=_c864110a076fc513331e0370bcb9adbe--