From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f48.google.com ([209.85.221.48]) by ewsd; Sat Sep 8 21:40:32 EDT 2018 Received: by mail-wr1-f48.google.com with SMTP id k5-v6so18338189wre.10 for <9front@9front.org>; Sat, 08 Sep 2018 18:40:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=offblast-org.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=9zls7wMHW1tTGNrKk8+38rZCk/HZUsYuaii3G9OcI8k=; b=uigJxcJ5Wy3vOZUwy1NIB9ypfNIpeadHqr6xUIA9d2iyUb4WIYLMIid0OAOuL4Xlzj F0pXk3juyRY2Q+M7SVLrnL3l0Fj5FT0HJ6MT4PincrUd9O2MOKSVOxFz3/RSoytfCs1L TvpAXWr7+GXmHEym30BSVEGQPJNPdWI1w8pbcW2ZVpHp8GvpOtzWrWhW1Z/Vg8UMF3SW LlBl0BVuG9CVXJZTKS1EUqGdrKpHPE4xfaQ8laVv+x3GjN3SLtuL9Y2sNHHYiROejtFP k5+Y0k6FSPnbVCBjO+vSUcJP1kh5RtntyvECx/ADcNrOwYVQlbhzbl56lVuLDbFO/I8O HwJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=9zls7wMHW1tTGNrKk8+38rZCk/HZUsYuaii3G9OcI8k=; b=GGGcNx2eyh1PlOcSg6qvL2IxrP/91uuybOZS6KTFAUxjVC0+nUdD7UWs/xWqPqabn+ fxDOm9mjxvPrgEgC8DKaKKq4TF09v7QrdGkL2PyiXMGzNL94++sjo50cRR1f09C+BR4/ eJWajYhUT88Up3wGSmpKObyqyTu82U5oT1O6WlOQyoSyIauNjVvePM3PRlNyj+IsxqDE k9nkTNmh0cpLD4fpeopzEnht+h7VozfFV+QiKOObpzd6+fPlmJke272yuOBd+pDcOviz jHuc4S0aKlGPoOo3t7YeC+Q8p2zHh9FIDkM5lb09vwkXmEwmyZ6DZWC8o5uXpWfVw7Jd HMZQ== X-Gm-Message-State: APzg51BDfyCL4tPJoQyjnPrqHCSM2z3uL3dIevu4MGDW6g/Yt5Zftijy eULavUP4IUP4006W7K2JVF/cf+a79s6M4dktYJiPAuRT/tg= X-Google-Smtp-Source: ANB0Vdb27wgtpOp/MtBIgu3yViqN26IPMp+DXwWAgEzYjlm0GKil1+b3gn8R/UxAnqSdNFKCJPjJwa6tyCeQThjWE+Q= X-Received: by 2002:adf:b2f3:: with SMTP id g106-v6mr10905018wrd.53.1536457227782; Sat, 08 Sep 2018 18:40:27 -0700 (PDT) MIME-Version: 1.0 From: Nick Owens Date: Sat, 8 Sep 2018 18:40:16 -0700 Message-ID: Subject: libogg update To: 9front@9front.org Content-Type: multipart/mixed; boundary="0000000000004677d80575665385" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: CSS element cloud --0000000000004677d80575665385 Content-Type: text/plain; charset="UTF-8" attached is a patch to bring libogg (https://git.xiph.org/?p=ogg.git;a=summary) to v1.3.3. if anyone can test before it is committed, especially on non-x86, that would be helpful. --0000000000004677d80575665385 Content-Type: text/x-patch; charset="US-ASCII"; name="libogg.patch" Content-Disposition: attachment; filename="libogg.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jlu6y12y0 ZGlmZiAtLWdpdCBhL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9nZy9iaXR3aXNlLmMgYi9zeXMvc3Jj L2NtZC9hdWRpby9saWJvZ2cvYml0d2lzZS5jCi0tLSBhL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9n Zy9iaXR3aXNlLmMKKysrIGIvc3lzL3NyYy9jbWQvYXVkaW8vbGlib2dnL2JpdHdpc2UuYwpAQCAt MSwxNyArMSwxNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIFRISVMgRklMRSBJ UyBQQVJUIE9GIFRIRSBPZ2dWb3JiaXMgU09GVFdBUkUgQ09ERUMgU09VUkNFIENPREUuICAgKgor ICogVEhJUyBGSUxFIElTIFBBUlQgT0YgVEhFIE9nZyBDT05UQUlORVIgU09VUkNFIENPREUuICAg ICAgICAgICAgICAqCiAgKiBVU0UsIERJU1RSSUJVVElPTiBBTkQgUkVQUk9EVUNUSU9OIE9GIFRI SVMgTElCUkFSWSBTT1VSQ0UgSVMgICAgICoKICAqIEdPVkVSTkVEIEJZIEEgQlNELVNUWUxFIFNP VVJDRSBMSUNFTlNFIElOQ0xVREVEIFdJVEggVEhJUyBTT1VSQ0UgKgogICogSU4gJ0NPUFlJTkcn LiBQTEVBU0UgUkVBRCBUSEVTRSBURVJNUyBCRUZPUkUgRElTVFJJQlVUSU5HLiAgICAgICAqCiAg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoKLSAqIFRIRSBPZ2dWb3JiaXMgU09VUkNFIENPREUgSVMgKEMpIENPUFlSSUdI VCAxOTk0LTIwMDIgICAgICAgICAgICAgKgorICogVEhFIE9nZ1ZvcmJpcyBTT1VSQ0UgQ09ERSBJ UyAoQykgQ09QWVJJR0hUIDE5OTQtMjAxNCAgICAgICAgICAgICAqCiAgKiBieSB0aGUgWGlwaC5P cmcgRm91bmRhdGlvbiBodHRwOi8vd3d3LnhpcGgub3JnLyAgICAgICAgICAgICAgICAgICoKICAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAKICAgZnVuY3Rpb246IHBhY2tpbmcgdmFyaWFibGUg c2l6ZWQgd29yZHMgaW50byBhbiBvY3RldCBzdHJlYW0KLSAgbGFzdCBtb2Q6ICRJZDogYml0d2lz ZS5jLHYgMS4xMyAyMDAyLzA3LzExIDA5OjA5OjA4IHhpcGhtb250IEV4cCAkCisgIGxhc3QgbW9k OiAkSWQkCiAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMjAsMTEgKzIwLDEyIEBACiAKICNpbmNsdWRl IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNp bmNsdWRlIDxvZ2cvb2dnLmg+CiAKICNkZWZpbmUgQlVGRkVSX0lOQ1JFTUVOVCAyNTYKIAotc3Rh dGljIHVuc2lnbmVkIGxvbmcgbWFza1tdPQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbWFz a1tdPQogezB4MDAwMDAwMDAsMHgwMDAwMDAwMSwweDAwMDAwMDAzLDB4MDAwMDAwMDcsMHgwMDAw MDAwZiwKICAweDAwMDAwMDFmLDB4MDAwMDAwM2YsMHgwMDAwMDA3ZiwweDAwMDAwMGZmLDB4MDAw MDAxZmYsCiAgMHgwMDAwMDNmZiwweDAwMDAwN2ZmLDB4MDAwMDBmZmYsMHgwMDAwMWZmZiwweDAw MDAzZmZmLApAQCAtMzMsNiArMzQsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYXNrW109CiAg MHgwMWZmZmZmZiwweDAzZmZmZmZmLDB4MDdmZmZmZmYsMHgwZmZmZmZmZiwweDFmZmZmZmZmLAog IDB4M2ZmZmZmZmYsMHg3ZmZmZmZmZiwweGZmZmZmZmZmIH07CiAKK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBpbnQgbWFzazhCW109Cit7MHgwMCwweDgwLDB4YzAsMHhlMCwweGYwLDB4ZjgsMHhmYyww eGZlLDB4ZmZ9OworCiB2b2lkIG9nZ3BhY2tfd3JpdGVpbml0KG9nZ3BhY2tfYnVmZmVyICpiKXsK ICAgbWVtc2V0KGIsMCxzaXplb2YoKmIpKTsKICAgYi0+cHRyPWItPmJ1ZmZlcj1fb2dnX21hbGxv YyhCVUZGRVJfSU5DUkVNRU5UKTsKQEAgLTQwLDEzICs0NCwxMjUgQEAgdm9pZCBvZ2dwYWNrX3dy aXRlaW5pdChvZ2dwYWNrX2J1ZmZlciAqYgogICBiLT5zdG9yYWdlPUJVRkZFUl9JTkNSRU1FTlQ7 CiB9CiAKK3ZvaWQgb2dncGFja0Jfd3JpdGVpbml0KG9nZ3BhY2tfYnVmZmVyICpiKXsKKyAgb2dn cGFja193cml0ZWluaXQoYik7Cit9CisKK2ludCBvZ2dwYWNrX3dyaXRlY2hlY2sob2dncGFja19i dWZmZXIgKmIpeworICBpZighYi0+cHRyIHx8ICFiLT5zdG9yYWdlKXJldHVybiAtMTsKKyAgcmV0 dXJuIDA7Cit9CisKK2ludCBvZ2dwYWNrQl93cml0ZWNoZWNrKG9nZ3BhY2tfYnVmZmVyICpiKXsK KyAgcmV0dXJuIG9nZ3BhY2tfd3JpdGVjaGVjayhiKTsKK30KKwogdm9pZCBvZ2dwYWNrX3dyaXRl dHJ1bmMob2dncGFja19idWZmZXIgKmIsbG9uZyBiaXRzKXsKICAgbG9uZyBieXRlcz1iaXRzPj4z OwotICBiaXRzLT1ieXRlcyo4OwotICBiLT5wdHI9Yi0+YnVmZmVyK2J5dGVzOwotICBiLT5lbmRi aXQ9Yml0czsKLSAgYi0+ZW5kYnl0ZT1ieXRlczsKLSAgKmItPnB0cnw9bWFza1tiaXRzXTsKKyAg aWYoYi0+cHRyKXsKKyAgICBiaXRzLT1ieXRlcyo4OworICAgIGItPnB0cj1iLT5idWZmZXIrYnl0 ZXM7CisgICAgYi0+ZW5kYml0PWJpdHM7CisgICAgYi0+ZW5kYnl0ZT1ieXRlczsKKyAgICAqYi0+ cHRyJj1tYXNrW2JpdHNdOworICB9Cit9CisKK3ZvaWQgb2dncGFja0Jfd3JpdGV0cnVuYyhvZ2dw YWNrX2J1ZmZlciAqYixsb25nIGJpdHMpeworICBsb25nIGJ5dGVzPWJpdHM+PjM7CisgIGlmKGIt PnB0cil7CisgICAgYml0cy09Ynl0ZXMqODsKKyAgICBiLT5wdHI9Yi0+YnVmZmVyK2J5dGVzOwor ICAgIGItPmVuZGJpdD1iaXRzOworICAgIGItPmVuZGJ5dGU9Ynl0ZXM7CisgICAgKmItPnB0ciY9 bWFzazhCW2JpdHNdOworICB9Cit9CisKKy8qIFRha2VzIG9ubHkgdXAgdG8gMzIgYml0cy4gKi8K K3ZvaWQgb2dncGFja193cml0ZShvZ2dwYWNrX2J1ZmZlciAqYix1bnNpZ25lZCBsb25nIHZhbHVl LGludCBiaXRzKXsKKyAgaWYoYml0czwwIHx8IGJpdHM+MzIpIGdvdG8gZXJyOworICBpZihiLT5l bmRieXRlPj1iLT5zdG9yYWdlLTQpeworICAgIHZvaWQgKnJldDsKKyAgICBpZighYi0+cHRyKXJl dHVybjsKKyAgICBpZihiLT5zdG9yYWdlPkxPTkdfTUFYLUJVRkZFUl9JTkNSRU1FTlQpIGdvdG8g ZXJyOworICAgIHJldD1fb2dnX3JlYWxsb2MoYi0+YnVmZmVyLGItPnN0b3JhZ2UrQlVGRkVSX0lO Q1JFTUVOVCk7CisgICAgaWYoIXJldCkgZ290byBlcnI7CisgICAgYi0+YnVmZmVyPXJldDsKKyAg ICBiLT5zdG9yYWdlKz1CVUZGRVJfSU5DUkVNRU5UOworICAgIGItPnB0cj1iLT5idWZmZXIrYi0+ ZW5kYnl0ZTsKKyAgfQorCisgIHZhbHVlJj1tYXNrW2JpdHNdOworICBiaXRzKz1iLT5lbmRiaXQ7 CisKKyAgYi0+cHRyWzBdfD12YWx1ZTw8Yi0+ZW5kYml0OworCisgIGlmKGJpdHM+PTgpeworICAg IGItPnB0clsxXT0odW5zaWduZWQgY2hhcikodmFsdWU+Pig4LWItPmVuZGJpdCkpOworICAgIGlm KGJpdHM+PTE2KXsKKyAgICAgIGItPnB0clsyXT0odW5zaWduZWQgY2hhcikodmFsdWU+PigxNi1i LT5lbmRiaXQpKTsKKyAgICAgIGlmKGJpdHM+PTI0KXsKKyAgICAgICAgYi0+cHRyWzNdPSh1bnNp Z25lZCBjaGFyKSh2YWx1ZT4+KDI0LWItPmVuZGJpdCkpOworICAgICAgICBpZihiaXRzPj0zMil7 CisgICAgICAgICAgaWYoYi0+ZW5kYml0KQorICAgICAgICAgICAgYi0+cHRyWzRdPSh1bnNpZ25l ZCBjaGFyKSh2YWx1ZT4+KDMyLWItPmVuZGJpdCkpOworICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIGItPnB0cls0XT0wOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgYi0+ ZW5kYnl0ZSs9Yml0cy84OworICBiLT5wdHIrPWJpdHMvODsKKyAgYi0+ZW5kYml0PWJpdHMmNzsK KyAgcmV0dXJuOworIGVycjoKKyAgb2dncGFja193cml0ZWNsZWFyKGIpOworfQorCisvKiBUYWtl cyBvbmx5IHVwIHRvIDMyIGJpdHMuICovCit2b2lkIG9nZ3BhY2tCX3dyaXRlKG9nZ3BhY2tfYnVm ZmVyICpiLHVuc2lnbmVkIGxvbmcgdmFsdWUsaW50IGJpdHMpeworICBpZihiaXRzPDAgfHwgYml0 cz4zMikgZ290byBlcnI7CisgIGlmKGItPmVuZGJ5dGU+PWItPnN0b3JhZ2UtNCl7CisgICAgdm9p ZCAqcmV0OworICAgIGlmKCFiLT5wdHIpcmV0dXJuOworICAgIGlmKGItPnN0b3JhZ2U+TE9OR19N QVgtQlVGRkVSX0lOQ1JFTUVOVCkgZ290byBlcnI7CisgICAgcmV0PV9vZ2dfcmVhbGxvYyhiLT5i dWZmZXIsYi0+c3RvcmFnZStCVUZGRVJfSU5DUkVNRU5UKTsKKyAgICBpZighcmV0KSBnb3RvIGVy cjsKKyAgICBiLT5idWZmZXI9cmV0OworICAgIGItPnN0b3JhZ2UrPUJVRkZFUl9JTkNSRU1FTlQ7 CisgICAgYi0+cHRyPWItPmJ1ZmZlcitiLT5lbmRieXRlOworICB9CisKKyAgdmFsdWU9KHZhbHVl Jm1hc2tbYml0c10pPDwoMzItYml0cyk7CisgIGJpdHMrPWItPmVuZGJpdDsKKworICBiLT5wdHJb MF18PXZhbHVlPj4oMjQrYi0+ZW5kYml0KTsKKworICBpZihiaXRzPj04KXsKKyAgICBiLT5wdHJb MV09KHVuc2lnbmVkIGNoYXIpKHZhbHVlPj4oMTYrYi0+ZW5kYml0KSk7CisgICAgaWYoYml0cz49 MTYpeworICAgICAgYi0+cHRyWzJdPSh1bnNpZ25lZCBjaGFyKSh2YWx1ZT4+KDgrYi0+ZW5kYml0 KSk7CisgICAgICBpZihiaXRzPj0yNCl7CisgICAgICAgIGItPnB0clszXT0odW5zaWduZWQgY2hh cikodmFsdWU+PihiLT5lbmRiaXQpKTsKKyAgICAgICAgaWYoYml0cz49MzIpeworICAgICAgICAg IGlmKGItPmVuZGJpdCkKKyAgICAgICAgICAgIGItPnB0cls0XT0odW5zaWduZWQgY2hhcikodmFs dWU8PCg4LWItPmVuZGJpdCkpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGItPnB0cls0 XT0wOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgYi0+ZW5kYnl0ZSs9Yml0 cy84OworICBiLT5wdHIrPWJpdHMvODsKKyAgYi0+ZW5kYml0PWJpdHMmNzsKKyAgcmV0dXJuOwor IGVycjoKKyAgb2dncGFja193cml0ZWNsZWFyKGIpOwogfQogCiB2b2lkIG9nZ3BhY2tfd3JpdGVh bGlnbihvZ2dwYWNrX2J1ZmZlciAqYil7CkBAIC01NSwxMjMgKzE3MSwxOTIgQEAgdm9pZCBvZ2dw YWNrX3dyaXRlYWxpZ24ob2dncGFja19idWZmZXIgKgogICAgIG9nZ3BhY2tfd3JpdGUoYiwwLGJp dHMpOwogfQogCi12b2lkIG9nZ3BhY2tfd3JpdGVjb3B5KG9nZ3BhY2tfYnVmZmVyICpiLHZvaWQg KnNvdXJjZSxsb25nIGJpdHMpewordm9pZCBvZ2dwYWNrQl93cml0ZWFsaWduKG9nZ3BhY2tfYnVm ZmVyICpiKXsKKyAgaW50IGJpdHM9OC1iLT5lbmRiaXQ7CisgIGlmKGJpdHM8OCkKKyAgICBvZ2dw YWNrQl93cml0ZShiLDAsYml0cyk7Cit9CisKK3N0YXRpYyB2b2lkIG9nZ3BhY2tfd3JpdGVjb3B5 X2hlbHBlcihvZ2dwYWNrX2J1ZmZlciAqYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9uZyBiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KCp3KShvZ2dwYWNrX2J1ZmZlciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBtc2IpewogICB1bnNpZ25lZCBjaGFyICpwdHI9KHVuc2lnbmVkIGNoYXIgKilz b3VyY2U7CiAKICAgbG9uZyBieXRlcz1iaXRzLzg7CisgIGxvbmcgcGJ5dGVzPShiLT5lbmRiaXQr Yml0cykvODsKICAgYml0cy09Ynl0ZXMqODsKIAorICAvKiBleHBhbmQgc3RvcmFnZSB1cC1mcm9u dCAqLworICBpZihiLT5lbmRieXRlK3BieXRlcz49Yi0+c3RvcmFnZSl7CisgICAgdm9pZCAqcmV0 OworICAgIGlmKCFiLT5wdHIpIGdvdG8gZXJyOworICAgIGlmKGItPnN0b3JhZ2U+Yi0+ZW5kYnl0 ZStwYnl0ZXMrQlVGRkVSX0lOQ1JFTUVOVCkgZ290byBlcnI7CisgICAgYi0+c3RvcmFnZT1iLT5l bmRieXRlK3BieXRlcytCVUZGRVJfSU5DUkVNRU5UOworICAgIHJldD1fb2dnX3JlYWxsb2MoYi0+ YnVmZmVyLGItPnN0b3JhZ2UpOworICAgIGlmKCFyZXQpIGdvdG8gZXJyOworICAgIGItPmJ1ZmZl cj1yZXQ7CisgICAgYi0+cHRyPWItPmJ1ZmZlcitiLT5lbmRieXRlOworICB9CisKKyAgLyogY29w eSB3aG9sZSBvY3RldHMgKi8KICAgaWYoYi0+ZW5kYml0KXsKICAgICBpbnQgaTsKICAgICAvKiB1 bmFsaWduZWQgY29weS4gIERvIGl0IHRoZSBoYXJkIHdheS4gKi8KICAgICBmb3IoaT0wO2k8Ynl0 ZXM7aSsrKQotICAgICAgb2dncGFja193cml0ZShiLChsb25nKShwdHJbaV0pLDgpOyAgICAKKyAg ICAgIHcoYiwodW5zaWduZWQgbG9uZykocHRyW2ldKSw4KTsKICAgfWVsc2V7CiAgICAgLyogYWxp Z25lZCBibG9jayBjb3B5ICovCi0gICAgaWYoYi0+ZW5kYnl0ZStieXRlcysxPj1iLT5zdG9yYWdl KXsKLSAgICAgIGItPnN0b3JhZ2U9Yi0+ZW5kYnl0ZStieXRlcytCVUZGRVJfSU5DUkVNRU5UOwot ICAgICAgYi0+YnVmZmVyPV9vZ2dfcmVhbGxvYyhiLT5idWZmZXIsYi0+c3RvcmFnZSk7Ci0gICAg ICBiLT5wdHI9Yi0+YnVmZmVyK2ItPmVuZGJ5dGU7Ci0gICAgfQotCiAgICAgbWVtbW92ZShiLT5w dHIsc291cmNlLGJ5dGVzKTsKICAgICBiLT5wdHIrPWJ5dGVzOwotICAgIGItPmJ1ZmZlcis9Ynl0 ZXM7CisgICAgYi0+ZW5kYnl0ZSs9Ynl0ZXM7CiAgICAgKmItPnB0cj0wOworICB9CiAKKyAgLyog Y29weSB0cmFpbGluZyBiaXRzICovCisgIGlmKGJpdHMpeworICAgIGlmKG1zYikKKyAgICAgIHco YiwodW5zaWduZWQgbG9uZykocHRyW2J5dGVzXT4+KDgtYml0cykpLGJpdHMpOworICAgIGVsc2UK KyAgICAgIHcoYiwodW5zaWduZWQgbG9uZykocHRyW2J5dGVzXSksYml0cyk7CiAgIH0KLSAgaWYo Yml0cykKLSAgICBvZ2dwYWNrX3dyaXRlKGIsKGxvbmcpKHB0cltieXRlc10pLGJpdHMpOyAgICAK KyAgcmV0dXJuOworIGVycjoKKyAgb2dncGFja193cml0ZWNsZWFyKGIpOworfQorCit2b2lkIG9n Z3BhY2tfd3JpdGVjb3B5KG9nZ3BhY2tfYnVmZmVyICpiLHZvaWQgKnNvdXJjZSxsb25nIGJpdHMp eworICBvZ2dwYWNrX3dyaXRlY29weV9oZWxwZXIoYixzb3VyY2UsYml0cyxvZ2dwYWNrX3dyaXRl LDApOworfQorCit2b2lkIG9nZ3BhY2tCX3dyaXRlY29weShvZ2dwYWNrX2J1ZmZlciAqYix2b2lk ICpzb3VyY2UsbG9uZyBiaXRzKXsKKyAgb2dncGFja193cml0ZWNvcHlfaGVscGVyKGIsc291cmNl LGJpdHMsb2dncGFja0Jfd3JpdGUsMSk7CiB9CiAKIHZvaWQgb2dncGFja19yZXNldChvZ2dwYWNr X2J1ZmZlciAqYil7CisgIGlmKCFiLT5wdHIpcmV0dXJuOwogICBiLT5wdHI9Yi0+YnVmZmVyOwog ICBiLT5idWZmZXJbMF09MDsKICAgYi0+ZW5kYml0PWItPmVuZGJ5dGU9MDsKIH0KIAordm9pZCBv Z2dwYWNrQl9yZXNldChvZ2dwYWNrX2J1ZmZlciAqYil7CisgIG9nZ3BhY2tfcmVzZXQoYik7Cit9 CisKIHZvaWQgb2dncGFja193cml0ZWNsZWFyKG9nZ3BhY2tfYnVmZmVyICpiKXsKLSAgX29nZ19m cmVlKGItPmJ1ZmZlcik7CisgIGlmKGItPmJ1ZmZlcilfb2dnX2ZyZWUoYi0+YnVmZmVyKTsKICAg bWVtc2V0KGIsMCxzaXplb2YoKmIpKTsKIH0KIAordm9pZCBvZ2dwYWNrQl93cml0ZWNsZWFyKG9n Z3BhY2tfYnVmZmVyICpiKXsKKyAgb2dncGFja193cml0ZWNsZWFyKGIpOworfQorCiB2b2lkIG9n Z3BhY2tfcmVhZGluaXQob2dncGFja19idWZmZXIgKmIsdW5zaWduZWQgY2hhciAqYnVmLGludCBi eXRlcyl7CiAgIG1lbXNldChiLDAsc2l6ZW9mKCpiKSk7CiAgIGItPmJ1ZmZlcj1iLT5wdHI9YnVm OwogICBiLT5zdG9yYWdlPWJ5dGVzOwogfQogCi0vKiBUYWtlcyBvbmx5IHVwIHRvIDMyIGJpdHMu ICovCi12b2lkIG9nZ3BhY2tfd3JpdGUob2dncGFja19idWZmZXIgKmIsdW5zaWduZWQgbG9uZyB2 YWx1ZSxpbnQgYml0cyl7Ci0gIGlmKGItPmVuZGJ5dGUrND49Yi0+c3RvcmFnZSl7Ci0gICAgYi0+ YnVmZmVyPV9vZ2dfcmVhbGxvYyhiLT5idWZmZXIsYi0+c3RvcmFnZStCVUZGRVJfSU5DUkVNRU5U KTsKLSAgICBiLT5zdG9yYWdlKz1CVUZGRVJfSU5DUkVNRU5UOwotICAgIGItPnB0cj1iLT5idWZm ZXIrYi0+ZW5kYnl0ZTsKLSAgfQotCi0gIHZhbHVlJj1tYXNrW2JpdHNdOyAKLSAgYml0cys9Yi0+ ZW5kYml0OwotCi0gIGItPnB0clswXXw9dmFsdWU8PGItPmVuZGJpdDsgIAotICAKLSAgaWYoYml0 cz49OCl7Ci0gICAgYi0+cHRyWzFdPXZhbHVlPj4oOC1iLT5lbmRiaXQpOyAgCi0gICAgaWYoYml0 cz49MTYpewotICAgICAgYi0+cHRyWzJdPXZhbHVlPj4oMTYtYi0+ZW5kYml0KTsgIAotICAgICAg aWYoYml0cz49MjQpewotCWItPnB0clszXT12YWx1ZT4+KDI0LWItPmVuZGJpdCk7ICAKLQlpZihi aXRzPj0zMil7Ci0JICBpZihiLT5lbmRiaXQpCi0JICAgIGItPnB0cls0XT12YWx1ZT4+KDMyLWIt PmVuZGJpdCk7Ci0JICBlbHNlCi0JICAgIGItPnB0cls0XT0wOwotCX0KLSAgICAgIH0KLSAgICB9 Ci0gIH0KLQotICBiLT5lbmRieXRlKz1iaXRzLzg7Ci0gIGItPnB0cis9Yml0cy84OwotICBiLT5l bmRiaXQ9Yml0cyY3Owordm9pZCBvZ2dwYWNrQl9yZWFkaW5pdChvZ2dwYWNrX2J1ZmZlciAqYix1 bnNpZ25lZCBjaGFyICpidWYsaW50IGJ5dGVzKXsKKyAgb2dncGFja19yZWFkaW5pdChiLGJ1Zixi eXRlcyk7CiB9CiAKIC8qIFJlYWQgaW4gYml0cyB3aXRob3V0IGFkdmFuY2luZyB0aGUgYml0cHRy OyBiaXRzIDw9IDMyICovCiBsb25nIG9nZ3BhY2tfbG9vayhvZ2dwYWNrX2J1ZmZlciAqYixpbnQg Yml0cyl7CiAgIHVuc2lnbmVkIGxvbmcgcmV0OwotICB1bnNpZ25lZCBsb25nIG09bWFza1tiaXRz XTsKKyAgdW5zaWduZWQgbG9uZyBtOwogCisgIGlmKGJpdHM8MCB8fCBiaXRzPjMyKSByZXR1cm4g LTE7CisgIG09bWFza1tiaXRzXTsKICAgYml0cys9Yi0+ZW5kYml0OwogCi0gIGlmKGItPmVuZGJ5 dGUrND49Yi0+c3RvcmFnZSl7CisgIGlmKGItPmVuZGJ5dGUgPj0gYi0+c3RvcmFnZS00KXsKICAg ICAvKiBub3QgdGhlIG1haW4gcGF0aCAqLwotICAgIGlmKGItPmVuZGJ5dGUqOCtiaXRzPmItPnN0 b3JhZ2UqOClyZXR1cm4oLTEpOworICAgIGlmKGItPmVuZGJ5dGUgPiBiLT5zdG9yYWdlLSgoYml0 cys3KT4+MykpIHJldHVybiAtMTsKKyAgICAvKiBzcGVjaWFsIGNhc2UgdG8gYXZvaWQgcmVhZGlu ZyBiLT5wdHJbMF0sIHdoaWNoIG1pZ2h0IGJlIHBhc3QgdGhlIGVuZCBvZgorICAgICAgICB0aGUg YnVmZmVyOyBhbHNvIHNraXBzIHNvbWUgdXNlbGVzcyBhY2NvdW50aW5nICovCisgICAgZWxzZSBp ZighYml0cylyZXR1cm4oMEwpOwogICB9Ci0gIAorCiAgIHJldD1iLT5wdHJbMF0+PmItPmVuZGJp dDsKICAgaWYoYml0cz44KXsKLSAgICByZXR8PWItPnB0clsxXTw8KDgtYi0+ZW5kYml0KTsgIAor ICAgIHJldHw9Yi0+cHRyWzFdPDwoOC1iLT5lbmRiaXQpOwogICAgIGlmKGJpdHM+MTYpewotICAg ICAgcmV0fD1iLT5wdHJbMl08PCgxNi1iLT5lbmRiaXQpOyAgCisgICAgICByZXR8PWItPnB0clsy XTw8KDE2LWItPmVuZGJpdCk7CiAgICAgICBpZihiaXRzPjI0KXsKLQlyZXR8PWItPnB0clszXTw8 KDI0LWItPmVuZGJpdCk7ICAKLQlpZihiaXRzPjMyICYmIGItPmVuZGJpdCkKLQkgIHJldHw9Yi0+ cHRyWzRdPDwoMzItYi0+ZW5kYml0KTsKKyAgICAgICAgcmV0fD1iLT5wdHJbM108PCgyNC1iLT5l bmRiaXQpOworICAgICAgICBpZihiaXRzPjMyICYmIGItPmVuZGJpdCkKKyAgICAgICAgICByZXR8 PWItPnB0cls0XTw8KDMyLWItPmVuZGJpdCk7CiAgICAgICB9CiAgICAgfQogICB9CiAgIHJldHVy bihtJnJldCk7CiB9CiAKKy8qIFJlYWQgaW4gYml0cyB3aXRob3V0IGFkdmFuY2luZyB0aGUgYml0 cHRyOyBiaXRzIDw9IDMyICovCitsb25nIG9nZ3BhY2tCX2xvb2sob2dncGFja19idWZmZXIgKmIs aW50IGJpdHMpeworICB1bnNpZ25lZCBsb25nIHJldDsKKyAgaW50IG09MzItYml0czsKKworICBp ZihtPDAgfHwgbT4zMikgcmV0dXJuIC0xOworICBiaXRzKz1iLT5lbmRiaXQ7CisKKyAgaWYoYi0+ ZW5kYnl0ZSA+PSBiLT5zdG9yYWdlLTQpeworICAgIC8qIG5vdCB0aGUgbWFpbiBwYXRoICovCisg ICAgaWYoYi0+ZW5kYnl0ZSA+IGItPnN0b3JhZ2UtKChiaXRzKzcpPj4zKSkgcmV0dXJuIC0xOwor ICAgIC8qIHNwZWNpYWwgY2FzZSB0byBhdm9pZCByZWFkaW5nIGItPnB0clswXSwgd2hpY2ggbWln aHQgYmUgcGFzdCB0aGUgZW5kIG9mCisgICAgICAgIHRoZSBidWZmZXI7IGFsc28gc2tpcHMgc29t ZSB1c2VsZXNzIGFjY291bnRpbmcgKi8KKyAgICBlbHNlIGlmKCFiaXRzKXJldHVybigwTCk7Cisg IH0KKworICByZXQ9Yi0+cHRyWzBdPDwoMjQrYi0+ZW5kYml0KTsKKyAgaWYoYml0cz44KXsKKyAg ICByZXR8PWItPnB0clsxXTw8KDE2K2ItPmVuZGJpdCk7CisgICAgaWYoYml0cz4xNil7CisgICAg ICByZXR8PWItPnB0clsyXTw8KDgrYi0+ZW5kYml0KTsKKyAgICAgIGlmKGJpdHM+MjQpeworICAg ICAgICByZXR8PWItPnB0clszXTw8KGItPmVuZGJpdCk7CisgICAgICAgIGlmKGJpdHM+MzIgJiYg Yi0+ZW5kYml0KQorICAgICAgICAgIHJldHw9Yi0+cHRyWzRdPj4oOC1iLT5lbmRiaXQpOworICAg ICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gKChyZXQmMHhmZmZmZmZmZik+PihtPj4xKSk+Pigo bSsxKT4+MSk7Cit9CisKIGxvbmcgb2dncGFja19sb29rMShvZ2dwYWNrX2J1ZmZlciAqYil7CiAg IGlmKGItPmVuZGJ5dGU+PWItPnN0b3JhZ2UpcmV0dXJuKC0xKTsKICAgcmV0dXJuKChiLT5wdHJb MF0+PmItPmVuZGJpdCkmMSk7CiB9CiAKK2xvbmcgb2dncGFja0JfbG9vazEob2dncGFja19idWZm ZXIgKmIpeworICBpZihiLT5lbmRieXRlPj1iLT5zdG9yYWdlKXJldHVybigtMSk7CisgIHJldHVy bigoYi0+cHRyWzBdPj4oNy1iLT5lbmRiaXQpKSYxKTsKK30KKwogdm9pZCBvZ2dwYWNrX2Fkdihv Z2dwYWNrX2J1ZmZlciAqYixpbnQgYml0cyl7CiAgIGJpdHMrPWItPmVuZGJpdDsKKworICBpZihi LT5lbmRieXRlID4gYi0+c3RvcmFnZS0oKGJpdHMrNyk+PjMpKSBnb3RvIG92ZXJmbG93OworCiAg IGItPnB0cis9Yml0cy84OwogICBiLT5lbmRieXRlKz1iaXRzLzg7CiAgIGItPmVuZGJpdD1iaXRz Jjc7CisgIHJldHVybjsKKworIG92ZXJmbG93OgorICBiLT5wdHI9TlVMTDsKKyAgYi0+ZW5kYnl0 ZT1iLT5zdG9yYWdlOworICBiLT5lbmRiaXQ9MTsKK30KKwordm9pZCBvZ2dwYWNrQl9hZHYob2dn cGFja19idWZmZXIgKmIsaW50IGJpdHMpeworICBvZ2dwYWNrX2FkdihiLGJpdHMpOwogfQogCiB2 b2lkIG9nZ3BhY2tfYWR2MShvZ2dwYWNrX2J1ZmZlciAqYil7CkBAIC0xODIsNTQgKzM2NywxMDIg QEAgdm9pZCBvZ2dwYWNrX2FkdjEob2dncGFja19idWZmZXIgKmIpewogICB9CiB9CiAKK3ZvaWQg b2dncGFja0JfYWR2MShvZ2dwYWNrX2J1ZmZlciAqYil7CisgIG9nZ3BhY2tfYWR2MShiKTsKK30K KwogLyogYml0cyA8PSAzMiAqLwogbG9uZyBvZ2dwYWNrX3JlYWQob2dncGFja19idWZmZXIgKmIs aW50IGJpdHMpewotICB1bnNpZ25lZCBsb25nIHJldDsKLSAgdW5zaWduZWQgbG9uZyBtPW1hc2tb Yml0c107CisgIGxvbmcgcmV0OworICB1bnNpZ25lZCBsb25nIG07CiAKKyAgaWYoYml0czwwIHx8 IGJpdHM+MzIpIGdvdG8gZXJyOworICBtPW1hc2tbYml0c107CisgIGJpdHMrPWItPmVuZGJpdDsK KworICBpZihiLT5lbmRieXRlID49IGItPnN0b3JhZ2UtNCl7CisgICAgLyogbm90IHRoZSBtYWlu IHBhdGggKi8KKyAgICBpZihiLT5lbmRieXRlID4gYi0+c3RvcmFnZS0oKGJpdHMrNyk+PjMpKSBn b3RvIG92ZXJmbG93OworICAgIC8qIHNwZWNpYWwgY2FzZSB0byBhdm9pZCByZWFkaW5nIGItPnB0 clswXSwgd2hpY2ggbWlnaHQgYmUgcGFzdCB0aGUgZW5kIG9mCisgICAgICAgIHRoZSBidWZmZXI7 IGFsc28gc2tpcHMgc29tZSB1c2VsZXNzIGFjY291bnRpbmcgKi8KKyAgICBlbHNlIGlmKCFiaXRz KXJldHVybigwTCk7CisgIH0KKworICByZXQ9Yi0+cHRyWzBdPj5iLT5lbmRiaXQ7CisgIGlmKGJp dHM+OCl7CisgICAgcmV0fD1iLT5wdHJbMV08PCg4LWItPmVuZGJpdCk7CisgICAgaWYoYml0cz4x Nil7CisgICAgICByZXR8PWItPnB0clsyXTw8KDE2LWItPmVuZGJpdCk7CisgICAgICBpZihiaXRz PjI0KXsKKyAgICAgICAgcmV0fD1iLT5wdHJbM108PCgyNC1iLT5lbmRiaXQpOworICAgICAgICBp ZihiaXRzPjMyICYmIGItPmVuZGJpdCl7CisgICAgICAgICAgcmV0fD1iLT5wdHJbNF08PCgzMi1i LT5lbmRiaXQpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIHJldCY9bTsKKyAg Yi0+cHRyKz1iaXRzLzg7CisgIGItPmVuZGJ5dGUrPWJpdHMvODsKKyAgYi0+ZW5kYml0PWJpdHMm NzsKKyAgcmV0dXJuIHJldDsKKworIG92ZXJmbG93OgorIGVycjoKKyAgYi0+cHRyPU5VTEw7Cisg IGItPmVuZGJ5dGU9Yi0+c3RvcmFnZTsKKyAgYi0+ZW5kYml0PTE7CisgIHJldHVybiAtMUw7Cit9 CisKKy8qIGJpdHMgPD0gMzIgKi8KK2xvbmcgb2dncGFja0JfcmVhZChvZ2dwYWNrX2J1ZmZlciAq YixpbnQgYml0cyl7CisgIGxvbmcgcmV0OworICBsb25nIG09MzItYml0czsKKworICBpZihtPDAg fHwgbT4zMikgZ290byBlcnI7CiAgIGJpdHMrPWItPmVuZGJpdDsKIAogICBpZihiLT5lbmRieXRl KzQ+PWItPnN0b3JhZ2UpewogICAgIC8qIG5vdCB0aGUgbWFpbiBwYXRoICovCi0gICAgcmV0PS0x VUw7Ci0gICAgaWYoYi0+ZW5kYnl0ZSo4K2JpdHM+Yi0+c3RvcmFnZSo4KWdvdG8gb3ZlcmZsb3c7 CisgICAgaWYoYi0+ZW5kYnl0ZSA+IGItPnN0b3JhZ2UtKChiaXRzKzcpPj4zKSkgZ290byBvdmVy ZmxvdzsKKyAgICAvKiBzcGVjaWFsIGNhc2UgdG8gYXZvaWQgcmVhZGluZyBiLT5wdHJbMF0sIHdo aWNoIG1pZ2h0IGJlIHBhc3QgdGhlIGVuZCBvZgorICAgICAgICB0aGUgYnVmZmVyOyBhbHNvIHNr aXBzIHNvbWUgdXNlbGVzcyBhY2NvdW50aW5nICovCisgICAgZWxzZSBpZighYml0cylyZXR1cm4o MEwpOwogICB9Ci0gIAotICByZXQ9Yi0+cHRyWzBdPj5iLT5lbmRiaXQ7CisKKyAgcmV0PWItPnB0 clswXTw8KDI0K2ItPmVuZGJpdCk7CiAgIGlmKGJpdHM+OCl7Ci0gICAgcmV0fD1iLT5wdHJbMV08 PCg4LWItPmVuZGJpdCk7ICAKKyAgICByZXR8PWItPnB0clsxXTw8KDE2K2ItPmVuZGJpdCk7CiAg ICAgaWYoYml0cz4xNil7Ci0gICAgICByZXR8PWItPnB0clsyXTw8KDE2LWItPmVuZGJpdCk7ICAK KyAgICAgIHJldHw9Yi0+cHRyWzJdPDwoOCtiLT5lbmRiaXQpOwogICAgICAgaWYoYml0cz4yNCl7 Ci0JcmV0fD1iLT5wdHJbM108PCgyNC1iLT5lbmRiaXQpOyAgCi0JaWYoYml0cz4zMiAmJiBiLT5l bmRiaXQpewotCSAgcmV0fD1iLT5wdHJbNF08PCgzMi1iLT5lbmRiaXQpOwotCX0KKyAgICAgICAg cmV0fD1iLT5wdHJbM108PChiLT5lbmRiaXQpOworICAgICAgICBpZihiaXRzPjMyICYmIGItPmVu ZGJpdCkKKyAgICAgICAgICByZXR8PWItPnB0cls0XT4+KDgtYi0+ZW5kYml0KTsKICAgICAgIH0K ICAgICB9CiAgIH0KLSAgcmV0Jj1tOwotICAKLSBvdmVyZmxvdzoKKyAgcmV0PSgocmV0JjB4ZmZm ZmZmZmZVTCk+PihtPj4xKSk+PigobSsxKT4+MSk7CiAKICAgYi0+cHRyKz1iaXRzLzg7CiAgIGIt PmVuZGJ5dGUrPWJpdHMvODsKICAgYi0+ZW5kYml0PWJpdHMmNzsKLSAgcmV0dXJuKHJldCk7Cisg IHJldHVybiByZXQ7CisKKyBvdmVyZmxvdzoKKyBlcnI6CisgIGItPnB0cj1OVUxMOworICBiLT5l bmRieXRlPWItPnN0b3JhZ2U7CisgIGItPmVuZGJpdD0xOworICByZXR1cm4gLTFMOwogfQogCiBs b25nIG9nZ3BhY2tfcmVhZDEob2dncGFja19idWZmZXIgKmIpewotICB1bnNpZ25lZCBsb25nIHJl dDsKLSAgCi0gIGlmKGItPmVuZGJ5dGU+PWItPnN0b3JhZ2UpewotICAgIC8qIG5vdCB0aGUgbWFp biBwYXRoICovCi0gICAgcmV0PS0xVUw7Ci0gICAgZ290byBvdmVyZmxvdzsKLSAgfQorICBsb25n IHJldDsKIAorICBpZihiLT5lbmRieXRlID49IGItPnN0b3JhZ2UpIGdvdG8gb3ZlcmZsb3c7CiAg IHJldD0oYi0+cHRyWzBdPj5iLT5lbmRiaXQpJjE7Ci0gIAotIG92ZXJmbG93OgogCiAgIGItPmVu ZGJpdCsrOwogICBpZihiLT5lbmRiaXQ+Nyl7CkBAIC0yMzcsNyArNDcwLDM0IEBAIGxvbmcgb2dn cGFja19yZWFkMShvZ2dwYWNrX2J1ZmZlciAqYil7CiAgICAgYi0+cHRyKys7CiAgICAgYi0+ZW5k Ynl0ZSsrOwogICB9Ci0gIHJldHVybihyZXQpOworICByZXR1cm4gcmV0OworCisgb3ZlcmZsb3c6 CisgIGItPnB0cj1OVUxMOworICBiLT5lbmRieXRlPWItPnN0b3JhZ2U7CisgIGItPmVuZGJpdD0x OworICByZXR1cm4gLTFMOworfQorCitsb25nIG9nZ3BhY2tCX3JlYWQxKG9nZ3BhY2tfYnVmZmVy ICpiKXsKKyAgbG9uZyByZXQ7CisKKyAgaWYoYi0+ZW5kYnl0ZSA+PSBiLT5zdG9yYWdlKSBnb3Rv IG92ZXJmbG93OworICByZXQ9KGItPnB0clswXT4+KDctYi0+ZW5kYml0KSkmMTsKKworICBiLT5l bmRiaXQrKzsKKyAgaWYoYi0+ZW5kYml0PjcpeworICAgIGItPmVuZGJpdD0wOworICAgIGItPnB0 cisrOworICAgIGItPmVuZGJ5dGUrKzsKKyAgfQorICByZXR1cm4gcmV0OworCisgb3ZlcmZsb3c6 CisgIGItPnB0cj1OVUxMOworICBiLT5lbmRieXRlPWItPnN0b3JhZ2U7CisgIGItPmVuZGJpdD0x OworICByZXR1cm4gLTFMOwogfQogCiBsb25nIG9nZ3BhY2tfYnl0ZXMob2dncGFja19idWZmZXIg KmIpewpAQCAtMjQ4LDEwICs1MDgsMjIgQEAgbG9uZyBvZ2dwYWNrX2JpdHMob2dncGFja19idWZm ZXIgKmIpewogICByZXR1cm4oYi0+ZW5kYnl0ZSo4K2ItPmVuZGJpdCk7CiB9CiAKK2xvbmcgb2dn cGFja0JfYnl0ZXMob2dncGFja19idWZmZXIgKmIpeworICByZXR1cm4gb2dncGFja19ieXRlcyhi KTsKK30KKworbG9uZyBvZ2dwYWNrQl9iaXRzKG9nZ3BhY2tfYnVmZmVyICpiKXsKKyAgcmV0dXJu IG9nZ3BhY2tfYml0cyhiKTsKK30KKwogdW5zaWduZWQgY2hhciAqb2dncGFja19nZXRfYnVmZmVy KG9nZ3BhY2tfYnVmZmVyICpiKXsKICAgcmV0dXJuKGItPmJ1ZmZlcik7CiB9CiAKK3Vuc2lnbmVk IGNoYXIgKm9nZ3BhY2tCX2dldF9idWZmZXIob2dncGFja19idWZmZXIgKmIpeworICByZXR1cm4g b2dncGFja19nZXRfYnVmZmVyKGIpOworfQorCiAvKiBTZWxmIHRlc3Qgb2YgdGhlIGJpdHdpc2Ug cm91dGluZXM7IGV2ZXJ5dGhpbmcgZWxzZSBpcyBiYXNlZCBvbgogICAgdGhlbSwgc28gdGhleSBk YW1uZWQgd2VsbCBiZXR0ZXIgYmUgc29saWQuICovCiAKQEAgLTI2Niw3ICs1MzgsNyBAQCBzdGF0 aWMgaW50IGlsb2codW5zaWduZWQgaW50IHYpewogICB9CiAgIHJldHVybihyZXQpOwogfQotICAg ICAgCisKIG9nZ3BhY2tfYnVmZmVyIG87CiBvZ2dwYWNrX2J1ZmZlciByOwogCkBAIC0yOTgsMTAg KzU3MCwxMCBAQCB2b2lkIGNsaXB0ZXN0KHVuc2lnbmVkIGxvbmcgKmIsaW50IHZhbHMsCiAgICAg ICByZXBvcnQoImxvb2tlZCBhdCBpbmNvcnJlY3QgdmFsdWUhXG4iKTsKICAgICBpZih0Yml0PT0x KQogICAgICAgaWYob2dncGFja19sb29rMSgmcikhPShiW2ldJm1hc2tbdGJpdF0pKQotCXJlcG9y dCgibG9va2VkIGF0IHNpbmdsZSBiaXQgaW5jb3JyZWN0IHZhbHVlIVxuIik7CisgICAgICAgIHJl cG9ydCgibG9va2VkIGF0IHNpbmdsZSBiaXQgaW5jb3JyZWN0IHZhbHVlIVxuIik7CiAgICAgaWYo dGJpdD09MSl7CiAgICAgICBpZihvZ2dwYWNrX3JlYWQxKCZyKSE9KGJbaV0mbWFza1t0Yml0XSkp Ci0JcmVwb3J0KCJyZWFkIGluY29ycmVjdCBzaW5nbGUgYml0IHZhbHVlIVxuIik7CisgICAgICAg IHJlcG9ydCgicmVhZCBpbmNvcnJlY3Qgc2luZ2xlIGJpdCB2YWx1ZSFcbiIpOwogICAgIH1lbHNl ewogICAgIGlmKG9nZ3BhY2tfcmVhZCgmcix0Yml0KSE9KGJbaV0mbWFza1t0Yml0XSkpCiAgICAg ICByZXBvcnQoInJlYWQgaW5jb3JyZWN0IHZhbHVlIVxuIik7CkBAIC0zMTAsOSArNTgyLDIyNSBA QCB2b2lkIGNsaXB0ZXN0KHVuc2lnbmVkIGxvbmcgKmIsaW50IHZhbHMsCiAgIGlmKG9nZ3BhY2tf Ynl0ZXMoJnIpIT1ieXRlcylyZXBvcnQoImxlZnRvdmVyIGJ5dGVzIGFmdGVyIHJlYWQhXG4iKTsK IH0KIAordm9pZCBjbGlwdGVzdEIodW5zaWduZWQgbG9uZyAqYixpbnQgdmFscyxpbnQgYml0cyxp bnQgKmNvbXAsaW50IGNvbXBzaXplKXsKKyAgbG9uZyBieXRlcyxpOworICB1bnNpZ25lZCBjaGFy ICpidWZmZXI7CisKKyAgb2dncGFja0JfcmVzZXQoJm8pOworICBmb3IoaT0wO2k8dmFscztpKysp CisgICAgb2dncGFja0Jfd3JpdGUoJm8sYltpXSxiaXRzP2JpdHM6aWxvZyhiW2ldKSk7CisgIGJ1 ZmZlcj1vZ2dwYWNrQl9nZXRfYnVmZmVyKCZvKTsKKyAgYnl0ZXM9b2dncGFja0JfYnl0ZXMoJm8p OworICBpZihieXRlcyE9Y29tcHNpemUpcmVwb3J0KCJ3cm9uZyBudW1iZXIgb2YgYnl0ZXMhXG4i KTsKKyAgZm9yKGk9MDtpPGJ5dGVzO2krKylpZihidWZmZXJbaV0hPWNvbXBbaV0peworICAgIGZv cihpPTA7aTxieXRlcztpKyspZnByaW50ZihzdGRlcnIsIiV4ICV4XG4iLChpbnQpYnVmZmVyW2ld LChpbnQpY29tcFtpXSk7CisgICAgcmVwb3J0KCJ3cm90ZSBpbmNvcnJlY3QgdmFsdWUhXG4iKTsK KyAgfQorICBvZ2dwYWNrQl9yZWFkaW5pdCgmcixidWZmZXIsYnl0ZXMpOworICBmb3IoaT0wO2k8 dmFscztpKyspeworICAgIGludCB0Yml0PWJpdHM/Yml0czppbG9nKGJbaV0pOworICAgIGlmKG9n Z3BhY2tCX2xvb2soJnIsdGJpdCk9PS0xKQorICAgICAgcmVwb3J0KCJvdXQgb2YgZGF0YSFcbiIp OworICAgIGlmKG9nZ3BhY2tCX2xvb2soJnIsdGJpdCkhPShiW2ldJm1hc2tbdGJpdF0pKQorICAg ICAgcmVwb3J0KCJsb29rZWQgYXQgaW5jb3JyZWN0IHZhbHVlIVxuIik7CisgICAgaWYodGJpdD09 MSkKKyAgICAgIGlmKG9nZ3BhY2tCX2xvb2sxKCZyKSE9KGJbaV0mbWFza1t0Yml0XSkpCisgICAg ICAgIHJlcG9ydCgibG9va2VkIGF0IHNpbmdsZSBiaXQgaW5jb3JyZWN0IHZhbHVlIVxuIik7Cisg ICAgaWYodGJpdD09MSl7CisgICAgICBpZihvZ2dwYWNrQl9yZWFkMSgmcikhPShiW2ldJm1hc2tb dGJpdF0pKQorICAgICAgICByZXBvcnQoInJlYWQgaW5jb3JyZWN0IHNpbmdsZSBiaXQgdmFsdWUh XG4iKTsKKyAgICB9ZWxzZXsKKyAgICBpZihvZ2dwYWNrQl9yZWFkKCZyLHRiaXQpIT0oYltpXSZt YXNrW3RiaXRdKSkKKyAgICAgIHJlcG9ydCgicmVhZCBpbmNvcnJlY3QgdmFsdWUhXG4iKTsKKyAg ICB9CisgIH0KKyAgaWYob2dncGFja0JfYnl0ZXMoJnIpIT1ieXRlcylyZXBvcnQoImxlZnRvdmVy IGJ5dGVzIGFmdGVyIHJlYWQhXG4iKTsKK30KKwordm9pZCBjb3B5dGVzdChpbnQgcHJlZmlsbCwg aW50IGNvcHkpeworICBvZ2dwYWNrX2J1ZmZlciBzb3VyY2Vfd3JpdGU7CisgIG9nZ3BhY2tfYnVm ZmVyIGRlc3Rfd3JpdGU7CisgIG9nZ3BhY2tfYnVmZmVyIHNvdXJjZV9yZWFkOworICBvZ2dwYWNr X2J1ZmZlciBkZXN0X3JlYWQ7CisgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZTsKKyAgdW5zaWduZWQg Y2hhciAqZGVzdDsKKyAgbG9uZyBzb3VyY2VfYnl0ZXMsZGVzdF9ieXRlczsKKyAgaW50IGk7CisK KyAgb2dncGFja193cml0ZWluaXQoJnNvdXJjZV93cml0ZSk7CisgIG9nZ3BhY2tfd3JpdGVpbml0 KCZkZXN0X3dyaXRlKTsKKworICBmb3IoaT0wO2k8KHByZWZpbGwrY29weSs3KS84O2krKykKKyAg ICBvZ2dwYWNrX3dyaXRlKCZzb3VyY2Vfd3JpdGUsKGleMHg1YSkmMHhmZiw4KTsKKyAgc291cmNl PW9nZ3BhY2tfZ2V0X2J1ZmZlcigmc291cmNlX3dyaXRlKTsKKyAgc291cmNlX2J5dGVzPW9nZ3Bh Y2tfYnl0ZXMoJnNvdXJjZV93cml0ZSk7CisKKyAgLyogcHJlZmlsbCAqLworICBvZ2dwYWNrX3dy aXRlY29weSgmZGVzdF93cml0ZSxzb3VyY2UscHJlZmlsbCk7CisKKyAgLyogY2hlY2sgYnVmZmVy czsgdmVyaWZ5IGVuZCBieXRlIG1hc2tpbmcgKi8KKyAgZGVzdD1vZ2dwYWNrX2dldF9idWZmZXIo JmRlc3Rfd3JpdGUpOworICBkZXN0X2J5dGVzPW9nZ3BhY2tfYnl0ZXMoJmRlc3Rfd3JpdGUpOwor ICBpZihkZXN0X2J5dGVzIT0ocHJlZmlsbCs3KS84KXsKKyAgICBmcHJpbnRmKHN0ZGVyciwid3Jv bmcgbnVtYmVyIG9mIGJ5dGVzIGFmdGVyIHByZWZpbGwhICVsZCE9JWRcbiIsZGVzdF9ieXRlcywo cHJlZmlsbCs3KS84KTsKKyAgICBleGl0KDEpOworICB9CisgIG9nZ3BhY2tfcmVhZGluaXQoJnNv dXJjZV9yZWFkLHNvdXJjZSxzb3VyY2VfYnl0ZXMpOworICBvZ2dwYWNrX3JlYWRpbml0KCZkZXN0 X3JlYWQsZGVzdCxkZXN0X2J5dGVzKTsKKworICBmb3IoaT0wO2k8cHJlZmlsbDtpKz04KXsKKyAg ICBpbnQgcz1vZ2dwYWNrX3JlYWQoJnNvdXJjZV9yZWFkLHByZWZpbGwtaTw4P3ByZWZpbGwtaTo4 KTsKKyAgICBpbnQgZD1vZ2dwYWNrX3JlYWQoJmRlc3RfcmVhZCxwcmVmaWxsLWk8OD9wcmVmaWxs LWk6OCk7CisgICAgaWYocyE9ZCl7CisgICAgICBmcHJpbnRmKHN0ZGVyciwicHJlZmlsbD0lZCBt aXNtYXRjaCEgYnl0ZSAlZCwgJXghPSV4XG4iLHByZWZpbGwsaS84LHMsZCk7CisgICAgICBleGl0 KDEpOworICAgIH0KKyAgfQorICBpZihwcmVmaWxsPGRlc3RfYnl0ZXMpeworICAgIGlmKG9nZ3Bh Y2tfcmVhZCgmZGVzdF9yZWFkLGRlc3RfYnl0ZXMtcHJlZmlsbCkhPTApeworICAgICAgZnByaW50 ZihzdGRlcnIsInByZWZpbGw9JWQgbWlzbWF0Y2ghIHRyYWlsaW5nIGJpdHMgbm90IHplcm9cbiIs cHJlZmlsbCk7CisgICAgICBleGl0KDEpOworICAgIH0KKyAgfQorCisgIC8qIHNlY29uZCBjb3B5 ICovCisgIG9nZ3BhY2tfd3JpdGVjb3B5KCZkZXN0X3dyaXRlLHNvdXJjZSxjb3B5KTsKKworICAv KiBjaGVjayBidWZmZXJzOyB2ZXJpZnkgZW5kIGJ5dGUgbWFza2luZyAqLworICBkZXN0PW9nZ3Bh Y2tfZ2V0X2J1ZmZlcigmZGVzdF93cml0ZSk7CisgIGRlc3RfYnl0ZXM9b2dncGFja19ieXRlcygm ZGVzdF93cml0ZSk7CisgIGlmKGRlc3RfYnl0ZXMhPShjb3B5K3ByZWZpbGwrNykvOCl7CisgICAg ZnByaW50ZihzdGRlcnIsIndyb25nIG51bWJlciBvZiBieXRlcyBhZnRlciBwcmVmaWxsK2NvcHkh ICVsZCE9JWRcbiIsZGVzdF9ieXRlcywoY29weStwcmVmaWxsKzcpLzgpOworICAgIGV4aXQoMSk7 CisgIH0KKyAgb2dncGFja19yZWFkaW5pdCgmc291cmNlX3JlYWQsc291cmNlLHNvdXJjZV9ieXRl cyk7CisgIG9nZ3BhY2tfcmVhZGluaXQoJmRlc3RfcmVhZCxkZXN0LGRlc3RfYnl0ZXMpOworCisg IGZvcihpPTA7aTxwcmVmaWxsO2krPTgpeworICAgIGludCBzPW9nZ3BhY2tfcmVhZCgmc291cmNl X3JlYWQscHJlZmlsbC1pPDg/cHJlZmlsbC1pOjgpOworICAgIGludCBkPW9nZ3BhY2tfcmVhZCgm ZGVzdF9yZWFkLHByZWZpbGwtaTw4P3ByZWZpbGwtaTo4KTsKKyAgICBpZihzIT1kKXsKKyAgICAg IGZwcmludGYoc3RkZXJyLCJwcmVmaWxsPSVkIG1pc21hdGNoISBieXRlICVkLCAleCE9JXhcbiIs cHJlZmlsbCxpLzgscyxkKTsKKyAgICAgIGV4aXQoMSk7CisgICAgfQorICB9CisKKyAgb2dncGFj a19yZWFkaW5pdCgmc291cmNlX3JlYWQsc291cmNlLHNvdXJjZV9ieXRlcyk7CisgIGZvcihpPTA7 aTxjb3B5O2krPTgpeworICAgIGludCBzPW9nZ3BhY2tfcmVhZCgmc291cmNlX3JlYWQsY29weS1p PDg/Y29weS1pOjgpOworICAgIGludCBkPW9nZ3BhY2tfcmVhZCgmZGVzdF9yZWFkLGNvcHktaTw4 P2NvcHktaTo4KTsKKyAgICBpZihzIT1kKXsKKyAgICAgIGZwcmludGYoc3RkZXJyLCJwcmVmaWxs PSVkIGNvcHk9JWQgbWlzbWF0Y2ghIGJ5dGUgJWQsICV4IT0leFxuIixwcmVmaWxsLGNvcHksaS84 LHMsZCk7CisgICAgICBleGl0KDEpOworICAgIH0KKyAgfQorCisgIGlmKGNvcHkrcHJlZmlsbDxk ZXN0X2J5dGVzKXsKKyAgICBpZihvZ2dwYWNrX3JlYWQoJmRlc3RfcmVhZCxkZXN0X2J5dGVzLWNv cHktcHJlZmlsbCkhPTApeworICAgICAgZnByaW50ZihzdGRlcnIsInByZWZpbGw9JWQgY29weT0l ZCBtaXNtYXRjaCEgdHJhaWxpbmcgYml0cyBub3QgemVyb1xuIixwcmVmaWxsLGNvcHkpOworICAg ICAgZXhpdCgxKTsKKyAgICB9CisgIH0KKworICBvZ2dwYWNrX3dyaXRlY2xlYXIoJnNvdXJjZV93 cml0ZSk7CisgIG9nZ3BhY2tfd3JpdGVjbGVhcigmZGVzdF93cml0ZSk7CisKKworfQorCit2b2lk IGNvcHl0ZXN0QihpbnQgcHJlZmlsbCwgaW50IGNvcHkpeworICBvZ2dwYWNrX2J1ZmZlciBzb3Vy Y2Vfd3JpdGU7CisgIG9nZ3BhY2tfYnVmZmVyIGRlc3Rfd3JpdGU7CisgIG9nZ3BhY2tfYnVmZmVy IHNvdXJjZV9yZWFkOworICBvZ2dwYWNrX2J1ZmZlciBkZXN0X3JlYWQ7CisgIHVuc2lnbmVkIGNo YXIgKnNvdXJjZTsKKyAgdW5zaWduZWQgY2hhciAqZGVzdDsKKyAgbG9uZyBzb3VyY2VfYnl0ZXMs ZGVzdF9ieXRlczsKKyAgaW50IGk7CisKKyAgb2dncGFja0Jfd3JpdGVpbml0KCZzb3VyY2Vfd3Jp dGUpOworICBvZ2dwYWNrQl93cml0ZWluaXQoJmRlc3Rfd3JpdGUpOworCisgIGZvcihpPTA7aTwo cHJlZmlsbCtjb3B5KzcpLzg7aSsrKQorICAgIG9nZ3BhY2tCX3dyaXRlKCZzb3VyY2Vfd3JpdGUs KGleMHg1YSkmMHhmZiw4KTsKKyAgc291cmNlPW9nZ3BhY2tCX2dldF9idWZmZXIoJnNvdXJjZV93 cml0ZSk7CisgIHNvdXJjZV9ieXRlcz1vZ2dwYWNrQl9ieXRlcygmc291cmNlX3dyaXRlKTsKKwor ICAvKiBwcmVmaWxsICovCisgIG9nZ3BhY2tCX3dyaXRlY29weSgmZGVzdF93cml0ZSxzb3VyY2Us cHJlZmlsbCk7CisKKyAgLyogY2hlY2sgYnVmZmVyczsgdmVyaWZ5IGVuZCBieXRlIG1hc2tpbmcg Ki8KKyAgZGVzdD1vZ2dwYWNrQl9nZXRfYnVmZmVyKCZkZXN0X3dyaXRlKTsKKyAgZGVzdF9ieXRl cz1vZ2dwYWNrQl9ieXRlcygmZGVzdF93cml0ZSk7CisgIGlmKGRlc3RfYnl0ZXMhPShwcmVmaWxs KzcpLzgpeworICAgIGZwcmludGYoc3RkZXJyLCJ3cm9uZyBudW1iZXIgb2YgYnl0ZXMgYWZ0ZXIg cHJlZmlsbCEgJWxkIT0lZFxuIixkZXN0X2J5dGVzLChwcmVmaWxsKzcpLzgpOworICAgIGV4aXQo MSk7CisgIH0KKyAgb2dncGFja0JfcmVhZGluaXQoJnNvdXJjZV9yZWFkLHNvdXJjZSxzb3VyY2Vf Ynl0ZXMpOworICBvZ2dwYWNrQl9yZWFkaW5pdCgmZGVzdF9yZWFkLGRlc3QsZGVzdF9ieXRlcyk7 CisKKyAgZm9yKGk9MDtpPHByZWZpbGw7aSs9OCl7CisgICAgaW50IHM9b2dncGFja0JfcmVhZCgm c291cmNlX3JlYWQscHJlZmlsbC1pPDg/cHJlZmlsbC1pOjgpOworICAgIGludCBkPW9nZ3BhY2tC X3JlYWQoJmRlc3RfcmVhZCxwcmVmaWxsLWk8OD9wcmVmaWxsLWk6OCk7CisgICAgaWYocyE9ZCl7 CisgICAgICBmcHJpbnRmKHN0ZGVyciwicHJlZmlsbD0lZCBtaXNtYXRjaCEgYnl0ZSAlZCwgJXgh PSV4XG4iLHByZWZpbGwsaS84LHMsZCk7CisgICAgICBleGl0KDEpOworICAgIH0KKyAgfQorICBp ZihwcmVmaWxsPGRlc3RfYnl0ZXMpeworICAgIGlmKG9nZ3BhY2tCX3JlYWQoJmRlc3RfcmVhZCxk ZXN0X2J5dGVzLXByZWZpbGwpIT0wKXsKKyAgICAgIGZwcmludGYoc3RkZXJyLCJwcmVmaWxsPSVk IG1pc21hdGNoISB0cmFpbGluZyBiaXRzIG5vdCB6ZXJvXG4iLHByZWZpbGwpOworICAgICAgZXhp dCgxKTsKKyAgICB9CisgIH0KKworICAvKiBzZWNvbmQgY29weSAqLworICBvZ2dwYWNrQl93cml0 ZWNvcHkoJmRlc3Rfd3JpdGUsc291cmNlLGNvcHkpOworCisgIC8qIGNoZWNrIGJ1ZmZlcnM7IHZl cmlmeSBlbmQgYnl0ZSBtYXNraW5nICovCisgIGRlc3Q9b2dncGFja0JfZ2V0X2J1ZmZlcigmZGVz dF93cml0ZSk7CisgIGRlc3RfYnl0ZXM9b2dncGFja0JfYnl0ZXMoJmRlc3Rfd3JpdGUpOworICBp ZihkZXN0X2J5dGVzIT0oY29weStwcmVmaWxsKzcpLzgpeworICAgIGZwcmludGYoc3RkZXJyLCJ3 cm9uZyBudW1iZXIgb2YgYnl0ZXMgYWZ0ZXIgcHJlZmlsbCtjb3B5ISAlbGQhPSVkXG4iLGRlc3Rf Ynl0ZXMsKGNvcHkrcHJlZmlsbCs3KS84KTsKKyAgICBleGl0KDEpOworICB9CisgIG9nZ3BhY2tC X3JlYWRpbml0KCZzb3VyY2VfcmVhZCxzb3VyY2Usc291cmNlX2J5dGVzKTsKKyAgb2dncGFja0Jf cmVhZGluaXQoJmRlc3RfcmVhZCxkZXN0LGRlc3RfYnl0ZXMpOworCisgIGZvcihpPTA7aTxwcmVm aWxsO2krPTgpeworICAgIGludCBzPW9nZ3BhY2tCX3JlYWQoJnNvdXJjZV9yZWFkLHByZWZpbGwt aTw4P3ByZWZpbGwtaTo4KTsKKyAgICBpbnQgZD1vZ2dwYWNrQl9yZWFkKCZkZXN0X3JlYWQscHJl ZmlsbC1pPDg/cHJlZmlsbC1pOjgpOworICAgIGlmKHMhPWQpeworICAgICAgZnByaW50ZihzdGRl cnIsInByZWZpbGw9JWQgbWlzbWF0Y2ghIGJ5dGUgJWQsICV4IT0leFxuIixwcmVmaWxsLGkvOCxz LGQpOworICAgICAgZXhpdCgxKTsKKyAgICB9CisgIH0KKworICBvZ2dwYWNrQl9yZWFkaW5pdCgm c291cmNlX3JlYWQsc291cmNlLHNvdXJjZV9ieXRlcyk7CisgIGZvcihpPTA7aTxjb3B5O2krPTgp eworICAgIGludCBzPW9nZ3BhY2tCX3JlYWQoJnNvdXJjZV9yZWFkLGNvcHktaTw4P2NvcHktaTo4 KTsKKyAgICBpbnQgZD1vZ2dwYWNrQl9yZWFkKCZkZXN0X3JlYWQsY29weS1pPDg/Y29weS1pOjgp OworICAgIGlmKHMhPWQpeworICAgICAgZnByaW50ZihzdGRlcnIsInByZWZpbGw9JWQgY29weT0l ZCBtaXNtYXRjaCEgYnl0ZSAlZCwgJXghPSV4XG4iLHByZWZpbGwsY29weSxpLzgscyxkKTsKKyAg ICAgIGV4aXQoMSk7CisgICAgfQorICB9CisKKyAgaWYoY29weStwcmVmaWxsPGRlc3RfYnl0ZXMp eworICAgIGlmKG9nZ3BhY2tCX3JlYWQoJmRlc3RfcmVhZCxkZXN0X2J5dGVzLWNvcHktcHJlZmls bCkhPTApeworICAgICAgZnByaW50ZihzdGRlcnIsInByZWZpbGw9JWQgY29weT0lZCBtaXNtYXRj aCEgdHJhaWxpbmcgYml0cyBub3QgemVyb1xuIixwcmVmaWxsLGNvcHkpOworICAgICAgZXhpdCgx KTsKKyAgICB9CisgIH0KKworICBvZ2dwYWNrQl93cml0ZWNsZWFyKCZzb3VyY2Vfd3JpdGUpOwor ICBvZ2dwYWNrQl93cml0ZWNsZWFyKCZkZXN0X3dyaXRlKTsKKworfQorCiBpbnQgbWFpbih2b2lk KXsKICAgdW5zaWduZWQgY2hhciAqYnVmZmVyOwotICBsb25nIGJ5dGVzLGk7CisgIGxvbmcgYnl0 ZXMsaSxqOwogICBzdGF0aWMgdW5zaWduZWQgbG9uZyB0ZXN0YnVmZmVyMVtdPQogICAgIHsxOCwx MiwxMDM5NDgsNDMyNSw1NDMsNzYsNDMyLDUyLDMsNjUsNCw1NiwzMiw0MiwzNCwyMSwxLDIzLDMy LDU0Niw0NTYsNywKICAgICAgICA1NjcsNTYsOCw4LDU1LDMsNTIsMzQyLDM0MSw0LDI2NSw3LDY3 LDg2LDIxOTksMjEsNywxLDUsMSw0fTsKQEAgLTMyNCw2MCArODEyLDc1IEBAIGludCBtYWluKHZv aWQpewogICAgICAgIDg1NTI1MTUxLDAsMTIzMjEsMSwzNDk1MjgzNTJ9OwogICBpbnQgdGVzdDJz aXplPTIxOwogCi0gIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxhcmdlW109Ci0gICAgezIxMzY1MzE2 MjVMLDIxMzc4NjE4MjMsNTY3MzI0NTIsMTMxLDMyMTI0MjEsMTIzMjUzNDMsMzQ1NDc1NjIsMTIz MTMyMTIsCi0gICAgICAgMTIzMzQzMiw1MzQsNSwyMTQ2NDM1MjMxLDE0NDM2NDY3LDc4NjkyOTks NzYzMjY2MTQsMTY3NTQ4NTg1LAotICAgICAgIDg1NTI1MTUxLDAsMTIzMjEsMSwyMTQ2NTI4MzUy fTsKLQogICBzdGF0aWMgdW5zaWduZWQgbG9uZyB0ZXN0YnVmZmVyM1tdPQogICAgIHsxLDAsMTQs MCwxLDAsMTIsMCwxLDAsMCwwLDEsMSwwLDEsMCwxLDAsMSwwLDEsMCwxLDAsMSwwLDAsMSwxLDEs MSwxLDAsMCwxLAogICAgICAgIDAsMSwzMCwxLDEsMSwwLDAsMSwwLDAsMCwxMiwwLDExLDAsMSww LDAsMX07CiAgIGludCB0ZXN0M3NpemU9NTY7CiAKKyAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFy Z2VbXT0KKyAgICB7MjEzNjUzMTYyNUwsMjEzNzg2MTgyMyw1NjczMjQ1MiwxMzEsMzIxMjQyMSwx MjMyNTM0MywzNDU0NzU2MiwxMjMxMzIxMiwKKyAgICAgICAxMjMzNDMyLDUzNCw1LDIxNDY0MzUy MzEsMTQ0MzY0NjcsNzg2OTI5OSw3NjMyNjYxNCwxNjc1NDg1ODUsCisgICAgICAgODU1MjUxNTEs MCwxMjMyMSwxLDIxNDY1MjgzNTJ9OworCiAgIGludCBvbmVzaXplPTMzOwotICBzdGF0aWMgaW50 IG9uZVtdPXsxNDYsMjUsNDQsMTUxLDE5NSwxNSwxNTMsMTc2LDIzMywxMzEsMTk2LDY1LDg1LDE3 Miw0Nyw0MCwKKyAgc3RhdGljIGludCBvbmVbMzNdPXsxNDYsMjUsNDQsMTUxLDE5NSwxNSwxNTMs MTc2LDIzMywxMzEsMTk2LDY1LDg1LDE3Miw0Nyw0MCwKICAgICAgICAgICAgICAgICAgICAgMzQs MjQyLDIyMywxMzYsMzUsMjIyLDIxMSw4NiwxNzEsNTAsMjI1LDEzNSwyMTQsNzUsMTcyLAogICAg ICAgICAgICAgICAgICAgICAyMjMsNH07CisgIHN0YXRpYyBpbnQgb25lQlszM109ezE1MCwxMDEs MTMxLDMzLDIwMywxNSwyMDQsMjE2LDEwNSwxOTMsMTU2LDY1LDg0LDg1LDIyMiwKKyAgICAgICAg ICAgICAgICAgICAgICAgOCwxMzksMTQ1LDIyNywxMjYsMzQsNTUsMjQ0LDE3MSw4NSwxMDAsMzks MTk1LDE3MywxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgMjQ1LDI1MSwxMjh9OwogCiAgIGlu dCB0d29zaXplPTY7Ci0gIHN0YXRpYyBpbnQgdHdvW109ezYxLDI1NSwyNTUsMjUxLDIzMSwyOX07 CisgIHN0YXRpYyBpbnQgdHdvWzZdPXs2MSwyNTUsMjU1LDI1MSwyMzEsMjl9OworICBzdGF0aWMg aW50IHR3b0JbNl09ezI0Nyw2MywyNTUsMjUzLDI0OSwxMjB9OwogCiAgIGludCB0aHJlZXNpemU9 NTQ7Ci0gIHN0YXRpYyBpbnQgdGhyZWVbXT17MTY5LDIsMjMyLDI1Miw5MSwxMzIsMTU2LDM2LDg5 LDEzLDEyMywxNzYsMTQ0LDMyLDI1NCwKKyAgc3RhdGljIGludCB0aHJlZVs1NF09ezE2OSwyLDIz MiwyNTIsOTEsMTMyLDE1NiwzNiw4OSwxMywxMjMsMTc2LDE0NCwzMiwyNTQsCiAgICAgICAgICAg ICAgICAgICAgICAgMTQyLDIyNCw4NSw1OSwxMjEsMTQ0LDc5LDEyNCwyMyw2Nyw5MCw5MCwyMTYs NzksMjMsODMsCiAgICAgICAgICAgICAgICAgICAgICAgNTgsMTM1LDE5Niw2MSw1NSwxMjksMTgz LDU0LDEwMSwxMDAsMTcwLDM3LDEyNywxMjYsMTAsCiAgICAgICAgICAgICAgICAgICAgICAgMTAw LDUyLDQsMTQsMTgsODYsNzcsMX07CisgIHN0YXRpYyBpbnQgdGhyZWVCWzU0XT17MjA2LDEyOCw0 MiwxNTMsNTcsOCwxODMsMjUxLDEzLDg5LDM2LDMwLDMyLDE0NCwxODMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgMTMwLDU5LDI0MCwxMjEsNTksODUsMjIzLDE5LDIyOCwxODAsMTM0LDMzLDEw Nyw3NCw5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAyMzMsMjUzLDE5NiwxMzUsNjMsMiwx MTAsMTE0LDUwLDE1NSw5MCwxMjcsMzcsMTcwLDEwNCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAyMDAsMjAsMjU0LDQsNTgsMTA2LDE3NiwxNDQsMH07CiAKICAgaW50IGZvdXJzaXplPTM4Owot ICBzdGF0aWMgaW50IGZvdXJbXT17MTgsNiwxNjMsMjUyLDk3LDE5NCwxMDQsMTMxLDMyLDEsNyw4 MiwxMzcsNDIsMTI5LDExLDcyLAorICBzdGF0aWMgaW50IGZvdXJbMzhdPXsxOCw2LDE2MywyNTIs OTcsMTk0LDEwNCwxMzEsMzIsMSw3LDgyLDEzNyw0MiwxMjksMTEsNzIsCiAgICAgICAgICAgICAg ICAgICAgICAxMzIsNjAsMjIwLDExMiw4LDE5NiwxMDksNjQsMTc5LDg2LDksMTM3LDE5NSwyMDgs MTIyLDE2OSwKICAgICAgICAgICAgICAgICAgICAgIDI4LDIsMTMzLDAsMX07CisgIHN0YXRpYyBp bnQgZm91ckJbMzhdPXszNiw0OCwxMDIsODMsMjQzLDI0LDUyLDcsNCwzNSwxMzIsMTAsMTQ1LDIx LDIsOTMsMiw0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDEsMjE5LDE4NCwxNiwzMywxODQs NTQsMTQ5LDE3MCwxMzIsMTgsMzAsMjksOTgsMjI5LDY3LAorICAgICAgICAgICAgICAgICAgICAg ICAgMTI5LDEwLDQsMzJ9OwogCiAgIGludCBmaXZlc2l6ZT00NTsKLSAgc3RhdGljIGludCBmaXZl W109ezE2OSwyLDEyNiwxMzksMTQ0LDE3MiwzMCw0LDgwLDcyLDI0MCw1OSwxMzAsMjE4LDczLDYy LAorICBzdGF0aWMgaW50IGZpdmVbNDVdPXsxNjksMiwxMjYsMTM5LDE0NCwxNzIsMzAsNCw4MCw3 MiwyNDAsNTksMTMwLDIxOCw3Myw2MiwKICAgICAgICAgICAgICAgICAgICAgIDI0MSwyNCwyMTAs NDQsNCwyMCwwLDI0OCwxMTYsNDksMTM1LDEwMCwxMTAsMTMwLDE4MSwxNjksCiAgICAgICAgICAg ICAgICAgICAgICA4NCw3NSwxNTksMiwxLDAsMTMyLDE5Miw4LDAsMCwxOCwyMn07CisgIHN0YXRp YyBpbnQgZml2ZUJbNDVdPXsxLDg0LDE0NSwxMTEsMjQ1LDEwMCwxMjgsOCw1NiwzNiw0MCw3MSwx MjYsNzgsMjEzLDIyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDEyNCwxMDUsMTIsMCwxMzMs MTI4LDAsMTYyLDIzMywyNDIsNjcsMTUyLDc3LDIwNSw3NywKKyAgICAgICAgICAgICAgICAgICAg ICAgIDE3MiwxNTAsMTY5LDEyOSw3OSwxMjgsMCw2LDQsMzIsMCwyNyw5LDB9OwogCiAgIGludCBz aXhzaXplPTc7Ci0gIHN0YXRpYyBpbnQgc2l4W109ezE3LDE3NywxNzAsMjQyLDE2OSwxOSwxNDh9 OworICBzdGF0aWMgaW50IHNpeFs3XT17MTcsMTc3LDE3MCwyNDIsMTY5LDE5LDE0OH07CisgIHN0 YXRpYyBpbnQgc2l4Qls3XT17MTM2LDE0MSw4NSw3OSwxNDksMjAwLDQxfTsKIAogICAvKiBUZXN0 IHJlYWQvd3JpdGUgdG9nZXRoZXIgKi8KICAgLyogTGF0ZXIgd2UgdGVzdCBhZ2FpbnN0IHByZWdl bmVyYXRlZCBiaXRzdHJlYW1zICovCiAgIG9nZ3BhY2tfd3JpdGVpbml0KCZvKTsKIAotICBmcHJp bnRmKHN0ZGVyciwiXG5TbWFsbCBwcmVjbGlwcGVkIHBhY2tpbmc6ICIpOworICBmcHJpbnRmKHN0 ZGVyciwiXG5TbWFsbCBwcmVjbGlwcGVkIHBhY2tpbmcgKExTYik6ICIpOwogICBjbGlwdGVzdCh0 ZXN0YnVmZmVyMSx0ZXN0MXNpemUsMCxvbmUsb25lc2l6ZSk7CiAgIGZwcmludGYoc3RkZXJyLCJv ay4iKTsKIAotICBmcHJpbnRmKHN0ZGVyciwiXG5OdWxsIGJpdCBjYWxsOiAiKTsKKyAgZnByaW50 ZihzdGRlcnIsIlxuTnVsbCBiaXQgY2FsbCAoTFNiKTogIik7CiAgIGNsaXB0ZXN0KHRlc3RidWZm ZXIzLHRlc3Qzc2l6ZSwwLHR3byx0d29zaXplKTsKICAgZnByaW50ZihzdGRlcnIsIm9rLiIpOwog Ci0gIGZwcmludGYoc3RkZXJyLCJcbkxhcmdlIHByZWNsaXBwZWQgcGFja2luZzogIik7CisgIGZw cmludGYoc3RkZXJyLCJcbkxhcmdlIHByZWNsaXBwZWQgcGFja2luZyAoTFNiKTogIik7CiAgIGNs aXB0ZXN0KHRlc3RidWZmZXIyLHRlc3Qyc2l6ZSwwLHRocmVlLHRocmVlc2l6ZSk7CiAgIGZwcmlu dGYoc3RkZXJyLCJvay4iKTsKIAotICBmcHJpbnRmKHN0ZGVyciwiXG4zMiBiaXQgcHJlY2xpcHBl ZCBwYWNraW5nOiAiKTsKKyAgZnByaW50ZihzdGRlcnIsIlxuMzIgYml0IHByZWNsaXBwZWQgcGFj a2luZyAoTFNiKTogIik7CiAgIG9nZ3BhY2tfcmVzZXQoJm8pOwogICBmb3IoaT0wO2k8dGVzdDJz aXplO2krKykKICAgICBvZ2dwYWNrX3dyaXRlKCZvLGxhcmdlW2ldLDMyKTsKQEAgLTM4OCw3ICs4 OTEsNyBAQCBpbnQgbWFpbih2b2lkKXsKICAgICBpZihvZ2dwYWNrX2xvb2soJnIsMzIpPT0tMSly ZXBvcnQoIm91dCBvZiBkYXRhLiBmYWlsZWQhIik7CiAgICAgaWYob2dncGFja19sb29rKCZyLDMy KSE9bGFyZ2VbaV0pewogICAgICAgZnByaW50ZihzdGRlcnIsIiVsZCAhPSAlbGQgKCVseCE9JWx4 KToiLG9nZ3BhY2tfbG9vaygmciwzMiksbGFyZ2VbaV0sCi0JICAgICAgb2dncGFja19sb29rKCZy LDMyKSxsYXJnZVtpXSk7CisgICAgICAgICAgICAgIG9nZ3BhY2tfbG9vaygmciwzMiksbGFyZ2Vb aV0pOwogICAgICAgcmVwb3J0KCJyZWFkIGluY29ycmVjdCB2YWx1ZSFcbiIpOwogICAgIH0KICAg ICBvZ2dwYWNrX2FkdigmciwzMik7CkBAIC0zOTYsMjAgKzg5OSwyMCBAQCBpbnQgbWFpbih2b2lk KXsKICAgaWYob2dncGFja19ieXRlcygmcikhPWJ5dGVzKXJlcG9ydCgibGVmdG92ZXIgYnl0ZXMg YWZ0ZXIgcmVhZCFcbiIpOwogICBmcHJpbnRmKHN0ZGVyciwib2suIik7CiAKLSAgZnByaW50Zihz dGRlcnIsIlxuU21hbGwgdW5jbGlwcGVkIHBhY2tpbmc6ICIpOworICBmcHJpbnRmKHN0ZGVyciwi XG5TbWFsbCB1bmNsaXBwZWQgcGFja2luZyAoTFNiKTogIik7CiAgIGNsaXB0ZXN0KHRlc3RidWZm ZXIxLHRlc3Qxc2l6ZSw3LGZvdXIsZm91cnNpemUpOwogICBmcHJpbnRmKHN0ZGVyciwib2suIik7 CiAKLSAgZnByaW50ZihzdGRlcnIsIlxuTGFyZ2UgdW5jbGlwcGVkIHBhY2tpbmc6ICIpOworICBm cHJpbnRmKHN0ZGVyciwiXG5MYXJnZSB1bmNsaXBwZWQgcGFja2luZyAoTFNiKTogIik7CiAgIGNs aXB0ZXN0KHRlc3RidWZmZXIyLHRlc3Qyc2l6ZSwxNyxmaXZlLGZpdmVzaXplKTsKICAgZnByaW50 ZihzdGRlcnIsIm9rLiIpOwogCi0gIGZwcmludGYoc3RkZXJyLCJcblNpbmdsZSBiaXQgdW5jbGlw cGVkIHBhY2tpbmc6ICIpOworICBmcHJpbnRmKHN0ZGVyciwiXG5TaW5nbGUgYml0IHVuY2xpcHBl ZCBwYWNraW5nIChMU2IpOiAiKTsKICAgY2xpcHRlc3QodGVzdGJ1ZmZlcjMsdGVzdDNzaXplLDEs c2l4LHNpeHNpemUpOwogICBmcHJpbnRmKHN0ZGVyciwib2suIik7CiAKLSAgZnByaW50ZihzdGRl cnIsIlxuVGVzdGluZyByZWFkIHBhc3QgZW5kOiAiKTsKLSAgb2dncGFja19yZWFkaW5pdCgmciwi XDBcMFwwXDBcMFwwXDBcMCIsOCk7CisgIGZwcmludGYoc3RkZXJyLCJcblRlc3RpbmcgcmVhZCBw YXN0IGVuZCAoTFNiKTogIik7CisgIG9nZ3BhY2tfcmVhZGluaXQoJnIsKHVuc2lnbmVkIGNoYXIg KikiXDBcMFwwXDBcMFwwXDBcMCIsOCk7CiAgIGZvcihpPTA7aTw2NDtpKyspewogICAgIGlmKG9n Z3BhY2tfcmVhZCgmciwxKSE9MCl7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwiZmFpbGVkOyBnb3Qg LTEgcHJlbWF0dXJlbHkuXG4iKTsKQEAgLTQyMSw3ICs5MjQsNyBAQCBpbnQgbWFpbih2b2lkKXsK ICAgICAgIGZwcmludGYoc3RkZXJyLCJmYWlsZWQ7IHJlYWQgcGFzdCBlbmQgd2l0aG91dCAtMS5c biIpOwogICAgICAgZXhpdCgxKTsKICAgfQotICBvZ2dwYWNrX3JlYWRpbml0KCZyLCJcMFwwXDBc MFwwXDBcMFwwIiw4KTsKKyAgb2dncGFja19yZWFkaW5pdCgmciwodW5zaWduZWQgY2hhciAqKSJc MFwwXDBcMFwwXDBcMFwwIiw4KTsKICAgaWYob2dncGFja19yZWFkKCZyLDMwKSE9MCB8fCBvZ2dw YWNrX3JlYWQoJnIsMTYpIT0wKXsKICAgICAgIGZwcmludGYoc3RkZXJyLCJmYWlsZWQgMjsgZ290 IC0xIHByZW1hdHVyZWx5LlxuIik7CiAgICAgICBleGl0KDEpOwpAQCAtNDQyLDExICs5NDUsMTQ0 IEBAIGludCBtYWluKHZvaWQpewogICAgIGZwcmludGYoc3RkZXJyLCJmYWlsZWQ7IHJlYWQgcGFz dCBlbmQgd2l0aG91dCAtMS5cbiIpOwogICAgICAgZXhpdCgxKTsKICAgfQotICBmcHJpbnRmKHN0 ZGVyciwib2suXG5cbiIpOworICBvZ2dwYWNrX3dyaXRlY2xlYXIoJm8pOworICBmcHJpbnRmKHN0 ZGVyciwib2suIik7CisKKyAgLyogdGhpcyBpcyBwYXJ0bHkgZ2xhc3Nib3g7IHdlJ3JlIG1vc3Rs eSBjb25jZXJuZWQgYWJvdXQgdGhlIGFsbG9jYXRpb24gYm91bmRhcmllcyAqLworCisgIGZwcmlu dGYoc3RkZXJyLCJcblRlc3RpbmcgYWxpZ25lZCB3cml0ZWNvcGllcyAoTFNiKTogIik7CisgIGZv cihpPTA7aTw3MTtpKyspCisgICAgZm9yKGo9MDtqPDU7aisrKQorICAgICAgY29weXRlc3Qoaio4 LGkpOworICBmb3IoaT1CVUZGRVJfSU5DUkVNRU5UKjgtNzE7aTxCVUZGRVJfSU5DUkVNRU5UKjgr NzE7aSsrKQorICAgIGZvcihqPTA7ajw1O2orKykKKyAgICAgIGNvcHl0ZXN0KGoqOCxpKTsKKyAg ZnByaW50ZihzdGRlcnIsIm9rLiAgICAgICIpOworCisgIGZwcmludGYoc3RkZXJyLCJcblRlc3Rp bmcgdW5hbGlnbmVkIHdyaXRlY29waWVzIChMU2IpOiAiKTsKKyAgZm9yKGk9MDtpPDcxO2krKykK KyAgICBmb3Ioaj0xO2o8NDA7aisrKQorICAgICAgaWYoaiYweDcpCisgICAgICAgIGNvcHl0ZXN0 KGosaSk7CisgIGZvcihpPUJVRkZFUl9JTkNSRU1FTlQqOC03MTtpPEJVRkZFUl9JTkNSRU1FTlQq OCs3MTtpKyspCisgICAgZm9yKGo9MTtqPDQwO2orKykKKyAgICAgIGlmKGomMHg3KQorICAgICAg ICBjb3B5dGVzdChqLGkpOworICAKKyAgZnByaW50ZihzdGRlcnIsIm9rLiAgICAgIFxuIik7CiAK IAorICAvKioqKioqKioqKiBsYXp5LCBjdXQtbi1wYXN0ZSByZXRlc3Qgd2l0aCBNU2IgcGFja2lu ZyAqKioqKioqKioqKi8KKworICAvKiBUZXN0IHJlYWQvd3JpdGUgdG9nZXRoZXIgKi8KKyAgLyog TGF0ZXIgd2UgdGVzdCBhZ2FpbnN0IHByZWdlbmVyYXRlZCBiaXRzdHJlYW1zICovCisgIG9nZ3Bh Y2tCX3dyaXRlaW5pdCgmbyk7CisKKyAgZnByaW50ZihzdGRlcnIsIlxuU21hbGwgcHJlY2xpcHBl ZCBwYWNraW5nIChNU2IpOiAiKTsKKyAgY2xpcHRlc3RCKHRlc3RidWZmZXIxLHRlc3Qxc2l6ZSww LG9uZUIsb25lc2l6ZSk7CisgIGZwcmludGYoc3RkZXJyLCJvay4iKTsKKworICBmcHJpbnRmKHN0 ZGVyciwiXG5OdWxsIGJpdCBjYWxsIChNU2IpOiAiKTsKKyAgY2xpcHRlc3RCKHRlc3RidWZmZXIz LHRlc3Qzc2l6ZSwwLHR3b0IsdHdvc2l6ZSk7CisgIGZwcmludGYoc3RkZXJyLCJvay4iKTsKKwor ICBmcHJpbnRmKHN0ZGVyciwiXG5MYXJnZSBwcmVjbGlwcGVkIHBhY2tpbmcgKE1TYik6ICIpOwor ICBjbGlwdGVzdEIodGVzdGJ1ZmZlcjIsdGVzdDJzaXplLDAsdGhyZWVCLHRocmVlc2l6ZSk7Cisg IGZwcmludGYoc3RkZXJyLCJvay4iKTsKKworICBmcHJpbnRmKHN0ZGVyciwiXG4zMiBiaXQgcHJl Y2xpcHBlZCBwYWNraW5nIChNU2IpOiAiKTsKKyAgb2dncGFja0JfcmVzZXQoJm8pOworICBmb3Io aT0wO2k8dGVzdDJzaXplO2krKykKKyAgICBvZ2dwYWNrQl93cml0ZSgmbyxsYXJnZVtpXSwzMik7 CisgIGJ1ZmZlcj1vZ2dwYWNrQl9nZXRfYnVmZmVyKCZvKTsKKyAgYnl0ZXM9b2dncGFja0JfYnl0 ZXMoJm8pOworICBvZ2dwYWNrQl9yZWFkaW5pdCgmcixidWZmZXIsYnl0ZXMpOworICBmb3IoaT0w O2k8dGVzdDJzaXplO2krKyl7CisgICAgaWYob2dncGFja0JfbG9vaygmciwzMik9PS0xKXJlcG9y dCgib3V0IG9mIGRhdGEuIGZhaWxlZCEiKTsKKyAgICBpZihvZ2dwYWNrQl9sb29rKCZyLDMyKSE9 bGFyZ2VbaV0peworICAgICAgZnByaW50ZihzdGRlcnIsIiVsZCAhPSAlbGQgKCVseCE9JWx4KToi LG9nZ3BhY2tCX2xvb2soJnIsMzIpLGxhcmdlW2ldLAorICAgICAgICAgICAgICBvZ2dwYWNrQl9s b29rKCZyLDMyKSxsYXJnZVtpXSk7CisgICAgICByZXBvcnQoInJlYWQgaW5jb3JyZWN0IHZhbHVl IVxuIik7CisgICAgfQorICAgIG9nZ3BhY2tCX2FkdigmciwzMik7CisgIH0KKyAgaWYob2dncGFj a0JfYnl0ZXMoJnIpIT1ieXRlcylyZXBvcnQoImxlZnRvdmVyIGJ5dGVzIGFmdGVyIHJlYWQhXG4i KTsKKyAgZnByaW50ZihzdGRlcnIsIm9rLiIpOworCisgIGZwcmludGYoc3RkZXJyLCJcblNtYWxs IHVuY2xpcHBlZCBwYWNraW5nIChNU2IpOiAiKTsKKyAgY2xpcHRlc3RCKHRlc3RidWZmZXIxLHRl c3Qxc2l6ZSw3LGZvdXJCLGZvdXJzaXplKTsKKyAgZnByaW50ZihzdGRlcnIsIm9rLiIpOworCisg IGZwcmludGYoc3RkZXJyLCJcbkxhcmdlIHVuY2xpcHBlZCBwYWNraW5nIChNU2IpOiAiKTsKKyAg Y2xpcHRlc3RCKHRlc3RidWZmZXIyLHRlc3Qyc2l6ZSwxNyxmaXZlQixmaXZlc2l6ZSk7CisgIGZw cmludGYoc3RkZXJyLCJvay4iKTsKKworICBmcHJpbnRmKHN0ZGVyciwiXG5TaW5nbGUgYml0IHVu Y2xpcHBlZCBwYWNraW5nIChNU2IpOiAiKTsKKyAgY2xpcHRlc3RCKHRlc3RidWZmZXIzLHRlc3Qz c2l6ZSwxLHNpeEIsc2l4c2l6ZSk7CisgIGZwcmludGYoc3RkZXJyLCJvay4iKTsKKworICBmcHJp bnRmKHN0ZGVyciwiXG5UZXN0aW5nIHJlYWQgcGFzdCBlbmQgKE1TYik6ICIpOworICBvZ2dwYWNr Ql9yZWFkaW5pdCgmciwodW5zaWduZWQgY2hhciAqKSJcMFwwXDBcMFwwXDBcMFwwIiw4KTsKKyAg Zm9yKGk9MDtpPDY0O2krKyl7CisgICAgaWYob2dncGFja0JfcmVhZCgmciwxKSE9MCl7CisgICAg ICBmcHJpbnRmKHN0ZGVyciwiZmFpbGVkOyBnb3QgLTEgcHJlbWF0dXJlbHkuXG4iKTsKKyAgICAg IGV4aXQoMSk7CisgICAgfQorICB9CisgIGlmKG9nZ3BhY2tCX2xvb2soJnIsMSkhPS0xIHx8Cisg ICAgIG9nZ3BhY2tCX3JlYWQoJnIsMSkhPS0xKXsKKyAgICAgIGZwcmludGYoc3RkZXJyLCJmYWls ZWQ7IHJlYWQgcGFzdCBlbmQgd2l0aG91dCAtMS5cbiIpOworICAgICAgZXhpdCgxKTsKKyAgfQor ICBvZ2dwYWNrQl9yZWFkaW5pdCgmciwodW5zaWduZWQgY2hhciAqKSJcMFwwXDBcMFwwXDBcMFww Iiw4KTsKKyAgaWYob2dncGFja0JfcmVhZCgmciwzMCkhPTAgfHwgb2dncGFja0JfcmVhZCgmciwx NikhPTApeworICAgICAgZnByaW50ZihzdGRlcnIsImZhaWxlZCAyOyBnb3QgLTEgcHJlbWF0dXJl bHkuXG4iKTsKKyAgICAgIGV4aXQoMSk7CisgIH0KKworICBpZihvZ2dwYWNrQl9sb29rKCZyLDE4 KSE9MCB8fAorICAgICBvZ2dwYWNrQl9sb29rKCZyLDE4KSE9MCl7CisgICAgZnByaW50ZihzdGRl cnIsImZhaWxlZCAzOyBnb3QgLTEgcHJlbWF0dXJlbHkuXG4iKTsKKyAgICAgIGV4aXQoMSk7Cisg IH0KKyAgaWYob2dncGFja0JfbG9vaygmciwxOSkhPS0xIHx8CisgICAgIG9nZ3BhY2tCX2xvb2so JnIsMTkpIT0tMSl7CisgICAgZnByaW50ZihzdGRlcnIsImZhaWxlZDsgcmVhZCBwYXN0IGVuZCB3 aXRob3V0IC0xLlxuIik7CisgICAgICBleGl0KDEpOworICB9CisgIGlmKG9nZ3BhY2tCX2xvb2so JnIsMzIpIT0tMSB8fAorICAgICBvZ2dwYWNrQl9sb29rKCZyLDMyKSE9LTEpeworICAgIGZwcmlu dGYoc3RkZXJyLCJmYWlsZWQ7IHJlYWQgcGFzdCBlbmQgd2l0aG91dCAtMS5cbiIpOworICAgICAg ZXhpdCgxKTsKKyAgfQorICBmcHJpbnRmKHN0ZGVyciwib2suIik7CisgIG9nZ3BhY2tCX3dyaXRl Y2xlYXIoJm8pOworCisgIC8qIHRoaXMgaXMgcGFydGx5IGdsYXNzYm94OyB3ZSdyZSBtb3N0bHkg Y29uY2VybmVkIGFib3V0IHRoZSBhbGxvY2F0aW9uIGJvdW5kYXJpZXMgKi8KKworICBmcHJpbnRm KHN0ZGVyciwiXG5UZXN0aW5nIGFsaWduZWQgd3JpdGVjb3BpZXMgKE1TYik6ICIpOworICBmb3Io aT0wO2k8NzE7aSsrKQorICAgIGZvcihqPTA7ajw1O2orKykKKyAgICAgIGNvcHl0ZXN0QihqKjgs aSk7CisgIGZvcihpPUJVRkZFUl9JTkNSRU1FTlQqOC03MTtpPEJVRkZFUl9JTkNSRU1FTlQqOCs3 MTtpKyspCisgICAgZm9yKGo9MDtqPDU7aisrKQorICAgICAgY29weXRlc3RCKGoqOCxpKTsKKyAg ZnByaW50ZihzdGRlcnIsIm9rLiAgICAgICIpOworCisgIGZwcmludGYoc3RkZXJyLCJcblRlc3Rp bmcgdW5hbGlnbmVkIHdyaXRlY29waWVzIChNU2IpOiAiKTsKKyAgZm9yKGk9MDtpPDcxO2krKykK KyAgICBmb3Ioaj0xO2o8NDA7aisrKQorICAgICAgaWYoaiYweDcpCisgICAgICAgIGNvcHl0ZXN0 QihqLGkpOworICBmb3IoaT1CVUZGRVJfSU5DUkVNRU5UKjgtNzE7aTxCVUZGRVJfSU5DUkVNRU5U KjgrNzE7aSsrKQorICAgIGZvcihqPTE7ajw0MDtqKyspCisgICAgICBpZihqJjB4NykKKyAgICAg ICAgY29weXRlc3RCKGosaSk7CisgIAorICBmcHJpbnRmKHN0ZGVyciwib2suICAgICAgXG5cbiIp OworCiAgIHJldHVybigwKTsKLX0gIAorfQogI2VuZGlmICAvKiBfVl9TRUxGVEVTVCAqLwogCiAj dW5kZWYgQlVGRkVSX0lOQ1JFTUVOVApkaWZmIC0tZ2l0IGEvc3lzL3NyYy9jbWQvYXVkaW8vbGli b2dnL2ZyYW1pbmcuYyBiL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9nZy9mcmFtaW5nLmMKLS0tIGEv c3lzL3NyYy9jbWQvYXVkaW8vbGlib2dnL2ZyYW1pbmcuYworKysgYi9zeXMvc3JjL2NtZC9hdWRp by9saWJvZ2cvZnJhbWluZy5jCkBAIC0xLDE4ICsxLDE4IEBACiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgotICogVEhJUyBGSUxFIElTIFBBUlQgT0YgVEhFIE9nZ1ZvcmJpcyBTT0ZUV0FSRSBD T0RFQyBTT1VSQ0UgQ09ERS4gICAqCisgKiBUSElTIEZJTEUgSVMgUEFSVCBPRiBUSEUgT2dnIENP TlRBSU5FUiBTT1VSQ0UgQ09ERS4gICAgICAgICAgICAgICoKICAqIFVTRSwgRElTVFJJQlVUSU9O IEFORCBSRVBST0RVQ1RJT04gT0YgVEhJUyBMSUJSQVJZIFNPVVJDRSBJUyAgICAgKgogICogR09W RVJORUQgQlkgQSBCU0QtU1RZTEUgU09VUkNFIExJQ0VOU0UgSU5DTFVERUQgV0lUSCBUSElTIFNP VVJDRSAqCiAgKiBJTiAnQ09QWUlORycuIFBMRUFTRSBSRUFEIFRIRVNFIFRFUk1TIEJFRk9SRSBE SVNUUklCVVRJTkcuICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogVEhFIE9nZ1ZvcmJpcyBTT1VS Q0UgQ09ERSBJUyAoQykgQ09QWVJJR0hUIDE5OTQtMjAwMiAgICAgICAgICAgICAqCisgKiBUSEUg T2dnVm9yYmlzIFNPVVJDRSBDT0RFIElTIChDKSBDT1BZUklHSFQgMTk5NC0yMDEwICAgICAgICAg ICAgICoKICAqIGJ5IHRoZSBYaXBoLk9yZyBGb3VuZGF0aW9uIGh0dHA6Ly93d3cueGlwaC5vcmcv ICAgICAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotIGZ1bmN0 aW9uOiBjb2RlIHJhdyBbVm9yYmlzXSBwYWNrZXRzIGludG8gZnJhbWVkIE9nZ1NxdWlzaCBzdHJl YW0gYW5kCisgZnVuY3Rpb246IGNvZGUgcmF3IHBhY2tldHMgaW50byBmcmFtZWQgT2dnU3F1aXNo IHN0cmVhbSBhbmQKICAgICAgICAgICAgZGVjb2RlIE9nZyBzdHJlYW1zIGJhY2sgaW50byByYXcg cGFja2V0cwotIGxhc3QgbW9kOiAkSWQ6IGZyYW1pbmcuYyx2IDEuMjIgMjAwMi8wNy8xMSAwOTow OTowOCB4aXBobW9udCBFeHAgJAorIGxhc3QgbW9kOiAkSWQkCiAKICBub3RlOiBUaGUgQ1JDIGNv ZGUgaXMgZGlyZWN0bHkgZGVyaXZlZCBmcm9tIHB1YmxpYyBkb21haW4gY29kZSBieQogIFJvc3Mg V2lsbGlhbXMgKHJvc3NAZ3Vlc3QuYWRlbGFpZGUuZWR1LmF1KS4gIFNlZSBkb2NzL2ZyYW1pbmcu aHRtbApAQCAtMjEsMjggKzIxLDI5IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRl IDxvZ2cvb2dnLmg+CiAKIC8qIEEgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgT2dnIGZyYW1pbmcg ZXhpc3RzIGluIGRvY3MvZnJhbWluZy5odG1sICovCiAKLWludCBvZ2dfcGFnZV92ZXJzaW9uKG9n Z19wYWdlICpvZyl7CitpbnQgb2dnX3BhZ2VfdmVyc2lvbihjb25zdCBvZ2dfcGFnZSAqb2cpewog ICByZXR1cm4oKGludCkob2ctPmhlYWRlcls0XSkpOwogfQogCi1pbnQgb2dnX3BhZ2VfY29udGlu dWVkKG9nZ19wYWdlICpvZyl7CitpbnQgb2dnX3BhZ2VfY29udGludWVkKGNvbnN0IG9nZ19wYWdl ICpvZyl7CiAgIHJldHVybigoaW50KShvZy0+aGVhZGVyWzVdJjB4MDEpKTsKIH0KIAotaW50IG9n Z19wYWdlX2JvcyhvZ2dfcGFnZSAqb2cpeworaW50IG9nZ19wYWdlX2Jvcyhjb25zdCBvZ2dfcGFn ZSAqb2cpewogICByZXR1cm4oKGludCkob2ctPmhlYWRlcls1XSYweDAyKSk7CiB9CiAKLWludCBv Z2dfcGFnZV9lb3Mob2dnX3BhZ2UgKm9nKXsKK2ludCBvZ2dfcGFnZV9lb3MoY29uc3Qgb2dnX3Bh Z2UgKm9nKXsKICAgcmV0dXJuKChpbnQpKG9nLT5oZWFkZXJbNV0mMHgwNCkpOwogfQogCi1vZ2df aW50NjRfdCBvZ2dfcGFnZV9ncmFudWxlcG9zKG9nZ19wYWdlICpvZyl7CitvZ2dfaW50NjRfdCBv Z2dfcGFnZV9ncmFudWxlcG9zKGNvbnN0IG9nZ19wYWdlICpvZyl7CiAgIHVuc2lnbmVkIGNoYXIg KnBhZ2U9b2ctPmhlYWRlcjsKICAgb2dnX2ludDY0X3QgZ3JhbnVsZXBvcz1wYWdlWzEzXSYoMHhm Zik7CiAgIGdyYW51bGVwb3M9IChncmFudWxlcG9zPDw4KXwocGFnZVsxMl0mMHhmZik7CkBAIC01 NSwxOCArNTYsMTggQEAgb2dnX2ludDY0X3Qgb2dnX3BhZ2VfZ3JhbnVsZXBvcyhvZ2dfcGFnZQog ICByZXR1cm4oZ3JhbnVsZXBvcyk7CiB9CiAKLWludCBvZ2dfcGFnZV9zZXJpYWxubyhvZ2dfcGFn ZSAqb2cpeworaW50IG9nZ19wYWdlX3NlcmlhbG5vKGNvbnN0IG9nZ19wYWdlICpvZyl7CiAgIHJl dHVybihvZy0+aGVhZGVyWzE0XSB8Ci0JIChvZy0+aGVhZGVyWzE1XTw8OCkgfAotCSAob2ctPmhl YWRlclsxNl08PDE2KSB8Ci0JIChvZy0+aGVhZGVyWzE3XTw8MjQpKTsKKyAgICAgICAgIChvZy0+ aGVhZGVyWzE1XTw8OCkgfAorICAgICAgICAgKG9nLT5oZWFkZXJbMTZdPDwxNikgfAorICAgICAg ICAgKG9nLT5oZWFkZXJbMTddPDwyNCkpOwogfQotIAotbG9uZyBvZ2dfcGFnZV9wYWdlbm8ob2dn X3BhZ2UgKm9nKXsKKworbG9uZyBvZ2dfcGFnZV9wYWdlbm8oY29uc3Qgb2dnX3BhZ2UgKm9nKXsK ICAgcmV0dXJuKG9nLT5oZWFkZXJbMThdIHwKLQkgKG9nLT5oZWFkZXJbMTldPDw4KSB8Ci0JIChv Zy0+aGVhZGVyWzIwXTw8MTYpIHwKLQkgKG9nLT5oZWFkZXJbMjFdPDwyNCkpOworICAgICAgICAg KG9nLT5oZWFkZXJbMTldPDw4KSB8CisgICAgICAgICAob2ctPmhlYWRlclsyMF08PDE2KSB8Cisg ICAgICAgICAob2ctPmhlYWRlclsyMV08PDI0KSk7CiB9CiAKIApAQCAtNzYsMTkgKzc3LDE5IEBA IGxvbmcgb2dnX3BhZ2VfcGFnZW5vKG9nZ19wYWdlICpvZyl7CiAgICBwYWdlLCBpdCdzIGNvdW50 ZWQgKi8KIAogLyogTk9URToKLUlmIGEgcGFnZSBjb25zaXN0cyBvZiBhIHBhY2tldCBiZWd1biBv biBhIHByZXZpb3VzIHBhZ2UsIGFuZCBhIG5ldwotcGFja2V0IGJlZ3VuIChidXQgbm90IGNvbXBs ZXRlZCkgb24gdGhpcyBwYWdlLCB0aGUgcmV0dXJuIHdpbGwgYmU6Ci0gIG9nZ19wYWdlX3BhY2tl dHMocGFnZSkgICA9PTEsIAotICBvZ2dfcGFnZV9jb250aW51ZWQocGFnZSkgIT0wCisgICBJZiBh IHBhZ2UgY29uc2lzdHMgb2YgYSBwYWNrZXQgYmVndW4gb24gYSBwcmV2aW91cyBwYWdlLCBhbmQg YSBuZXcKKyAgIHBhY2tldCBiZWd1biAoYnV0IG5vdCBjb21wbGV0ZWQpIG9uIHRoaXMgcGFnZSwg dGhlIHJldHVybiB3aWxsIGJlOgorICAgICBvZ2dfcGFnZV9wYWNrZXRzKHBhZ2UpICAgPT0xLAor ICAgICBvZ2dfcGFnZV9jb250aW51ZWQocGFnZSkgIT0wCiAKLUlmIGEgcGFnZSBoYXBwZW5zIHRv IGJlIGEgc2luZ2xlIHBhY2tldCB0aGF0IHdhcyBiZWd1biBvbiBhCi1wcmV2aW91cyBwYWdlLCBh bmQgc3BhbnMgdG8gdGhlIG5leHQgcGFnZSAoaW4gdGhlIGNhc2Ugb2YgYSB0aHJlZSBvcgotbW9y ZSBwYWdlIHBhY2tldCksIHRoZSByZXR1cm4gd2lsbCBiZTogCi0gIG9nZ19wYWdlX3BhY2tldHMo cGFnZSkgICA9PTAsIAotICBvZ2dfcGFnZV9jb250aW51ZWQocGFnZSkgIT0wCisgICBJZiBhIHBh Z2UgaGFwcGVucyB0byBiZSBhIHNpbmdsZSBwYWNrZXQgdGhhdCB3YXMgYmVndW4gb24gYQorICAg cHJldmlvdXMgcGFnZSwgYW5kIHNwYW5zIHRvIHRoZSBuZXh0IHBhZ2UgKGluIHRoZSBjYXNlIG9m IGEgdGhyZWUgb3IKKyAgIG1vcmUgcGFnZSBwYWNrZXQpLCB0aGUgcmV0dXJuIHdpbGwgYmU6Cisg ICAgIG9nZ19wYWdlX3BhY2tldHMocGFnZSkgICA9PTAsCisgICAgIG9nZ19wYWdlX2NvbnRpbnVl ZChwYWdlKSAhPTAKICovCiAKLWludCBvZ2dfcGFnZV9wYWNrZXRzKG9nZ19wYWdlICpvZyl7Citp bnQgb2dnX3BhZ2VfcGFja2V0cyhjb25zdCBvZ2dfcGFnZSAqb2cpewogICBpbnQgaSxuPW9nLT5o ZWFkZXJbMjZdLGNvdW50PTA7CiAgIGZvcihpPTA7aTxuO2krKykKICAgICBpZihvZy0+aGVhZGVy WzI3K2ldPDI1NSljb3VudCsrOwpAQCAtMTA4LDE2ICsxMDksMTYgQEAgc3RhdGljIG9nZ191aW50 MzJfdCBfb2dnX2NyY19lbnRyeSh1bnNpZwogICBmb3IgKGk9MDsgaTw4OyBpKyspCiAgICAgaWYg KHIgJiAweDgwMDAwMDAwVUwpCiAgICAgICByID0gKHIgPDwgMSkgXiAweDA0YzExZGI3OyAvKiBU aGUgc2FtZSBhcyB0aGUgZXRoZXJuZXQgZ2VuZXJhdG9yCi0JCQkJICAgIHBvbHlub21pYWwsIGFs dGhvdWdoIHdlIHVzZSBhbgotCQkJCSAgICB1bnJlZmxlY3RlZCBhbGcgYW5kIGFuIGluaXQvZmlu YWwKLQkJCQkgICAgb2YgMCwgbm90IDB4ZmZmZmZmZmYgKi8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBvbHlub21pYWwsIGFsdGhvdWdoIHdlIHVzZSBhbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWZsZWN0ZWQgYWxnIGFuZCBhbiBpbml0L2Zp bmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiAwLCBub3QgMHhmZmZm ZmZmZiAqLwogICAgIGVsc2UKICAgICAgICByPDw9MTsKICByZXR1cm4gKHIgJiAweGZmZmZmZmZm VUwpOwogfQogI2VuZGlmCiAKLXN0YXRpYyBvZ2dfdWludDMyX3QgY3JjX2xvb2t1cFsyNTZdPXsK K3N0YXRpYyBjb25zdCBvZ2dfdWludDMyX3QgY3JjX2xvb2t1cFsyNTZdPXsKICAgMHgwMDAwMDAw MCwweDA0YzExZGI3LDB4MDk4MjNiNmUsMHgwZDQzMjZkOSwKICAgMHgxMzA0NzZkYywweDE3YzU2 YjZiLDB4MWE4NjRkYjIsMHgxZTQ3NTAwNSwKICAgMHgyNjA4ZWRiOCwweDIyYzlmMDBmLDB4MmY4 YWQ2ZDYsMHgyYjRiY2I2MSwKQEAgLTE4OSwxOCArMTkwLDI5IEBAIGludCBvZ2dfc3RyZWFtX2lu aXQob2dnX3N0cmVhbV9zdGF0ZSAqb3MKICAgaWYob3MpewogICAgIG1lbXNldChvcywwLHNpemVv Zigqb3MpKTsKICAgICBvcy0+Ym9keV9zdG9yYWdlPTE2KjEwMjQ7CisgICAgb3MtPmxhY2luZ19z dG9yYWdlPTEwMjQ7CisKICAgICBvcy0+Ym9keV9kYXRhPV9vZ2dfbWFsbG9jKG9zLT5ib2R5X3N0 b3JhZ2Uqc2l6ZW9mKCpvcy0+Ym9keV9kYXRhKSk7Ci0KLSAgICBvcy0+bGFjaW5nX3N0b3JhZ2U9 MTAyNDsKICAgICBvcy0+bGFjaW5nX3ZhbHM9X29nZ19tYWxsb2Mob3MtPmxhY2luZ19zdG9yYWdl KnNpemVvZigqb3MtPmxhY2luZ192YWxzKSk7CiAgICAgb3MtPmdyYW51bGVfdmFscz1fb2dnX21h bGxvYyhvcy0+bGFjaW5nX3N0b3JhZ2Uqc2l6ZW9mKCpvcy0+Z3JhbnVsZV92YWxzKSk7CiAKKyAg ICBpZighb3MtPmJvZHlfZGF0YSB8fCAhb3MtPmxhY2luZ192YWxzIHx8ICFvcy0+Z3JhbnVsZV92 YWxzKXsKKyAgICAgIG9nZ19zdHJlYW1fY2xlYXIob3MpOworICAgICAgcmV0dXJuIC0xOworICAg IH0KKwogICAgIG9zLT5zZXJpYWxubz1zZXJpYWxubzsKIAogICAgIHJldHVybigwKTsKICAgfQog ICByZXR1cm4oLTEpOwotfSAKK30KKworLyogYXN5bmMvZGVsYXllZCBlcnJvciBkZXRlY3Rpb24g Zm9yIHRoZSBvZ2dfc3RyZWFtX3N0YXRlICovCitpbnQgb2dnX3N0cmVhbV9jaGVjayhvZ2dfc3Ry ZWFtX3N0YXRlICpvcyl7CisgIGlmKCFvcyB8fCAhb3MtPmJvZHlfZGF0YSkgcmV0dXJuIC0xOwor ICByZXR1cm4gMDsKK30KIAogLyogX2NsZWFyIGRvZXMgbm90IGZyZWUgb3MsIG9ubHkgdGhlIG5v bi1mbGF0IHN0b3JhZ2Ugd2l0aGluICovCiBpbnQgb2dnX3N0cmVhbV9jbGVhcihvZ2dfc3RyZWFt X3N0YXRlICpvcyl7CkBAIC0yMDksMTAgKzIyMSwxMCBAQCBpbnQgb2dnX3N0cmVhbV9jbGVhcihv Z2dfc3RyZWFtX3N0YXRlICpvCiAgICAgaWYob3MtPmxhY2luZ192YWxzKV9vZ2dfZnJlZShvcy0+ bGFjaW5nX3ZhbHMpOwogICAgIGlmKG9zLT5ncmFudWxlX3ZhbHMpX29nZ19mcmVlKG9zLT5ncmFu dWxlX3ZhbHMpOwogCi0gICAgbWVtc2V0KG9zLDAsc2l6ZW9mKCpvcykpOyAgICAKKyAgICBtZW1z ZXQob3MsMCxzaXplb2YoKm9zKSk7CiAgIH0KICAgcmV0dXJuKDApOwotfSAKK30KIAogaW50IG9n Z19zdHJlYW1fZGVzdHJveShvZ2dfc3RyZWFtX3N0YXRlICpvcyl7CiAgIGlmKG9zKXsKQEAgLTIy MCwyOSArMjMyLDYzIEBAIGludCBvZ2dfc3RyZWFtX2Rlc3Ryb3kob2dnX3N0cmVhbV9zdGF0ZSAK ICAgICBfb2dnX2ZyZWUob3MpOwogICB9CiAgIHJldHVybigwKTsKLX0gCit9CiAKIC8qIEhlbHBl cnMgZm9yIG9nZ19zdHJlYW1fZW5jb2RlOyB0aGlzIGtlZXBzIHRoZSBzdHJ1Y3R1cmUgYW5kCiAg ICB3aGF0J3MgaGFwcGVuaW5nIGZhaXJseSBjbGVhciAqLwogCi1zdGF0aWMgdm9pZCBfb3NfYm9k eV9leHBhbmQob2dnX3N0cmVhbV9zdGF0ZSAqb3MsaW50IG5lZWRlZCl7Ci0gIGlmKG9zLT5ib2R5 X3N0b3JhZ2U8PW9zLT5ib2R5X2ZpbGwrbmVlZGVkKXsKLSAgICBvcy0+Ym9keV9zdG9yYWdlKz0o bmVlZGVkKzEwMjQpOwotICAgIG9zLT5ib2R5X2RhdGE9X29nZ19yZWFsbG9jKG9zLT5ib2R5X2Rh dGEsb3MtPmJvZHlfc3RvcmFnZSpzaXplb2YoKm9zLT5ib2R5X2RhdGEpKTsKK3N0YXRpYyBpbnQg X29zX2JvZHlfZXhwYW5kKG9nZ19zdHJlYW1fc3RhdGUgKm9zLGxvbmcgbmVlZGVkKXsKKyAgaWYo b3MtPmJvZHlfc3RvcmFnZS1uZWVkZWQ8PW9zLT5ib2R5X2ZpbGwpeworICAgIGxvbmcgYm9keV9z dG9yYWdlOworICAgIHZvaWQgKnJldDsKKyAgICBpZihvcy0+Ym9keV9zdG9yYWdlPkxPTkdfTUFY LW5lZWRlZCl7CisgICAgICBvZ2dfc3RyZWFtX2NsZWFyKG9zKTsKKyAgICAgIHJldHVybiAtMTsK KyAgICB9CisgICAgYm9keV9zdG9yYWdlPW9zLT5ib2R5X3N0b3JhZ2UrbmVlZGVkOworICAgIGlm KGJvZHlfc3RvcmFnZTxMT05HX01BWC0xMDI0KWJvZHlfc3RvcmFnZSs9MTAyNDsKKyAgICByZXQ9 X29nZ19yZWFsbG9jKG9zLT5ib2R5X2RhdGEsYm9keV9zdG9yYWdlKnNpemVvZigqb3MtPmJvZHlf ZGF0YSkpOworICAgIGlmKCFyZXQpeworICAgICAgb2dnX3N0cmVhbV9jbGVhcihvcyk7CisgICAg ICByZXR1cm4gLTE7CisgICAgfQorICAgIG9zLT5ib2R5X3N0b3JhZ2U9Ym9keV9zdG9yYWdlOwor ICAgIG9zLT5ib2R5X2RhdGE9cmV0OwogICB9CisgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9p ZCBfb3NfbGFjaW5nX2V4cGFuZChvZ2dfc3RyZWFtX3N0YXRlICpvcyxpbnQgbmVlZGVkKXsKLSAg aWYob3MtPmxhY2luZ19zdG9yYWdlPD1vcy0+bGFjaW5nX2ZpbGwrbmVlZGVkKXsKLSAgICBvcy0+ bGFjaW5nX3N0b3JhZ2UrPShuZWVkZWQrMzIpOwotICAgIG9zLT5sYWNpbmdfdmFscz1fb2dnX3Jl YWxsb2Mob3MtPmxhY2luZ192YWxzLG9zLT5sYWNpbmdfc3RvcmFnZSpzaXplb2YoKm9zLT5sYWNp bmdfdmFscykpOwotICAgIG9zLT5ncmFudWxlX3ZhbHM9X29nZ19yZWFsbG9jKG9zLT5ncmFudWxl X3ZhbHMsb3MtPmxhY2luZ19zdG9yYWdlKnNpemVvZigqb3MtPmdyYW51bGVfdmFscykpOworc3Rh dGljIGludCBfb3NfbGFjaW5nX2V4cGFuZChvZ2dfc3RyZWFtX3N0YXRlICpvcyxsb25nIG5lZWRl ZCl7CisgIGlmKG9zLT5sYWNpbmdfc3RvcmFnZS1uZWVkZWQ8PW9zLT5sYWNpbmdfZmlsbCl7Cisg ICAgbG9uZyBsYWNpbmdfc3RvcmFnZTsKKyAgICB2b2lkICpyZXQ7CisgICAgaWYob3MtPmxhY2lu Z19zdG9yYWdlPkxPTkdfTUFYLW5lZWRlZCl7CisgICAgICBvZ2dfc3RyZWFtX2NsZWFyKG9zKTsK KyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbGFjaW5nX3N0b3JhZ2U9b3MtPmxhY2luZ19z dG9yYWdlK25lZWRlZDsKKyAgICBpZihsYWNpbmdfc3RvcmFnZTxMT05HX01BWC0zMilsYWNpbmdf c3RvcmFnZSs9MzI7CisgICAgcmV0PV9vZ2dfcmVhbGxvYyhvcy0+bGFjaW5nX3ZhbHMsbGFjaW5n X3N0b3JhZ2Uqc2l6ZW9mKCpvcy0+bGFjaW5nX3ZhbHMpKTsKKyAgICBpZighcmV0KXsKKyAgICAg IG9nZ19zdHJlYW1fY2xlYXIob3MpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBvcy0+ bGFjaW5nX3ZhbHM9cmV0OworICAgIHJldD1fb2dnX3JlYWxsb2Mob3MtPmdyYW51bGVfdmFscyxs YWNpbmdfc3RvcmFnZSoKKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqb3MtPmdyYW51bGVf dmFscykpOworICAgIGlmKCFyZXQpeworICAgICAgb2dnX3N0cmVhbV9jbGVhcihvcyk7CisgICAg ICByZXR1cm4gLTE7CisgICAgfQorICAgIG9zLT5ncmFudWxlX3ZhbHM9cmV0OworICAgIG9zLT5s YWNpbmdfc3RvcmFnZT1sYWNpbmdfc3RvcmFnZTsKICAgfQorICByZXR1cm4gMDsKIH0KIAogLyog Y2hlY2tzdW0gdGhlIHBhZ2UgKi8KIC8qIERpcmVjdCB0YWJsZSBDUkM7IG5vdGUgdGhhdCB0aGlz IHdpbGwgYmUgZmFzdGVyIGluIHRoZSBmdXR1cmUgaWYgd2UKLSAgIHBlcmZvcm0gdGhlIGNoZWNr c3VtIHNpbG11bHRhbmVvdXNseSB3aXRoIG90aGVyIGNvcGllcyAqLworICAgcGVyZm9ybSB0aGUg Y2hlY2tzdW0gc2ltdWx0YW5lb3VzbHkgd2l0aCBvdGhlciBjb3BpZXMgKi8KIAogdm9pZCBvZ2df cGFnZV9jaGVja3N1bV9zZXQob2dnX3BhZ2UgKm9nKXsKICAgaWYob2cpewpAQCAtMjU0LDU0ICsz MDAsNjkgQEAgdm9pZCBvZ2dfcGFnZV9jaGVja3N1bV9zZXQob2dnX3BhZ2UgKm9nKQogICAgIG9n LT5oZWFkZXJbMjNdPTA7CiAgICAgb2ctPmhlYWRlclsyNF09MDsKICAgICBvZy0+aGVhZGVyWzI1 XT0wOwotICAgIAorCiAgICAgZm9yKGk9MDtpPG9nLT5oZWFkZXJfbGVuO2krKykKICAgICAgIGNy Y19yZWc9KGNyY19yZWc8PDgpXmNyY19sb29rdXBbKChjcmNfcmVnID4+IDI0KSYweGZmKV5vZy0+ aGVhZGVyW2ldXTsKICAgICBmb3IoaT0wO2k8b2ctPmJvZHlfbGVuO2krKykKICAgICAgIGNyY19y ZWc9KGNyY19yZWc8PDgpXmNyY19sb29rdXBbKChjcmNfcmVnID4+IDI0KSYweGZmKV5vZy0+Ym9k eVtpXV07Ci0gICAgCi0gICAgb2ctPmhlYWRlclsyMl09Y3JjX3JlZyYweGZmOwotICAgIG9nLT5o ZWFkZXJbMjNdPShjcmNfcmVnPj44KSYweGZmOwotICAgIG9nLT5oZWFkZXJbMjRdPShjcmNfcmVn Pj4xNikmMHhmZjsKLSAgICBvZy0+aGVhZGVyWzI1XT0oY3JjX3JlZz4+MjQpJjB4ZmY7CisKKyAg ICBvZy0+aGVhZGVyWzIyXT0odW5zaWduZWQgY2hhcikoY3JjX3JlZyYweGZmKTsKKyAgICBvZy0+ aGVhZGVyWzIzXT0odW5zaWduZWQgY2hhcikoKGNyY19yZWc+PjgpJjB4ZmYpOworICAgIG9nLT5o ZWFkZXJbMjRdPSh1bnNpZ25lZCBjaGFyKSgoY3JjX3JlZz4+MTYpJjB4ZmYpOworICAgIG9nLT5o ZWFkZXJbMjVdPSh1bnNpZ25lZCBjaGFyKSgoY3JjX3JlZz4+MjQpJjB4ZmYpOwogICB9CiB9CiAK IC8qIHN1Ym1pdCBkYXRhIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhlIGZyYW1pbmcgZW5n aW5lICovCi1pbnQgb2dnX3N0cmVhbV9wYWNrZXRpbihvZ2dfc3RyZWFtX3N0YXRlICpvcyxvZ2df cGFja2V0ICpvcCl7Ci0gIGludCBsYWNpbmdfdmFscz1vcC0+Ynl0ZXMvMjU1KzEsaTsKK2ludCBv Z2dfc3RyZWFtX2lvdmVjaW4ob2dnX3N0cmVhbV9zdGF0ZSAqb3MsIG9nZ19pb3ZlY190ICppb3Ys IGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBlX29fcywgb2dnX2ludDY0 X3QgZ3JhbnVsZXBvcyl7CisKKyAgbG9uZyBieXRlcyA9IDAsIGxhY2luZ192YWxzOworICBpbnQg aTsKKworICBpZihvZ2dfc3RyZWFtX2NoZWNrKG9zKSkgcmV0dXJuIC0xOworICBpZighaW92KSBy ZXR1cm4gMDsKKworICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSl7CisgICAgaWYoaW92W2ld Lmlvdl9sZW4+TE9OR19NQVgpIHJldHVybiAtMTsKKyAgICBpZihieXRlcz5MT05HX01BWC0obG9u Zylpb3ZbaV0uaW92X2xlbikgcmV0dXJuIC0xOworICAgIGJ5dGVzICs9IChsb25nKWlvdltpXS5p b3ZfbGVuOworICB9CisgIGxhY2luZ192YWxzPWJ5dGVzLzI1NSsxOwogCiAgIGlmKG9zLT5ib2R5 X3JldHVybmVkKXsKICAgICAvKiBhZHZhbmNlIHBhY2tldCBkYXRhIGFjY29yZGluZyB0byB0aGUg Ym9keV9yZXR1cm5lZCBwb2ludGVyLiBXZQogICAgICAgIGhhZCB0byBrZWVwIGl0IGFyb3VuZCB0 byByZXR1cm4gYSBwb2ludGVyIGludG8gdGhlIGJ1ZmZlciBsYXN0CiAgICAgICAgY2FsbCAqLwot ICAgIAorCiAgICAgb3MtPmJvZHlfZmlsbC09b3MtPmJvZHlfcmV0dXJuZWQ7CiAgICAgaWYob3Mt PmJvZHlfZmlsbCkKICAgICAgIG1lbW1vdmUob3MtPmJvZHlfZGF0YSxvcy0+Ym9keV9kYXRhK29z LT5ib2R5X3JldHVybmVkLAotCSAgICAgIG9zLT5ib2R5X2ZpbGwpOworICAgICAgICAgICAgICBv cy0+Ym9keV9maWxsKTsKICAgICBvcy0+Ym9keV9yZXR1cm5lZD0wOwogICB9Ci0gCisKICAgLyog bWFrZSBzdXJlIHdlIGhhdmUgdGhlIGJ1ZmZlciBzdG9yYWdlICovCi0gIF9vc19ib2R5X2V4cGFu ZChvcyxvcC0+Ynl0ZXMpOwotICBfb3NfbGFjaW5nX2V4cGFuZChvcyxsYWNpbmdfdmFscyk7Cisg IGlmKF9vc19ib2R5X2V4cGFuZChvcyxieXRlcykgfHwgX29zX2xhY2luZ19leHBhbmQob3MsbGFj aW5nX3ZhbHMpKQorICAgIHJldHVybiAtMTsKIAogICAvKiBDb3B5IGluIHRoZSBzdWJtaXR0ZWQg cGFja2V0LiAgWWVzLCB0aGUgY29weSBpcyBhIHdhc3RlOyB0aGlzIGlzCiAgICAgIHRoZSBsaWFi aWxpdHkgb2Ygb3Zlcmx5IGNsZWFuIGFic3RyYWN0aW9uIGZvciB0aGUgdGltZSBiZWluZy4gIEl0 CiAgICAgIHdpbGwgYWN0dWFsbHkgYmUgZmFpcmx5IGVhc3kgdG8gZWxpbWluYXRlIHRoZSBleHRy YSBjb3B5IGluIHRoZQogICAgICBmdXR1cmUgKi8KIAotICBtZW1jcHkob3MtPmJvZHlfZGF0YStv cy0+Ym9keV9maWxsLG9wLT5wYWNrZXQsb3AtPmJ5dGVzKTsKLSAgb3MtPmJvZHlfZmlsbCs9b3At PmJ5dGVzOworICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgIG1lbWNweShvcy0+ Ym9keV9kYXRhK29zLT5ib2R5X2ZpbGwsIGlvdltpXS5pb3ZfYmFzZSwgaW92W2ldLmlvdl9sZW4p OworICAgIG9zLT5ib2R5X2ZpbGwgKz0gKGludClpb3ZbaV0uaW92X2xlbjsKKyAgfQogCiAgIC8q IFN0b3JlIGxhY2luZyB2YWxzIGZvciB0aGlzIHBhY2tldCAqLwogICBmb3IoaT0wO2k8bGFjaW5n X3ZhbHMtMTtpKyspewogICAgIG9zLT5sYWNpbmdfdmFsc1tvcy0+bGFjaW5nX2ZpbGwraV09MjU1 OwogICAgIG9zLT5ncmFudWxlX3ZhbHNbb3MtPmxhY2luZ19maWxsK2ldPW9zLT5ncmFudWxlcG9z OwogICB9Ci0gIG9zLT5sYWNpbmdfdmFsc1tvcy0+bGFjaW5nX2ZpbGwraV09KG9wLT5ieXRlcykl MjU1OwotICBvcy0+Z3JhbnVsZXBvcz1vcy0+Z3JhbnVsZV92YWxzW29zLT5sYWNpbmdfZmlsbCtp XT1vcC0+Z3JhbnVsZXBvczsKKyAgb3MtPmxhY2luZ192YWxzW29zLT5sYWNpbmdfZmlsbCtpXT1i eXRlcyUyNTU7CisgIG9zLT5ncmFudWxlcG9zPW9zLT5ncmFudWxlX3ZhbHNbb3MtPmxhY2luZ19m aWxsK2ldPWdyYW51bGVwb3M7CiAKICAgLyogZmxhZyB0aGUgZmlyc3Qgc2VnbWVudCBhcyB0aGUg YmVnaW5uaW5nIG9mIHRoZSBwYWNrZXQgKi8KICAgb3MtPmxhY2luZ192YWxzW29zLT5sYWNpbmdf ZmlsbF18PSAweDEwMDsKQEAgLTMxMSw2MiArMzcyLDgxIEBAIGludCBvZ2dfc3RyZWFtX3BhY2tl dGluKG9nZ19zdHJlYW1fc3RhdGUKICAgLyogZm9yIHRoZSBzYWtlIG9mIGNvbXBsZXRlbmVzcyAq LwogICBvcy0+cGFja2V0bm8rKzsKIAotICBpZihvcC0+ZV9vX3Mpb3MtPmVfb19zPTE7CisgIGlm KGVfb19zKW9zLT5lX29fcz0xOwogCiAgIHJldHVybigwKTsKIH0KIAotLyogVGhpcyB3aWxsIGZs dXNoIHJlbWFpbmluZyBwYWNrZXRzIGludG8gYSBwYWdlIChyZXR1cm5pbmcgbm9uemVybyksCi0g ICBldmVuIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0YSB0byB0cmlnZ2VyIGEgZmx1c2ggbm9y bWFsbHkKLSAgICh1bmRlcnNpemVkIHBhZ2UpLiBJZiB0aGVyZSBhcmUgbm8gcGFja2V0cyBvciBw YXJ0aWFsIHBhY2tldHMgdG8KLSAgIGZsdXNoLCBvZ2dfc3RyZWFtX2ZsdXNoIHJldHVybnMgMC4g IE5vdGUgdGhhdCBvZ2dfc3RyZWFtX2ZsdXNoIHdpbGwKLSAgIHRyeSB0byBmbHVzaCBhIG5vcm1h bCBzaXplZCBwYWdlIGxpa2Ugb2dnX3N0cmVhbV9wYWdlb3V0OyBhIGNhbGwgdG8KLSAgIG9nZ19z dHJlYW1fZmx1c2ggZG9lcyBub3QgZ3VyYW50ZWUgdGhhdCBhbGwgcGFja2V0cyBoYXZlIGZsdXNo ZWQuCi0gICBPbmx5IGEgcmV0dXJuIHZhbHVlIG9mIDAgZnJvbSBvZ2dfc3RyZWFtX2ZsdXNoIGlu ZGljYXRlcyBhbGwgcGFja2V0Ci0gICBkYXRhIGlzIGZsdXNoZWQgaW50byBwYWdlcy4KK2ludCBv Z2dfc3RyZWFtX3BhY2tldGluKG9nZ19zdHJlYW1fc3RhdGUgKm9zLG9nZ19wYWNrZXQgKm9wKXsK KyAgb2dnX2lvdmVjX3QgaW92OworICBpb3YuaW92X2Jhc2UgPSBvcC0+cGFja2V0OworICBpb3Yu aW92X2xlbiA9IG9wLT5ieXRlczsKKyAgcmV0dXJuIG9nZ19zdHJlYW1faW92ZWNpbihvcywgJmlv diwgMSwgb3AtPmVfb19zLCBvcC0+Z3JhbnVsZXBvcyk7Cit9CiAKLSAgIG9nZ19zdHJlYW1fcGFn ZSB3aWxsIGZsdXNoIHRoZSBsYXN0IHBhZ2UgaW4gYSBzdHJlYW0gZXZlbiBpZiBpdCdzCi0gICB1 bmRlcnNpemVkOyB5b3UgYWxtb3N0IGNlcnRhaW5seSB3YW50IHRvIHVzZSBvZ2dfc3RyZWFtX3Bh Z2VvdXQKLSAgIChhbmQgKm5vdCogb2dnX3N0cmVhbV9mbHVzaCkgdW5sZXNzIHlvdSBuZWVkIHRv IGZsdXNoIGFuIHVuZGVyc2l6ZWQKLSAgIHBhZ2UgaW4gdGhlIG1pZGRsZSBvZiBhIHN0cmVhbSBm b3Igc29tZSByZWFzb24uICovCi0KLWludCBvZ2dfc3RyZWFtX2ZsdXNoKG9nZ19zdHJlYW1fc3Rh dGUgKm9zLG9nZ19wYWdlICpvZyl7CisvKiBDb25kaXRpb25hbGx5IGZsdXNoIGEgcGFnZTsgZm9y Y2U9PTAgd2lsbCBvbmx5IGZsdXNoIG5vbWluYWwtc2l6ZQorICAgcGFnZXMsIGZvcmNlPT0xIGZv cmNlcyB1cyB0byBmbHVzaCBhIHBhZ2UgcmVnYXJkbGVzcyBvZiBwYWdlIHNpemUKKyAgIHNvIGxv bmcgYXMgdGhlcmUncyBhbnkgZGF0YSBhdmFpbGFibGUgYXQgYWxsLiAqLworc3RhdGljIGludCBv Z2dfc3RyZWFtX2ZsdXNoX2kob2dnX3N0cmVhbV9zdGF0ZSAqb3Msb2dnX3BhZ2UgKm9nLCBpbnQg Zm9yY2UsIGludCBuZmlsbCl7CiAgIGludCBpOwogICBpbnQgdmFscz0wOwogICBpbnQgbWF4dmFs cz0ob3MtPmxhY2luZ19maWxsPjI1NT8yNTU6b3MtPmxhY2luZ19maWxsKTsKICAgaW50IGJ5dGVz PTA7CiAgIGxvbmcgYWNjPTA7Ci0gIG9nZ19pbnQ2NF90IGdyYW51bGVfcG9zPW9zLT5ncmFudWxl X3ZhbHNbMF07CisgIG9nZ19pbnQ2NF90IGdyYW51bGVfcG9zPS0xOwogCi0gIGlmKG1heHZhbHM9 PTApcmV0dXJuKDApOwotICAKKyAgaWYob2dnX3N0cmVhbV9jaGVjayhvcykpIHJldHVybigwKTsK KyAgaWYobWF4dmFscz09MCkgcmV0dXJuKDApOworCiAgIC8qIGNvbnN0cnVjdCBhIHBhZ2UgKi8K ICAgLyogZGVjaWRlIGhvdyBtYW55IHNlZ21lbnRzIHRvIGluY2x1ZGUgKi8KLSAgCisKICAgLyog SWYgdGhpcyBpcyB0aGUgaW5pdGlhbCBoZWFkZXIgY2FzZSwgdGhlIGZpcnN0IHBhZ2UgbXVzdCBv bmx5IGluY2x1ZGUKICAgICAgdGhlIGluaXRpYWwgaGVhZGVyIHBhY2tldCAqLwogICBpZihvcy0+ Yl9vX3M9PTApeyAgLyogJ2luaXRpYWwgaGVhZGVyIHBhZ2UnIGNhc2UgKi8KICAgICBncmFudWxl X3Bvcz0wOwogICAgIGZvcih2YWxzPTA7dmFsczxtYXh2YWxzO3ZhbHMrKyl7CiAgICAgICBpZigo b3MtPmxhY2luZ192YWxzW3ZhbHNdJjB4MGZmKTwyNTUpewotCXZhbHMrKzsKLQlicmVhazsKKyAg ICAgICAgdmFscysrOworICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9CiAgIH1lbHNlewor CisgICAgLyogVGhlIGV4dHJhIHBhY2tldHNfZG9uZSwgcGFja2V0X2p1c3RfZG9uZSBsb2dpYyBo ZXJlIGF0dGVtcHRzIHRvIGRvIHR3byB0aGluZ3M6CisgICAgICAgMSkgRG9uJ3QgdW5uZWNjZXNz YXJpbHkgc3BhbiBwYWdlcy4KKyAgICAgICAyKSBVbmxlc3MgbmVjZXNzYXJ5LCBkb24ndCBmbHVz aCBwYWdlcyBpZiB0aGVyZSBhcmUgbGVzcyB0aGFuIGZvdXIgcGFja2V0cyBvbgorICAgICAgICAg IHRoZW07IHRoaXMgZXhwYW5kcyBwYWdlIHNpemUgdG8gcmVkdWNlIHVubmVjY2Vzc2FyeSBvdmVy aGVhZCBpZiBpbmNvbWluZyBwYWNrZXRzCisgICAgICAgICAgYXJlIGxhcmdlLgorICAgICAgIFRo ZXNlIGFyZSBub3QgbmVjZXNzYXJ5IGJlaGF2aW9ycywganVzdCAnYWx3YXlzIGJldHRlciB0aGFu IG5haXZlIGZsdXNoaW5nJworICAgICAgIHdpdGhvdXQgcmVxdWlyaW5nIGFuIGFwcGxpY2F0aW9u IHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIHNwZWNpZmljIG9wdGltaXplZAorICAgICAgIGJlaGF2 aW9yLiBXZSdsbCB3YW50IGFuIGV4cGxpY2l0IGJlaGF2aW9yIHNldHVwIHBhdGh3YXkgZXZlbnR1 YWxseSBhcyB3ZWxsLiAqLworCisgICAgaW50IHBhY2tldHNfZG9uZT0wOworICAgIGludCBwYWNr ZXRfanVzdF9kb25lPTA7CiAgICAgZm9yKHZhbHM9MDt2YWxzPG1heHZhbHM7dmFscysrKXsKLSAg ICAgIGlmKGFjYz40MDk2KWJyZWFrOworICAgICAgaWYoYWNjPm5maWxsICYmIHBhY2tldF9qdXN0 X2RvbmU+PTQpeworICAgICAgICBmb3JjZT0xOworICAgICAgICBicmVhazsKKyAgICAgIH0KICAg ICAgIGFjYys9b3MtPmxhY2luZ192YWxzW3ZhbHNdJjB4MGZmOwotICAgICAgZ3JhbnVsZV9wb3M9 b3MtPmdyYW51bGVfdmFsc1t2YWxzXTsKKyAgICAgIGlmKChvcy0+bGFjaW5nX3ZhbHNbdmFsc10m MHhmZik8MjU1KXsKKyAgICAgICAgZ3JhbnVsZV9wb3M9b3MtPmdyYW51bGVfdmFsc1t2YWxzXTsK KyAgICAgICAgcGFja2V0X2p1c3RfZG9uZT0rK3BhY2tldHNfZG9uZTsKKyAgICAgIH1lbHNlCisg ICAgICAgIHBhY2tldF9qdXN0X2RvbmU9MDsKICAgICB9CisgICAgaWYodmFscz09MjU1KWZvcmNl PTE7CiAgIH0KLSAgCisKKyAgaWYoIWZvcmNlKSByZXR1cm4oMCk7CisKICAgLyogY29uc3RydWN0 IHRoZSBoZWFkZXIgaW4gdGVtcCBzdG9yYWdlICovCiAgIG1lbWNweShvcy0+aGVhZGVyLCJPZ2dT Iiw0KTsKLSAgCisKICAgLyogc3RyZWFtIHN0cnVjdHVyZSB2ZXJzaW9uICovCiAgIG9zLT5oZWFk ZXJbNF09MHgwMDsKLSAgCisKICAgLyogY29udGludWVkIHBhY2tldCBmbGFnPyAqLwogICBvcy0+ aGVhZGVyWzVdPTB4MDA7CiAgIGlmKChvcy0+bGFjaW5nX3ZhbHNbMF0mMHgxMDApPT0wKW9zLT5o ZWFkZXJbNV18PTB4MDE7CkBAIC0zNzgsNyArNDU4LDcgQEAgaW50IG9nZ19zdHJlYW1fZmx1c2go b2dnX3N0cmVhbV9zdGF0ZSAqbwogCiAgIC8qIDY0IGJpdHMgb2YgUENNIHBvc2l0aW9uICovCiAg IGZvcihpPTY7aTwxNDtpKyspewotICAgIG9zLT5oZWFkZXJbaV09KGdyYW51bGVfcG9zJjB4ZmYp OworICAgIG9zLT5oZWFkZXJbaV09KHVuc2lnbmVkIGNoYXIpKGdyYW51bGVfcG9zJjB4ZmYpOwog ICAgIGdyYW51bGVfcG9zPj49ODsKICAgfQogCkBAIC0zODYsNyArNDY2LDcgQEAgaW50IG9nZ19z dHJlYW1fZmx1c2gob2dnX3N0cmVhbV9zdGF0ZSAqbwogICB7CiAgICAgbG9uZyBzZXJpYWxubz1v cy0+c2VyaWFsbm87CiAgICAgZm9yKGk9MTQ7aTwxODtpKyspewotICAgICAgb3MtPmhlYWRlcltp XT0oc2VyaWFsbm8mMHhmZik7CisgICAgICBvcy0+aGVhZGVyW2ldPSh1bnNpZ25lZCBjaGFyKShz ZXJpYWxubyYweGZmKTsKICAgICAgIHNlcmlhbG5vPj49ODsKICAgICB9CiAgIH0KQEAgLTM5NCw3 MCArNDc0LDEwOCBAQCBpbnQgb2dnX3N0cmVhbV9mbHVzaChvZ2dfc3RyZWFtX3N0YXRlICpvCiAg IC8qIDMyIGJpdHMgb2YgcGFnZSBjb3VudGVyICh3ZSBoYXZlIGJvdGggY291bnRlciBhbmQgcGFn ZSBoZWFkZXIKICAgICAgYmVjYXVzZSB0aGlzIHZhbCBjYW4gcm9sbCBvdmVyKSAqLwogICBpZihv cy0+cGFnZW5vPT0tMSlvcy0+cGFnZW5vPTA7IC8qIGJlY2F1c2Ugc29tZW9uZSBjYWxsZWQKLQkJ CQkgICAgIHN0cmVhbV9yZXNldDsgdGhpcyB3b3VsZCBiZSBhCi0JCQkJICAgICBzdHJhbmdlIHRo aW5nIHRvIGRvIGluIGFuCi0JCQkJICAgICBlbmNvZGUgc3RyZWFtLCBidXQgaXQgaGFzCi0JCQkJ ICAgICBwbGF1c2libGUgdXNlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cmVhbV9yZXNldDsgdGhpcyB3b3VsZCBiZSBhCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyYW5nZSB0aGluZyB0byBkbyBpbiBhbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZSBzdHJlYW0sIGJ1dCBpdCBoYXMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF1c2libGUgdXNlcyAqLwogICB7CiAgICAg bG9uZyBwYWdlbm89b3MtPnBhZ2VubysrOwogICAgIGZvcihpPTE4O2k8MjI7aSsrKXsKLSAgICAg IG9zLT5oZWFkZXJbaV09KHBhZ2VubyYweGZmKTsKKyAgICAgIG9zLT5oZWFkZXJbaV09KHVuc2ln bmVkIGNoYXIpKHBhZ2VubyYweGZmKTsKICAgICAgIHBhZ2Vubz4+PTg7CiAgICAgfQogICB9Ci0g IAorCiAgIC8qIHplcm8gZm9yIGNvbXB1dGF0aW9uOyBmaWxsZWQgaW4gbGF0ZXIgKi8KICAgb3Mt PmhlYWRlclsyMl09MDsKICAgb3MtPmhlYWRlclsyM109MDsKICAgb3MtPmhlYWRlclsyNF09MDsK ICAgb3MtPmhlYWRlclsyNV09MDsKLSAgCisKICAgLyogc2VnbWVudCB0YWJsZSAqLwotICBvcy0+ aGVhZGVyWzI2XT12YWxzJjB4ZmY7CisgIG9zLT5oZWFkZXJbMjZdPSh1bnNpZ25lZCBjaGFyKSh2 YWxzJjB4ZmYpOwogICBmb3IoaT0wO2k8dmFscztpKyspCi0gICAgYnl0ZXMrPW9zLT5oZWFkZXJb aSsyN109KG9zLT5sYWNpbmdfdmFsc1tpXSYweGZmKTsKLSAgCisgICAgYnl0ZXMrPW9zLT5oZWFk ZXJbaSsyN109KHVuc2lnbmVkIGNoYXIpKG9zLT5sYWNpbmdfdmFsc1tpXSYweGZmKTsKKwogICAv KiBzZXQgcG9pbnRlcnMgaW4gdGhlIG9nZ19wYWdlIHN0cnVjdCAqLwogICBvZy0+aGVhZGVyPW9z LT5oZWFkZXI7CiAgIG9nLT5oZWFkZXJfbGVuPW9zLT5oZWFkZXJfZmlsbD12YWxzKzI3OwogICBv Zy0+Ym9keT1vcy0+Ym9keV9kYXRhK29zLT5ib2R5X3JldHVybmVkOwogICBvZy0+Ym9keV9sZW49 Ynl0ZXM7Ci0gIAorCiAgIC8qIGFkdmFuY2UgdGhlIGxhY2luZyBkYXRhIGFuZCBzZXQgdGhlIGJv ZHlfcmV0dXJuZWQgcG9pbnRlciAqLwotICAKKwogICBvcy0+bGFjaW5nX2ZpbGwtPXZhbHM7CiAg IG1lbW1vdmUob3MtPmxhY2luZ192YWxzLG9zLT5sYWNpbmdfdmFscyt2YWxzLG9zLT5sYWNpbmdf ZmlsbCpzaXplb2YoKm9zLT5sYWNpbmdfdmFscykpOwogICBtZW1tb3ZlKG9zLT5ncmFudWxlX3Zh bHMsb3MtPmdyYW51bGVfdmFscyt2YWxzLG9zLT5sYWNpbmdfZmlsbCpzaXplb2YoKm9zLT5ncmFu dWxlX3ZhbHMpKTsKICAgb3MtPmJvZHlfcmV0dXJuZWQrPWJ5dGVzOwotICAKKwogICAvKiBjYWxj dWxhdGUgdGhlIGNoZWNrc3VtICovCi0gIAorCiAgIG9nZ19wYWdlX2NoZWNrc3VtX3NldChvZyk7 CiAKICAgLyogZG9uZSAqLwogICByZXR1cm4oMSk7CiB9CiAKKy8qIFRoaXMgd2lsbCBmbHVzaCBy ZW1haW5pbmcgcGFja2V0cyBpbnRvIGEgcGFnZSAocmV0dXJuaW5nIG5vbnplcm8pLAorICAgZXZl biBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gdHJpZ2dlciBhIGZsdXNoIG5vcm1hbGx5 CisgICAodW5kZXJzaXplZCBwYWdlKS4gSWYgdGhlcmUgYXJlIG5vIHBhY2tldHMgb3IgcGFydGlh bCBwYWNrZXRzIHRvCisgICBmbHVzaCwgb2dnX3N0cmVhbV9mbHVzaCByZXR1cm5zIDAuICBOb3Rl IHRoYXQgb2dnX3N0cmVhbV9mbHVzaCB3aWxsCisgICB0cnkgdG8gZmx1c2ggYSBub3JtYWwgc2l6 ZWQgcGFnZSBsaWtlIG9nZ19zdHJlYW1fcGFnZW91dDsgYSBjYWxsIHRvCisgICBvZ2dfc3RyZWFt X2ZsdXNoIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBwYWNrZXRzIGhhdmUgZmx1c2hlZC4K KyAgIE9ubHkgYSByZXR1cm4gdmFsdWUgb2YgMCBmcm9tIG9nZ19zdHJlYW1fZmx1c2ggaW5kaWNh dGVzIGFsbCBwYWNrZXQKKyAgIGRhdGEgaXMgZmx1c2hlZCBpbnRvIHBhZ2VzLgorCisgICBzaW5j ZSBvZ2dfc3RyZWFtX2ZsdXNoIHdpbGwgZmx1c2ggdGhlIGxhc3QgcGFnZSBpbiBhIHN0cmVhbSBl dmVuIGlmCisgICBpdCdzIHVuZGVyc2l6ZWQsIHlvdSBhbG1vc3QgY2VydGFpbmx5IHdhbnQgdG8g dXNlIG9nZ19zdHJlYW1fcGFnZW91dAorICAgKGFuZCAqbm90KiBvZ2dfc3RyZWFtX2ZsdXNoKSB1 bmxlc3MgeW91IHNwZWNpZmljYWxseSBuZWVkIHRvIGZsdXNoCisgICBhIHBhZ2UgcmVnYXJkbGVz cyBvZiBzaXplIGluIHRoZSBtaWRkbGUgb2YgYSBzdHJlYW0uICovCisKK2ludCBvZ2dfc3RyZWFt X2ZsdXNoKG9nZ19zdHJlYW1fc3RhdGUgKm9zLG9nZ19wYWdlICpvZyl7CisgIHJldHVybiBvZ2df c3RyZWFtX2ZsdXNoX2kob3Msb2csMSw0MDk2KTsKK30KKworLyogTGlrZSB0aGUgYWJvdmUsIGJ1 dCBhbiBhcmd1bWVudCBpcyBwcm92aWRlZCB0byBhZGp1c3QgdGhlIG5vbWluYWwKKyAgIHBhZ2Ug c2l6ZSBmb3IgYXBwbGljYXRpb25zIHdoaWNoIGFyZSBzbWFydCBlbm91Z2ggdG8gcHJvdmlkZSB0 aGVpcgorICAgb3duIGRlbGF5IGJhc2VkIGZsdXNoaW5nICovCisKK2ludCBvZ2dfc3RyZWFtX2Zs dXNoX2ZpbGwob2dnX3N0cmVhbV9zdGF0ZSAqb3Msb2dnX3BhZ2UgKm9nLCBpbnQgbmZpbGwpewor ICByZXR1cm4gb2dnX3N0cmVhbV9mbHVzaF9pKG9zLG9nLDEsbmZpbGwpOworfQogCiAvKiBUaGlz IGNvbnN0cnVjdHMgcGFnZXMgZnJvbSBidWZmZXJlZCBwYWNrZXQgc2VnbWVudHMuICBUaGUgcG9p bnRlcnMKIHJldHVybmVkIGFyZSB0byBzdGF0aWMgYnVmZmVyczsgZG8gbm90IGZyZWUuIFRoZSBy ZXR1cm5lZCBidWZmZXJzIGFyZQogZ29vZCBvbmx5IHVudGlsIHRoZSBuZXh0IGNhbGwgKHVzaW5n IHRoZSBzYW1lIG9nZ19zdHJlYW1fc3RhdGUpICovCiAKIGludCBvZ2dfc3RyZWFtX3BhZ2VvdXQo b2dnX3N0cmVhbV9zdGF0ZSAqb3MsIG9nZ19wYWdlICpvZyl7CisgIGludCBmb3JjZT0wOworICBp ZihvZ2dfc3RyZWFtX2NoZWNrKG9zKSkgcmV0dXJuIDA7CiAKICAgaWYoKG9zLT5lX29fcyYmb3Mt PmxhY2luZ19maWxsKSB8fCAgICAgICAgICAvKiAnd2VyZSBkb25lLCBub3cgZmx1c2gnIGNhc2Ug Ki8KLSAgICAgb3MtPmJvZHlfZmlsbC1vcy0+Ym9keV9yZXR1cm5lZCA+IDQwOTYgfHwvKiAncGFn ZSBub21pbmFsIHNpemUnIGNhc2UgKi8KLSAgICAgb3MtPmxhY2luZ19maWxsPj0yNTUgfHwgICAg ICAgICAgICAgICAgICAvKiAnc2VnbWVudCB0YWJsZSBmdWxsJyBjYXNlICovCi0gICAgIChvcy0+ bGFjaW5nX2ZpbGwmJiFvcy0+Yl9vX3MpKXsgICAgICAgICAgLyogJ2luaXRpYWwgaGVhZGVyIHBh Z2UnIGNhc2UgKi8KLSAgICAgICAgCi0gICAgcmV0dXJuKG9nZ19zdHJlYW1fZmx1c2gob3Msb2cp KTsKLSAgfQotICAKLSAgLyogbm90IGVub3VnaCBkYXRhIHRvIGNvbnN0cnVjdCBhIHBhZ2UgYW5k IG5vdCBlbmQgb2Ygc3RyZWFtICovCi0gIHJldHVybigwKTsKKyAgICAgKG9zLT5sYWNpbmdfZmls bCYmIW9zLT5iX29fcykpICAgICAgICAgICAvKiAnaW5pdGlhbCBoZWFkZXIgcGFnZScgY2FzZSAq LworICAgIGZvcmNlPTE7CisKKyAgcmV0dXJuKG9nZ19zdHJlYW1fZmx1c2hfaShvcyxvZyxmb3Jj ZSw0MDk2KSk7Cit9CisKKy8qIExpa2UgdGhlIGFib3ZlLCBidXQgYW4gYXJndW1lbnQgaXMgcHJv dmlkZWQgdG8gYWRqdXN0IHRoZSBub21pbmFsCitwYWdlIHNpemUgZm9yIGFwcGxpY2F0aW9ucyB3 aGljaCBhcmUgc21hcnQgZW5vdWdoIHRvIHByb3ZpZGUgdGhlaXIKK293biBkZWxheSBiYXNlZCBm bHVzaGluZyAqLworCitpbnQgb2dnX3N0cmVhbV9wYWdlb3V0X2ZpbGwob2dnX3N0cmVhbV9zdGF0 ZSAqb3MsIG9nZ19wYWdlICpvZywgaW50IG5maWxsKXsKKyAgaW50IGZvcmNlPTA7CisgIGlmKG9n Z19zdHJlYW1fY2hlY2sob3MpKSByZXR1cm4gMDsKKworICBpZigob3MtPmVfb19zJiZvcy0+bGFj aW5nX2ZpbGwpIHx8ICAgICAgICAgIC8qICd3ZXJlIGRvbmUsIG5vdyBmbHVzaCcgY2FzZSAqLwor ICAgICAob3MtPmxhY2luZ19maWxsJiYhb3MtPmJfb19zKSkgICAgICAgICAgIC8qICdpbml0aWFs IGhlYWRlciBwYWdlJyBjYXNlICovCisgICAgZm9yY2U9MTsKKworICByZXR1cm4ob2dnX3N0cmVh bV9mbHVzaF9pKG9zLG9nLGZvcmNlLG5maWxsKSk7CiB9CiAKIGludCBvZ2dfc3RyZWFtX2Vvcyhv Z2dfc3RyZWFtX3N0YXRlICpvcyl7CisgIGlmKG9nZ19zdHJlYW1fY2hlY2sob3MpKSByZXR1cm4g MTsKICAgcmV0dXJuIG9zLT5lX29fczsKIH0KIApAQCAtNDc0LDEyICs1OTIsMTIgQEAgaW50IG9n Z19zdHJlYW1fZW9zKG9nZ19zdHJlYW1fc3RhdGUgKm9zKQogICAgb2dnX3N0cmVhbV9wYWdlaW4o KSBhbG9uZyB3aXRoIHRoZSBhcHByb3ByaWF0ZQogICAgb2dnX3N0cmVhbV9zdGF0ZSogKGllLCBt YXRjaGluZyBzZXJpYWxubykuICBXZSB0aGVuIGdldCByYXcKICAgIHBhY2tldHMgb3V0IGNhbGxp bmcgb2dnX3N0cmVhbV9wYWNrZXRvdXQoKSB3aXRoIGEKLSAgIG9nZ19zdHJlYW1fc3RhdGUuICBT ZWUgdGhlICdmcmFtZS1wcm9nLnR4dCcgZG9jcyBmb3IgZGV0YWlscyBhbmQKLSAgIGV4YW1wbGUg Y29kZS4gKi8KKyAgIG9nZ19zdHJlYW1fc3RhdGUuICovCiAKIC8qIGluaXRpYWxpemUgdGhlIHN0 cnVjdCB0byBhIGtub3duIHN0YXRlICovCiBpbnQgb2dnX3N5bmNfaW5pdChvZ2dfc3luY19zdGF0 ZSAqb3kpewogICBpZihveSl7CisgICAgb3ktPnN0b3JhZ2UgPSAtMTsgLyogdXNlZCBhcyBhIHJl YWRpbmVzcyBmbGFnICovCiAgICAgbWVtc2V0KG95LDAsc2l6ZW9mKCpveSkpOwogICB9CiAgIHJl dHVybigwKTsKQEAgLTQ4OSw3ICs2MDcsNyBAQCBpbnQgb2dnX3N5bmNfaW5pdChvZ2dfc3luY19z dGF0ZSAqb3kpewogaW50IG9nZ19zeW5jX2NsZWFyKG9nZ19zeW5jX3N0YXRlICpveSl7CiAgIGlm KG95KXsKICAgICBpZihveS0+ZGF0YSlfb2dnX2ZyZWUob3ktPmRhdGEpOwotICAgIG9nZ19zeW5j X2luaXQob3kpOworICAgIG1lbXNldChveSwwLHNpemVvZigqb3kpKTsKICAgfQogICByZXR1cm4o MCk7CiB9CkBAIC01MDIsNyArNjIwLDEzIEBAIGludCBvZ2dfc3luY19kZXN0cm95KG9nZ19zeW5j X3N0YXRlICpveSkKICAgcmV0dXJuKDApOwogfQogCitpbnQgb2dnX3N5bmNfY2hlY2sob2dnX3N5 bmNfc3RhdGUgKm95KXsKKyAgaWYob3ktPnN0b3JhZ2U8MCkgcmV0dXJuIC0xOworICByZXR1cm4g MDsKK30KKwogY2hhciAqb2dnX3N5bmNfYnVmZmVyKG9nZ19zeW5jX3N0YXRlICpveSwgbG9uZyBz aXplKXsKKyAgaWYob2dnX3N5bmNfY2hlY2sob3kpKSByZXR1cm4gTlVMTDsKIAogICAvKiBmaXJz dCwgY2xlYXIgb3V0IGFueSBzcGFjZSB0aGF0IGhhcyBiZWVuIHByZXZpb3VzbHkgcmV0dXJuZWQg Ki8KICAgaWYob3ktPnJldHVybmVkKXsKQEAgLTUxNSwxMSArNjM5LDE3IEBAIGNoYXIgKm9nZ19z eW5jX2J1ZmZlcihvZ2dfc3luY19zdGF0ZSAqb3kKICAgaWYoc2l6ZT5veS0+c3RvcmFnZS1veS0+ ZmlsbCl7CiAgICAgLyogV2UgbmVlZCB0byBleHRlbmQgdGhlIGludGVybmFsIGJ1ZmZlciAqLwog ICAgIGxvbmcgbmV3c2l6ZT1zaXplK295LT5maWxsKzQwOTY7IC8qIGFuIGV4dHJhIHBhZ2UgdG8g YmUgbmljZSAqLworICAgIHZvaWQgKnJldDsKIAogICAgIGlmKG95LT5kYXRhKQotICAgICAgb3kt PmRhdGE9X29nZ19yZWFsbG9jKG95LT5kYXRhLG5ld3NpemUpOworICAgICAgcmV0PV9vZ2dfcmVh bGxvYyhveS0+ZGF0YSxuZXdzaXplKTsKICAgICBlbHNlCi0gICAgICBveS0+ZGF0YT1fb2dnX21h bGxvYyhuZXdzaXplKTsKKyAgICAgIHJldD1fb2dnX21hbGxvYyhuZXdzaXplKTsKKyAgICBpZigh cmV0KXsKKyAgICAgIG9nZ19zeW5jX2NsZWFyKG95KTsKKyAgICAgIHJldHVybiBOVUxMOworICAg IH0KKyAgICBveS0+ZGF0YT1yZXQ7CiAgICAgb3ktPnN0b3JhZ2U9bmV3c2l6ZTsKICAgfQogCkBA IC01MjgsNyArNjU4LDggQEAgY2hhciAqb2dnX3N5bmNfYnVmZmVyKG9nZ19zeW5jX3N0YXRlICpv eQogfQogCiBpbnQgb2dnX3N5bmNfd3JvdGUob2dnX3N5bmNfc3RhdGUgKm95LCBsb25nIGJ5dGVz KXsKLSAgaWYob3ktPmZpbGwrYnl0ZXM+b3ktPnN0b3JhZ2UpcmV0dXJuKC0xKTsKKyAgaWYob2dn X3N5bmNfY2hlY2sob3kpKXJldHVybiAtMTsKKyAgaWYob3ktPmZpbGwrYnl0ZXM+b3ktPnN0b3Jh Z2UpcmV0dXJuIC0xOwogICBveS0+ZmlsbCs9Ynl0ZXM7CiAgIHJldHVybigwKTsKIH0KQEAgLTU0 MCw2MSArNjcxLDYzIEBAIGludCBvZ2dfc3luY193cm90ZShvZ2dfc3luY19zdGF0ZSAqb3ksIGwK ICAgLW4pIHNraXBwZWQgbiBieXRlcwogICAgMCkgcGFnZSBub3QgcmVhZHk7IG1vcmUgZGF0YSAo bm8gYnl0ZXMgc2tpcHBlZCkKICAgIG4pIHBhZ2Ugc3luY2VkIGF0IGN1cnJlbnQgbG9jYXRpb247 IHBhZ2UgbGVuZ3RoIG4gYnl0ZXMKLSAgIAorCiAqLwogCiBsb25nIG9nZ19zeW5jX3BhZ2VzZWVr KG9nZ19zeW5jX3N0YXRlICpveSxvZ2dfcGFnZSAqb2cpewogICB1bnNpZ25lZCBjaGFyICpwYWdl PW95LT5kYXRhK295LT5yZXR1cm5lZDsKICAgdW5zaWduZWQgY2hhciAqbmV4dDsKICAgbG9uZyBi eXRlcz1veS0+ZmlsbC1veS0+cmV0dXJuZWQ7Ci0gIAorCisgIGlmKG9nZ19zeW5jX2NoZWNrKG95 KSlyZXR1cm4gMDsKKwogICBpZihveS0+aGVhZGVyYnl0ZXM9PTApewogICAgIGludCBoZWFkZXJi eXRlcyxpOwogICAgIGlmKGJ5dGVzPDI3KXJldHVybigwKTsgLyogbm90IGVub3VnaCBmb3IgYSBo ZWFkZXIgKi8KLSAgICAKKwogICAgIC8qIHZlcmlmeSBjYXB0dXJlIHBhdHRlcm4gKi8KICAgICBp ZihtZW1jbXAocGFnZSwiT2dnUyIsNCkpZ290byBzeW5jX2ZhaWw7Ci0gICAgCisKICAgICBoZWFk ZXJieXRlcz1wYWdlWzI2XSsyNzsKICAgICBpZihieXRlczxoZWFkZXJieXRlcylyZXR1cm4oMCk7 IC8qIG5vdCBlbm91Z2ggZm9yIGhlYWRlciArIHNlZyB0YWJsZSAqLwotICAgIAorCiAgICAgLyog Y291bnQgdXAgYm9keSBsZW5ndGggaW4gdGhlIHNlZ21lbnQgdGFibGUgKi8KLSAgICAKKwogICAg IGZvcihpPTA7aTxwYWdlWzI2XTtpKyspCiAgICAgICBveS0+Ym9keWJ5dGVzKz1wYWdlWzI3K2ld OwogICAgIG95LT5oZWFkZXJieXRlcz1oZWFkZXJieXRlczsKICAgfQotICAKKwogICBpZihveS0+ Ym9keWJ5dGVzK295LT5oZWFkZXJieXRlcz5ieXRlcylyZXR1cm4oMCk7Ci0gIAorCiAgIC8qIFRo ZSB3aG9sZSB0ZXN0IHBhZ2UgaXMgYnVmZmVyZWQuICBWZXJpZnkgdGhlIGNoZWNrc3VtICovCiAg IHsKICAgICAvKiBHcmFiIHRoZSBjaGVja3N1bSBieXRlcywgc2V0IHRoZSBoZWFkZXIgZmllbGQg dG8gemVybyAqLwogICAgIGNoYXIgY2hrc3VtWzRdOwogICAgIG9nZ19wYWdlIGxvZzsKLSAgICAK KwogICAgIG1lbWNweShjaGtzdW0scGFnZSsyMiw0KTsKICAgICBtZW1zZXQocGFnZSsyMiwwLDQp OwotICAgIAorCiAgICAgLyogc2V0IHVwIGEgdGVtcCBwYWdlIHN0cnVjdCBhbmQgcmVjb21wdXRl IHRoZSBjaGVja3N1bSAqLwogICAgIGxvZy5oZWFkZXI9cGFnZTsKICAgICBsb2cuaGVhZGVyX2xl bj1veS0+aGVhZGVyYnl0ZXM7CiAgICAgbG9nLmJvZHk9cGFnZStveS0+aGVhZGVyYnl0ZXM7CiAg ICAgbG9nLmJvZHlfbGVuPW95LT5ib2R5Ynl0ZXM7CiAgICAgb2dnX3BhZ2VfY2hlY2tzdW1fc2V0 KCZsb2cpOwotICAgIAorCiAgICAgLyogQ29tcGFyZSAqLwogICAgIGlmKG1lbWNtcChjaGtzdW0s cGFnZSsyMiw0KSl7CiAgICAgICAvKiBEJ29oLiAgTWlzbWF0Y2ghIENvcnJ1cHQgcGFnZSAob3Ig bWlzY2FwdHVyZSBhbmQgbm90IGEgcGFnZQotCSBhdCBhbGwpICovCisgICAgICAgICBhdCBhbGwp ICovCiAgICAgICAvKiByZXBsYWNlIHRoZSBjb21wdXRlZCBjaGVja3N1bSB3aXRoIHRoZSBvbmUg YWN0dWFsbHkgcmVhZCBpbiAqLwogICAgICAgbWVtY3B5KHBhZ2UrMjIsY2hrc3VtLDQpOwotICAg ICAgCisKICAgICAgIC8qIEJhZCBjaGVja3N1bS4gTG9zZSBzeW5jICovCiAgICAgICBnb3RvIHN5 bmNfZmFpbDsKICAgICB9CiAgIH0KLSAgCisKICAgLyogeWVzLCBoYXZlIGEgd2hvbGUgcGFnZSBh bGwgcmVhZHkgdG8gZ28gKi8KICAgewogICAgIHVuc2lnbmVkIGNoYXIgKnBhZ2U9b3ktPmRhdGEr b3ktPnJldHVybmVkOwpAQCAtNjEzLDIzICs3NDYsMjMgQEAgbG9uZyBvZ2dfc3luY19wYWdlc2Vl ayhvZ2dfc3luY19zdGF0ZSAqbwogICAgIG95LT5ib2R5Ynl0ZXM9MDsKICAgICByZXR1cm4oYnl0 ZXMpOwogICB9Ci0gIAorCiAgc3luY19mYWlsOgotICAKKwogICBveS0+aGVhZGVyYnl0ZXM9MDsK ICAgb3ktPmJvZHlieXRlcz0wOwotICAKKwogICAvKiBzZWFyY2ggZm9yIHBvc3NpYmxlIGNhcHR1 cmUgKi8KICAgbmV4dD1tZW1jaHIocGFnZSsxLCdPJyxieXRlcy0xKTsKICAgaWYoIW5leHQpCiAg ICAgbmV4dD1veS0+ZGF0YStveS0+ZmlsbDsKIAotICBveS0+cmV0dXJuZWQ9bmV4dC1veS0+ZGF0 YTsKLSAgcmV0dXJuKC0obmV4dC1wYWdlKSk7CisgIG95LT5yZXR1cm5lZD0oaW50KShuZXh0LW95 LT5kYXRhKTsKKyAgcmV0dXJuKChsb25nKS0obmV4dC1wYWdlKSk7CiB9CiAKIC8qIHN5bmMgdGhl IHN0cmVhbSBhbmQgZ2V0IGEgcGFnZS4gIEtlZXAgdHJ5aW5nIHVudGlsIHdlIGZpbmQgYSBwYWdl LgotICAgU3VwcmVzcyAnc3luYyBlcnJvcnMnIGFmdGVyIHJlcG9ydGluZyB0aGUgZmlyc3QuCisg ICBTdXBwcmVzcyAnc3luYyBlcnJvcnMnIGFmdGVyIHJlcG9ydGluZyB0aGUgZmlyc3QuCiAKICAg IHJldHVybiB2YWx1ZXM6CiAgICAtMSkgcmVjYXB0dXJlIChob2xlIGluIGRhdGEpCkBAIC02NDEs MTEgKzc3NCwxMyBAQCBsb25nIG9nZ19zeW5jX3BhZ2VzZWVrKG9nZ19zeW5jX3N0YXRlICpvCiAK IGludCBvZ2dfc3luY19wYWdlb3V0KG9nZ19zeW5jX3N0YXRlICpveSwgb2dnX3BhZ2UgKm9nKXsK IAorICBpZihvZ2dfc3luY19jaGVjayhveSkpcmV0dXJuIDA7CisKICAgLyogYWxsIHdlIG5lZWQg dG8gZG8gaXMgdmVyaWZ5IGEgcGFnZSBhdCB0aGUgaGVhZCBvZiB0aGUgc3RyZWFtCiAgICAgIGJ1 ZmZlci4gIElmIGl0IGRvZXNuJ3QgdmVyaWZ5LCB3ZSBsb29rIGZvciB0aGUgbmV4dCBwb3RlbnRp YWwKICAgICAgZnJhbWUgKi8KIAotICB3aGlsZSgxKXsKKyAgZm9yKDs7KXsKICAgICBsb25nIHJl dD1vZ2dfc3luY19wYWdlc2VlayhveSxvZyk7CiAgICAgaWYocmV0PjApewogICAgICAgLyogaGF2 ZSBhIHBhZ2UgKi8KQEAgLTY1NSw3ICs3OTAsNyBAQCBpbnQgb2dnX3N5bmNfcGFnZW91dChvZ2df c3luY19zdGF0ZSAqb3ksCiAgICAgICAvKiBuZWVkIG1vcmUgZGF0YSAqLwogICAgICAgcmV0dXJu KDApOwogICAgIH0KLSAgICAKKwogICAgIC8qIGhlYWQgZGlkIG5vdCBzdGFydCBhIHN5bmNlZCBw YWdlLi4uIHNraXBwZWQgc29tZSBieXRlcyAqLwogICAgIGlmKCFveS0+dW5zeW5jZWQpewogICAg ICAgb3ktPnVuc3luY2VkPTE7CkBAIC02ODQsNyArODE5LDkgQEAgaW50IG9nZ19zdHJlYW1fcGFn ZWluKG9nZ19zdHJlYW1fc3RhdGUgKgogICBpbnQgc2VyaWFsbm89b2dnX3BhZ2Vfc2VyaWFsbm8o b2cpOwogICBsb25nIHBhZ2Vubz1vZ2dfcGFnZV9wYWdlbm8ob2cpOwogICBpbnQgc2VnbWVudHM9 aGVhZGVyWzI2XTsKLSAgCisKKyAgaWYob2dnX3N0cmVhbV9jaGVjayhvcykpIHJldHVybiAtMTsK KwogICAvKiBjbGVhbiB1cCAncmV0dXJuZWQgZGF0YScgKi8KICAgewogICAgIGxvbmcgbHI9b3Mt PmxhY2luZ19yZXR1cm5lZDsKQEAgLTY5NCwxNyArODMxLDE3IEBAIGludCBvZ2dfc3RyZWFtX3Bh Z2VpbihvZ2dfc3RyZWFtX3N0YXRlICoKICAgICBpZihicil7CiAgICAgICBvcy0+Ym9keV9maWxs LT1icjsKICAgICAgIGlmKG9zLT5ib2R5X2ZpbGwpCi0JbWVtbW92ZShvcy0+Ym9keV9kYXRhLG9z LT5ib2R5X2RhdGErYnIsb3MtPmJvZHlfZmlsbCk7CisgICAgICAgIG1lbW1vdmUob3MtPmJvZHlf ZGF0YSxvcy0+Ym9keV9kYXRhK2JyLG9zLT5ib2R5X2ZpbGwpOwogICAgICAgb3MtPmJvZHlfcmV0 dXJuZWQ9MDsKICAgICB9CiAKICAgICBpZihscil7CiAgICAgICAvKiBzZWdtZW50IHRhYmxlICov CiAgICAgICBpZihvcy0+bGFjaW5nX2ZpbGwtbHIpewotCW1lbW1vdmUob3MtPmxhY2luZ192YWxz LG9zLT5sYWNpbmdfdmFscytsciwKLQkJKG9zLT5sYWNpbmdfZmlsbC1scikqc2l6ZW9mKCpvcy0+ bGFjaW5nX3ZhbHMpKTsKLQltZW1tb3ZlKG9zLT5ncmFudWxlX3ZhbHMsb3MtPmdyYW51bGVfdmFs cytsciwKLQkJKG9zLT5sYWNpbmdfZmlsbC1scikqc2l6ZW9mKCpvcy0+Z3JhbnVsZV92YWxzKSk7 CisgICAgICAgIG1lbW1vdmUob3MtPmxhY2luZ192YWxzLG9zLT5sYWNpbmdfdmFscytsciwKKyAg ICAgICAgICAgICAgICAob3MtPmxhY2luZ19maWxsLWxyKSpzaXplb2YoKm9zLT5sYWNpbmdfdmFs cykpOworICAgICAgICBtZW1tb3ZlKG9zLT5ncmFudWxlX3ZhbHMsb3MtPmdyYW51bGVfdmFscyts ciwKKyAgICAgICAgICAgICAgICAob3MtPmxhY2luZ19maWxsLWxyKSpzaXplb2YoKm9zLT5ncmFu dWxlX3ZhbHMpKTsKICAgICAgIH0KICAgICAgIG9zLT5sYWNpbmdfZmlsbC09bHI7CiAgICAgICBv cy0+bGFjaW5nX3BhY2tldC09bHI7CkBAIC03MTYsNyArODUzLDcgQEAgaW50IG9nZ19zdHJlYW1f cGFnZWluKG9nZ19zdHJlYW1fc3RhdGUgKgogICBpZihzZXJpYWxubyE9b3MtPnNlcmlhbG5vKXJl dHVybigtMSk7CiAgIGlmKHZlcnNpb24+MClyZXR1cm4oLTEpOwogCi0gIF9vc19sYWNpbmdfZXhw YW5kKG9zLHNlZ21lbnRzKzEpOworICBpZihfb3NfbGFjaW5nX2V4cGFuZChvcyxzZWdtZW50cysx KSkgcmV0dXJuIC0xOwogCiAgIC8qIGFyZSB3ZSBpbiBzZXF1ZW5jZT8gKi8KICAgaWYocGFnZW5v IT1vcy0+cGFnZW5vKXsKQEAgLTczMiwyNSArODY5LDI5IEBAIGludCBvZ2dfc3RyZWFtX3BhZ2Vp bihvZ2dfc3RyZWFtX3N0YXRlICoKICAgICAgIG9zLT5sYWNpbmdfdmFsc1tvcy0+bGFjaW5nX2Zp bGwrK109MHg0MDA7CiAgICAgICBvcy0+bGFjaW5nX3BhY2tldCsrOwogICAgIH0KKyAgfQogCi0g ICAgLyogYXJlIHdlIGEgJ2NvbnRpbnVlZCBwYWNrZXQnIHBhZ2U/ICBJZiBzbywgd2UnbGwgbmVl ZCB0byBza2lwCi0gICAgICAgc29tZSBzZWdtZW50cyAqLwotICAgIGlmKGNvbnRpbnVlZCl7Cisg IC8qIGFyZSB3ZSBhICdjb250aW51ZWQgcGFja2V0JyBwYWdlPyAgSWYgc28sIHdlIG1heSBuZWVk IHRvIHNraXAKKyAgICAgc29tZSBzZWdtZW50cyAqLworICBpZihjb250aW51ZWQpeworICAgIGlm KG9zLT5sYWNpbmdfZmlsbDwxIHx8CisgICAgICAgKG9zLT5sYWNpbmdfdmFsc1tvcy0+bGFjaW5n X2ZpbGwtMV0mMHhmZik8MjU1IHx8CisgICAgICAgb3MtPmxhY2luZ192YWxzW29zLT5sYWNpbmdf ZmlsbC0xXT09MHg0MDApewogICAgICAgYm9zPTA7CiAgICAgICBmb3IoO3NlZ3B0cjxzZWdtZW50 cztzZWdwdHIrKyl7Ci0JaW50IHZhbD1oZWFkZXJbMjcrc2VncHRyXTsKLQlib2R5Kz12YWw7Ci0J Ym9keXNpemUtPXZhbDsKLQlpZih2YWw8MjU1KXsKLQkgIHNlZ3B0cisrOwotCSAgYnJlYWs7Ci0J fQorICAgICAgICBpbnQgdmFsPWhlYWRlclsyNytzZWdwdHJdOworICAgICAgICBib2R5Kz12YWw7 CisgICAgICAgIGJvZHlzaXplLT12YWw7CisgICAgICAgIGlmKHZhbDwyNTUpeworICAgICAgICAg IHNlZ3B0cisrOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICB9CiAgICAgfQog ICB9Ci0gIAorCiAgIGlmKGJvZHlzaXplKXsKLSAgICBfb3NfYm9keV9leHBhbmQob3MsYm9keXNp emUpOworICAgIGlmKF9vc19ib2R5X2V4cGFuZChvcyxib2R5c2l6ZSkpIHJldHVybiAtMTsKICAg ICBtZW1jcHkob3MtPmJvZHlfZGF0YStvcy0+Ym9keV9maWxsLGJvZHksYm9keXNpemUpOwogICAg IG9zLT5ib2R5X2ZpbGwrPWJvZHlzaXplOwogICB9CkBAIC03NjEsMjAgKzkwMiwyMCBAQCBpbnQg b2dnX3N0cmVhbV9wYWdlaW4ob2dnX3N0cmVhbV9zdGF0ZSAqCiAgICAgICBpbnQgdmFsPWhlYWRl clsyNytzZWdwdHJdOwogICAgICAgb3MtPmxhY2luZ192YWxzW29zLT5sYWNpbmdfZmlsbF09dmFs OwogICAgICAgb3MtPmdyYW51bGVfdmFsc1tvcy0+bGFjaW5nX2ZpbGxdPS0xOwotICAgICAgCisK ICAgICAgIGlmKGJvcyl7Ci0Jb3MtPmxhY2luZ192YWxzW29zLT5sYWNpbmdfZmlsbF18PTB4MTAw OwotCWJvcz0wOworICAgICAgICBvcy0+bGFjaW5nX3ZhbHNbb3MtPmxhY2luZ19maWxsXXw9MHgx MDA7CisgICAgICAgIGJvcz0wOwogICAgICAgfQotICAgICAgCisKICAgICAgIGlmKHZhbDwyNTUp c2F2ZWQ9b3MtPmxhY2luZ19maWxsOwotICAgICAgCisKICAgICAgIG9zLT5sYWNpbmdfZmlsbCsr OwogICAgICAgc2VncHRyKys7Ci0gICAgICAKKwogICAgICAgaWYodmFsPDI1NSlvcy0+bGFjaW5n X3BhY2tldD1vcy0+bGFjaW5nX2ZpbGw7CiAgICAgfQotICAKKwogICAgIC8qIHNldCB0aGUgZ3Jh bnVsZXBvcyBvbiB0aGUgbGFzdCBncmFudWxldmFsIG9mIHRoZSBsYXN0IGZ1bGwgcGFja2V0ICov CiAgICAgaWYoc2F2ZWQhPS0xKXsKICAgICAgIG9zLT5ncmFudWxlX3ZhbHNbc2F2ZWRdPWdyYW51 bGVwb3M7CkBAIC03OTUsNiArOTM2LDggQEAgaW50IG9nZ19zdHJlYW1fcGFnZWluKG9nZ19zdHJl YW1fc3RhdGUgKgogCiAvKiBjbGVhciB0aGluZ3MgdG8gYW4gaW5pdGlhbCBzdGF0ZS4gIEdvb2Qg dG8gY2FsbCwgZWcsIGJlZm9yZSBzZWVraW5nICovCiBpbnQgb2dnX3N5bmNfcmVzZXQob2dnX3N5 bmNfc3RhdGUgKm95KXsKKyAgaWYob2dnX3N5bmNfY2hlY2sob3kpKXJldHVybiAtMTsKKwogICBv eS0+ZmlsbD0wOwogICBveS0+cmV0dXJuZWQ9MDsKICAgb3ktPnVuc3luY2VkPTA7CkBAIC04MDQs NiArOTQ3LDggQEAgaW50IG9nZ19zeW5jX3Jlc2V0KG9nZ19zeW5jX3N0YXRlICpveSl7CiB9CiAK IGludCBvZ2dfc3RyZWFtX3Jlc2V0KG9nZ19zdHJlYW1fc3RhdGUgKm9zKXsKKyAgaWYob2dnX3N0 cmVhbV9jaGVjayhvcykpIHJldHVybiAtMTsKKwogICBvcy0+Ym9keV9maWxsPTA7CiAgIG9zLT5i b2R5X3JldHVybmVkPTA7CiAKQEAgLTgyMyw2ICs5NjgsNyBAQCBpbnQgb2dnX3N0cmVhbV9yZXNl dChvZ2dfc3RyZWFtX3N0YXRlICpvCiB9CiAKIGludCBvZ2dfc3RyZWFtX3Jlc2V0X3NlcmlhbG5v KG9nZ19zdHJlYW1fc3RhdGUgKm9zLGludCBzZXJpYWxubyl7CisgIGlmKG9nZ19zdHJlYW1fY2hl Y2sob3MpKSByZXR1cm4gLTE7CiAgIG9nZ19zdHJlYW1fcmVzZXQob3MpOwogICBvcy0+c2VyaWFs bm89c2VyaWFsbm87CiAgIHJldHVybigwKTsKQEAgLTg1Myw3ICs5OTksNyBAQCBzdGF0aWMgaW50 IF9wYWNrZXRvdXQob2dnX3N0cmVhbV9zdGF0ZSAqCiAgIC8qIEdhdGhlciB0aGUgd2hvbGUgcGFj a2V0LiBXZSdsbCBoYXZlIG5vIGhvbGVzIG9yIGEgcGFydGlhbCBwYWNrZXQgKi8KICAgewogICAg IGludCBzaXplPW9zLT5sYWNpbmdfdmFsc1twdHJdJjB4ZmY7Ci0gICAgaW50IGJ5dGVzPXNpemU7 CisgICAgbG9uZyBieXRlcz1zaXplOwogICAgIGludCBlb3M9b3MtPmxhY2luZ192YWxzW3B0cl0m MHgyMDA7IC8qIGxhc3QgcGFja2V0IG9mIHRoZSBzdHJlYW0/ICovCiAgICAgaW50IGJvcz1vcy0+ bGFjaW5nX3ZhbHNbcHRyXSYweDEwMDsgLyogZmlyc3QgcGFja2V0IG9mIHRoZSBzdHJlYW0/ICov CiAKQEAgLTg4MywxMCArMTAyOSwxMiBAQCBzdGF0aWMgaW50IF9wYWNrZXRvdXQob2dnX3N0cmVh bV9zdGF0ZSAqCiB9CiAKIGludCBvZ2dfc3RyZWFtX3BhY2tldG91dChvZ2dfc3RyZWFtX3N0YXRl ICpvcyxvZ2dfcGFja2V0ICpvcCl7CisgIGlmKG9nZ19zdHJlYW1fY2hlY2sob3MpKSByZXR1cm4g MDsKICAgcmV0dXJuIF9wYWNrZXRvdXQob3Msb3AsMSk7CiB9CiAKIGludCBvZ2dfc3RyZWFtX3Bh Y2tldHBlZWsob2dnX3N0cmVhbV9zdGF0ZSAqb3Msb2dnX3BhY2tldCAqb3ApeworICBpZihvZ2df c3RyZWFtX2NoZWNrKG9zKSkgcmV0dXJuIDA7CiAgIHJldHVybiBfcGFja2V0b3V0KG9zLG9wLDAp OwogfQogCkBAIC05MDEsMTcgKzEwNDksMTcgQEAgdm9pZCBvZ2dfcGFja2V0X2NsZWFyKG9nZ19w YWNrZXQgKm9wKSB7CiBvZ2dfc3RyZWFtX3N0YXRlIG9zX2VuLCBvc19kZTsKIG9nZ19zeW5jX3N0 YXRlIG95OwogCi12b2lkIGNoZWNrcGFja2V0KG9nZ19wYWNrZXQgKm9wLGludCBsZW4sIGludCBu bywgaW50IHBvcyl7Cit2b2lkIGNoZWNrcGFja2V0KG9nZ19wYWNrZXQgKm9wLGxvbmcgbGVuLCBp bnQgbm8sIGxvbmcgcG9zKXsKICAgbG9uZyBqOwogICBzdGF0aWMgaW50IHNlcXVlbmNlPTA7CiAg IHN0YXRpYyBpbnQgbGFzdG5vPTA7CiAKICAgaWYob3AtPmJ5dGVzIT1sZW4pewotICAgIGZwcmlu dGYoc3RkZXJyLCJpbmNvcnJlY3QgcGFja2V0IGxlbmd0aCFcbiIpOworICAgIGZwcmludGYoc3Rk ZXJyLCJpbmNvcnJlY3QgcGFja2V0IGxlbmd0aCAoJWxkICE9ICVsZCkhXG4iLG9wLT5ieXRlcyxs ZW4pOwogICAgIGV4aXQoMSk7CiAgIH0KICAgaWYob3AtPmdyYW51bGVwb3MhPXBvcyl7Ci0gICAg ZnByaW50ZihzdGRlcnIsImluY29ycmVjdCBwYWNrZXQgcG9zaXRpb24hXG4iKTsKKyAgICBmcHJp bnRmKHN0ZGVyciwiaW5jb3JyZWN0IHBhY2tldCBncmFucG9zICglbGQgIT0gJWxkKSFcbiIsKGxv bmcpb3AtPmdyYW51bGVwb3MscG9zKTsKICAgICBleGl0KDEpOwogICB9CiAKQEAgLTkyNyw3ICsx MDc1LDcgQEAgdm9pZCBjaGVja3BhY2tldChvZ2dfcGFja2V0ICpvcCxpbnQgbGVuLAogICBsYXN0 bm89bm87CiAgIGlmKG9wLT5wYWNrZXRubyE9c2VxdWVuY2UpewogICAgIGZwcmludGYoc3RkZXJy LCJpbmNvcnJlY3QgcGFja2V0IHNlcXVlbmNlICVsZCAhPSAlZFxuIiwKLQkgICAgKGxvbmcpKG9w LT5wYWNrZXRubyksc2VxdWVuY2UpOworICAgICAgICAgICAgKGxvbmcpKG9wLT5wYWNrZXRubyks c2VxdWVuY2UpOwogICAgIGV4aXQoMSk7CiAgIH0KIApAQCAtOTM1LDcgKzEwODMsNyBAQCB2b2lk IGNoZWNrcGFja2V0KG9nZ19wYWNrZXQgKm9wLGludCBsZW4sCiAgIGZvcihqPTA7ajxvcC0+Ynl0 ZXM7aisrKQogICAgIGlmKG9wLT5wYWNrZXRbal0hPSgoaitubykmMHhmZikpewogICAgICAgZnBy aW50ZihzdGRlcnIsImJvZHkgZGF0YSBtaXNtYXRjaCAoMSkgYXQgcG9zICVsZDogJXghPSVseCFc blxuIiwKLQkgICAgICBqLG9wLT5wYWNrZXRbal0sKGorbm8pJjB4ZmYpOworICAgICAgICAgICAg ICBqLG9wLT5wYWNrZXRbal0sKGorbm8pJjB4ZmYpOwogICAgICAgZXhpdCgxKTsKICAgICB9CiB9 CkBAIC05NDYsNyArMTA5NCw3IEBAIHZvaWQgY2hlY2tfcGFnZSh1bnNpZ25lZCBjaGFyICpkYXRh LGNvbnMKICAgZm9yKGo9MDtqPG9nLT5ib2R5X2xlbjtqKyspCiAgICAgaWYob2ctPmJvZHlbal0h PWRhdGFbal0pewogICAgICAgZnByaW50ZihzdGRlcnIsImJvZHkgZGF0YSBtaXNtYXRjaCAoMikg YXQgcG9zICVsZDogJXghPSV4IVxuXG4iLAotCSAgICAgIGosZGF0YVtqXSxvZy0+Ym9keVtqXSk7 CisgICAgICAgICAgICAgIGosZGF0YVtqXSxvZy0+Ym9keVtqXSk7CiAgICAgICBleGl0KDEpOwog ICAgIH0KIApAQCAtOTU1LDE0ICsxMTAzLDE0IEBAIHZvaWQgY2hlY2tfcGFnZSh1bnNpZ25lZCBj aGFyICpkYXRhLGNvbnMKICAgICBpZihvZy0+aGVhZGVyW2pdIT1oZWFkZXJbal0pewogICAgICAg ZnByaW50ZihzdGRlcnIsImhlYWRlciBjb250ZW50IG1pc21hdGNoIGF0IHBvcyAlbGQ6XG4iLGop OwogICAgICAgZm9yKGo9MDtqPGhlYWRlclsyNl0rMjc7aisrKQotCWZwcmludGYoc3RkZXJyLCIg KCVsZCklMDJ4OiUwMngiLGosaGVhZGVyW2pdLG9nLT5oZWFkZXJbal0pOworICAgICAgICBmcHJp bnRmKHN0ZGVyciwiICglbGQpJTAyeDolMDJ4IixqLGhlYWRlcltqXSxvZy0+aGVhZGVyW2pdKTsK ICAgICAgIGZwcmludGYoc3RkZXJyLCJcbiIpOwogICAgICAgZXhpdCgxKTsKICAgICB9CiAgIH0K ICAgaWYob2ctPmhlYWRlcl9sZW4hPWhlYWRlclsyNl0rMjcpewogICAgIGZwcmludGYoc3RkZXJy LCJoZWFkZXIgbGVuZ3RoIGluY29ycmVjdCEgKCVsZCE9JWQpXG4iLAotCSAgICBvZy0+aGVhZGVy X2xlbixoZWFkZXJbMjZdKzI3KTsKKyAgICAgICAgICAgIG9nLT5oZWFkZXJfbGVuLGhlYWRlclsy Nl0rMjcpOwogICAgIGV4aXQoMSk7CiAgIH0KIH0KQEAgLTk3MSwyMSArMTExOSwyMSBAQCB2b2lk IHByaW50X2hlYWRlcihvZ2dfcGFnZSAqb2cpewogICBpbnQgajsKICAgZnByaW50ZihzdGRlcnIs IlxuSEVBREVSOlxuIik7CiAgIGZwcmludGYoc3RkZXJyLCIgIGNhcHR1cmU6ICVjICVjICVjICVj ICB2ZXJzaW9uOiAlZCAgZmxhZ3M6ICV4XG4iLAotCSAgb2ctPmhlYWRlclswXSxvZy0+aGVhZGVy WzFdLG9nLT5oZWFkZXJbMl0sb2ctPmhlYWRlclszXSwKLQkgIChpbnQpb2ctPmhlYWRlcls0XSwo aW50KW9nLT5oZWFkZXJbNV0pOworICAgICAgICAgIG9nLT5oZWFkZXJbMF0sb2ctPmhlYWRlclsx XSxvZy0+aGVhZGVyWzJdLG9nLT5oZWFkZXJbM10sCisgICAgICAgICAgKGludClvZy0+aGVhZGVy WzRdLChpbnQpb2ctPmhlYWRlcls1XSk7CiAKICAgZnByaW50ZihzdGRlcnIsIiAgZ3JhbnVsZXBv czogJWQgIHNlcmlhbG5vOiAlZCAgcGFnZW5vOiAlbGRcbiIsCi0JICAob2ctPmhlYWRlcls5XTw8 MjQpfChvZy0+aGVhZGVyWzhdPDwxNil8Ci0JICAob2ctPmhlYWRlcls3XTw8OCl8b2ctPmhlYWRl cls2XSwKLQkgIChvZy0+aGVhZGVyWzE3XTw8MjQpfChvZy0+aGVhZGVyWzE2XTw8MTYpfAotCSAg KG9nLT5oZWFkZXJbMTVdPDw4KXxvZy0+aGVhZGVyWzE0XSwKLQkgICgobG9uZykob2ctPmhlYWRl clsyMV0pPDwyNCl8KG9nLT5oZWFkZXJbMjBdPDwxNil8Ci0JICAob2ctPmhlYWRlclsxOV08PDgp fG9nLT5oZWFkZXJbMThdKTsKKyAgICAgICAgICAob2ctPmhlYWRlcls5XTw8MjQpfChvZy0+aGVh ZGVyWzhdPDwxNil8CisgICAgICAgICAgKG9nLT5oZWFkZXJbN108PDgpfG9nLT5oZWFkZXJbNl0s CisgICAgICAgICAgKG9nLT5oZWFkZXJbMTddPDwyNCl8KG9nLT5oZWFkZXJbMTZdPDwxNil8Cisg ICAgICAgICAgKG9nLT5oZWFkZXJbMTVdPDw4KXxvZy0+aGVhZGVyWzE0XSwKKyAgICAgICAgICAo KGxvbmcpKG9nLT5oZWFkZXJbMjFdKTw8MjQpfChvZy0+aGVhZGVyWzIwXTw8MTYpfAorICAgICAg ICAgIChvZy0+aGVhZGVyWzE5XTw8OCl8b2ctPmhlYWRlclsxOF0pOwogCiAgIGZwcmludGYoc3Rk ZXJyLCIgIGNoZWNrc3VtOiAlMDJ4OiUwMng6JTAyeDolMDJ4XG4gIHNlZ21lbnRzOiAlZCAoIiwK LQkgIChpbnQpb2ctPmhlYWRlclsyMl0sKGludClvZy0+aGVhZGVyWzIzXSwKLQkgIChpbnQpb2ct PmhlYWRlclsyNF0sKGludClvZy0+aGVhZGVyWzI1XSwKLQkgIChpbnQpb2ctPmhlYWRlclsyNl0p OworICAgICAgICAgIChpbnQpb2ctPmhlYWRlclsyMl0sKGludClvZy0+aGVhZGVyWzIzXSwKKyAg ICAgICAgICAoaW50KW9nLT5oZWFkZXJbMjRdLChpbnQpb2ctPmhlYWRlclsyNV0sCisgICAgICAg ICAgKGludClvZy0+aGVhZGVyWzI2XSk7CiAKICAgZm9yKGo9Mjc7ajxvZy0+aGVhZGVyX2xlbjtq KyspCiAgICAgZnByaW50ZihzdGRlcnIsIiVkICIsKGludClvZy0+aGVhZGVyW2pdKTsKQEAgLTEw MDIsNiArMTE1MCwxMSBAQCB2b2lkIGNvcHlfcGFnZShvZ2dfcGFnZSAqb2cpewogICBvZy0+Ym9k eT10ZW1wOwogfQogCit2b2lkIGZyZWVfcGFnZShvZ2dfcGFnZSAqb2cpeworICBfb2dnX2ZyZWUg KG9nLT5oZWFkZXIpOworICBfb2dnX2ZyZWUgKG9nLT5ib2R5KTsKK30KKwogdm9pZCBlcnJvcih2 b2lkKXsKICAgZnByaW50ZihzdGRlcnIsImVycm9yIVxuIik7CiAgIGV4aXQoMSk7CkBAIC0xMDA5 LDIxMiArMTE2MiwzOTMgQEAgdm9pZCBlcnJvcih2b2lkKXsKIAogLyogMTcgb25seSAqLwogY29u c3QgaW50IGhlYWQxXzBbXSA9IHsweDRmLDB4NjcsMHg2NywweDUzLDAsMHgwNiwKLQkJICAgICAg IDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKLQkJICAgICAgIDB4MDEs MHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKLQkJICAgICAgIDB4MTUsMHhlZCwweGVjLDB4OTEsCi0J CSAgICAgICAxLAotCQkgICAgICAgMTd9OworICAgICAgICAgICAgICAgICAgICAgICAweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAg IDB4MDEsMHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHgx NSwweGVkLDB4ZWMsMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAg ICAgICAgICAgICAgMTd9OwogCiAvKiAxNywgMjU0LCAyNTUsIDI1NiwgNTAwLCA1MTAsIDYwMCBi eXRlLCBwYWQgKi8KIGNvbnN0IGludCBoZWFkMV8xW10gPSB7MHg0ZiwweDY3LDB4NjcsMHg1Myww LDB4MDIsCi0JCSAgICAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs Ci0JCSAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDAsMCwwLDAsCi0JCSAgICAgICAweDU5LDB4 MTAsMHg2YywweDJjLAotCQkgICAgICAgMSwKLQkJICAgICAgIDE3fTsKKyAgICAgICAgICAgICAg ICAgICAgICAgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAorICAgICAg ICAgICAgICAgICAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDAsMCwwLDAsCisgICAgICAgICAg ICAgICAgICAgICAgIDB4NTksMHgxMCwweDZjLDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAg IDEsCisgICAgICAgICAgICAgICAgICAgICAgIDE3fTsKIGNvbnN0IGludCBoZWFkMl8xW10gPSB7 MHg0ZiwweDY3LDB4NjcsMHg1MywwLDB4MDQsCi0JCSAgICAgICAweDA3LDB4MTgsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDEsMCww LDAsCi0JCSAgICAgICAweDg5LDB4MzMsMHg4NSwweGNlLAotCQkgICAgICAgMTMsCi0JCSAgICAg ICAyNTQsMjU1LDAsMjU1LDEsMjU1LDI0NSwyNTUsMjU1LDAsCi0JCSAgICAgICAyNTUsMjU1LDkw fTsKKyAgICAgICAgICAgICAgICAgICAgICAgMHgwNywweDE4LDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwLAorICAgICAgICAgICAgICAgICAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDEs MCwwLDAsCisgICAgICAgICAgICAgICAgICAgICAgIDB4ODksMHgzMywweDg1LDB4Y2UsCisgICAg ICAgICAgICAgICAgICAgICAgIDEzLAorICAgICAgICAgICAgICAgICAgICAgICAyNTQsMjU1LDAs MjU1LDEsMjU1LDI0NSwyNTUsMjU1LDAsCisgICAgICAgICAgICAgICAgICAgICAgIDI1NSwyNTUs OTB9OwogCiAvKiBuaWwgcGFja2V0czsgYmVnaW5uaW5nLG1pZGRsZSxlbmQgKi8KIGNvbnN0IGlu dCBoZWFkMV8yW10gPSB7MHg0ZiwweDY3LDB4NjcsMHg1MywwLDB4MDIsCi0JCSAgICAgICAweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAxLDB4MDIs MHgwMywweDA0LDAsMCwwLDAsCi0JCSAgICAgICAweGZmLDB4N2IsMHgyMywweDE3LAotCQkgICAg ICAgMSwKLQkJICAgICAgIDB9OworICAgICAgICAgICAgICAgICAgICAgICAweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgIDB4MDEs MHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHhmZiwweDdi LDB4MjMsMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAg ICAgICAgMH07CiBjb25zdCBpbnQgaGVhZDJfMltdID0gezB4NGYsMHg2NywweDY3LDB4NTMsMCww eDA0LAotCQkgICAgICAgMHgwNywweDI4LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAot CQkgICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwxLDAsMCwwLAotCQkgICAgICAgMHg1YywweDNm LDB4NjYsMHhjYiwKLQkJICAgICAgIDE3LAotCQkgICAgICAgMTcsMjU0LDI1NSwwLDAsMjU1LDEs MCwyNTUsMjQ1LDI1NSwyNTUsMCwKLQkJICAgICAgIDI1NSwyNTUsOTAsMH07CisgICAgICAgICAg ICAgICAgICAgICAgIDB4MDcsMHgyOCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAg ICAgICAgICAgICAgICAgICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwxLDAsMCwwLAorICAgICAg ICAgICAgICAgICAgICAgICAweDVjLDB4M2YsMHg2NiwweGNiLAorICAgICAgICAgICAgICAgICAg ICAgICAxNywKKyAgICAgICAgICAgICAgICAgICAgICAgMTcsMjU0LDI1NSwwLDAsMjU1LDEsMCwy NTUsMjQ1LDI1NSwyNTUsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSw5MCwwfTsK IAogLyogbGFyZ2UgaW5pdGlhbCBwYWNrZXQgKi8KIGNvbnN0IGludCBoZWFkMV8zW10gPSB7MHg0 ZiwweDY3LDB4NjcsMHg1MywwLDB4MDIsCi0JCSAgICAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDAsMCwwLDAs Ci0JCSAgICAgICAweDAxLDB4MjcsMHgzMSwweGFhLAotCQkgICAgICAgMTgsCi0JCSAgICAgICAy NTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAotCQkgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwyNTUsMTB9OworICAgICAgICAgICAgICAgICAgICAgICAweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAg IDB4MDEsMHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHgw MSwweDI3LDB4MzEsMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgMTgsCisgICAgICAgICAg ICAgICAgICAgICAgIDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsCisgICAgICAgICAg ICAgICAgICAgICAgIDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDEwfTsKIAog Y29uc3QgaW50IGhlYWQyXzNbXSA9IHsweDRmLDB4NjcsMHg2NywweDUzLDAsMHgwNCwKLQkJICAg ICAgIDB4MDcsMHgwOCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKLQkJICAgICAgIDB4 MDEsMHgwMiwweDAzLDB4MDQsMSwwLDAsMCwKLQkJICAgICAgIDB4N2YsMHg0ZSwweDhhLDB4ZDIs Ci0JCSAgICAgICA0LAotCQkgICAgICAgMjU1LDQsMjU1LDB9OworICAgICAgICAgICAgICAgICAg ICAgICAweDA3LDB4MDgsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMSwwLDAsMCwKKyAgICAgICAgICAgICAg ICAgICAgICAgMHg3ZiwweDRlLDB4OGEsMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgNCwK KyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDQsMjU1LDB9OwogCiAKIC8qIGNvbnRpbnVpbmcg cGFja2V0IHRlc3QgKi8KIGNvbnN0IGludCBoZWFkMV80W10gPSB7MHg0ZiwweDY3LDB4NjcsMHg1 MywwLDB4MDIsCi0JCSAgICAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4 MDAsCi0JCSAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDAsMCwwLDAsCi0JCSAgICAgICAweGZm LDB4N2IsMHgyMywweDE3LAotCQkgICAgICAgMSwKLQkJICAgICAgIDB9OworICAgICAgICAgICAg ICAgICAgICAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAg ICAgICAgICAgICAgICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgMHhmZiwweDdiLDB4MjMsMHgxNywKKyAgICAgICAgICAgICAgICAgICAg ICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgMH07CiAKIGNvbnN0IGludCBoZWFkMl80W10g PSB7MHg0ZiwweDY3LDB4NjcsMHg1MywwLDB4MDAsCi0JCSAgICAgICAweDA3LDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDEs MCwwLDAsCi0JCSAgICAgICAweDM0LDB4MjQsMHhkNSwweDI5LAotCQkgICAgICAgMTcsCi0JCSAg ICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAotCQkgICAgICAgMjU1LDI1NSwy NTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTV9OworICAgICAgICAgICAgICAgICAgICAgICAweEZG LDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsCisgICAgICAgICAgICAgICAgICAg ICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMSwwLDAsMCwKKyAgICAgICAgICAgICAgICAgICAgICAg MHhmOCwweDNjLDB4MTksMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAorICAgICAg ICAgICAgICAgICAgICAgICAyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTV9OwogCiBjb25zdCBp bnQgaGVhZDNfNFtdID0gezB4NGYsMHg2NywweDY3LDB4NTMsMCwweDA1LAotCQkgICAgICAgMHgw NywweDBjLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAotCQkgICAgICAgMHgwMSwweDAy LDB4MDMsMHgwNCwyLDAsMCwwLAotCQkgICAgICAgMHhjOCwweGMzLDB4Y2IsMHhlZCwKLQkJICAg ICAgIDUsCi0JCSAgICAgICAxMCwyNTUsNCwyNTUsMH07CisgICAgICAgICAgICAgICAgICAgICAg IDB4MDcsMHgwYywweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAg ICAgICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwyLDAsMCwwLAorICAgICAgICAgICAgICAgICAg ICAgICAweDM4LDB4ZTYsMHhiNiwweDI4LAorICAgICAgICAgICAgICAgICAgICAgICA2LAorICAg ICAgICAgICAgICAgICAgICAgICAyNTUsMjIwLDI1NSw0LDI1NSwwfTsKIAogCisvKiBzcGlsbCBl eHBhbnNpb24gdGVzdCAqLworY29uc3QgaW50IGhlYWQxXzRiW10gPSB7MHg0ZiwweDY3LDB4Njcs MHg1MywwLDB4MDIsCisgICAgICAgICAgICAgICAgICAgICAgICAweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAweDAxLDB4MDIs MHgwMywweDA0LDAsMCwwLDAsCisgICAgICAgICAgICAgICAgICAgICAgICAweGZmLDB4N2IsMHgy MywweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIDB9OworCitjb25zdCBpbnQgaGVhZDJfNGJbXSA9IHsweDRmLDB4NjcsMHg2NywweDUzLDAs MHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDcsMHgxMCwweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsMHgwMiwweDAzLDB4 MDQsMSwwLDAsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsMHg4ZiwweDE3LDB4MWEs CisgICAgICAgICAgICAgICAgICAgICAgICAyMywKKyAgICAgICAgICAgICAgICAgICAgICAgIDI1 NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAy NTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwxMCwyNTUsNCwyNTUsMCwwfTsKKwor Citjb25zdCBpbnQgaGVhZDNfNGJbXSA9IHsweDRmLDB4NjcsMHg2NywweDUzLDAsMHgwNCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDcsMHgxNCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMiwwLDAs MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsMHhiMiwweDUwLDB4YTEsCisgICAgICAg ICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAgMH07CisKIC8qIHBh Z2Ugd2l0aCB0aGUgMjU1IHNlZ21lbnQgbGltaXQgKi8KIGNvbnN0IGludCBoZWFkMV81W10gPSB7 MHg0ZiwweDY3LDB4NjcsMHg1MywwLDB4MDIsCi0JCSAgICAgICAweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDAsMCww LDAsCi0JCSAgICAgICAweGZmLDB4N2IsMHgyMywweDE3LAotCQkgICAgICAgMSwKLQkJICAgICAg IDB9OworICAgICAgICAgICAgICAgICAgICAgICAweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQs MCwwLDAsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHhmZiwweDdiLDB4MjMsMHgxNywKKyAg ICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgMH07CiAKIGNv bnN0IGludCBoZWFkMl81W10gPSB7MHg0ZiwweDY3LDB4NjcsMHg1MywwLDB4MDAsCi0JCSAgICAg ICAweDA3LDB4ZmMsMHgwMywweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAx LDB4MDIsMHgwMywweDA0LDEsMCwwLDAsCi0JCSAgICAgICAweGVkLDB4MmEsMHgyZSwweGE3LAot CQkgICAgICAgMjU1LAotCQkgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAg ICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEw LDEwLAotCQkgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwx MCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkg ICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwxMCwx MCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAgICAgMTAs MTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwK LQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAgICAgMTAsMTAsMTAsMTAs MTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgICAg IDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAs MTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEw LDEwLDEwLDEwLDEwLDEwLAotCQkgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAg ICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEw LDEwLDEwLAotCQkgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwx MCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAot CQkgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwx MCwxMCwxMCwxMCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAgICAg MTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwx MCwKLQkJICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAgICAgMTAsMTAsMTAs MTAsMTAsMTAsMTAsMTAsCi0JCSAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMH07CisgICAgICAg ICAgICAgICAgICAgICAgIDB4MDcsMHhmYywweDAzLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwK KyAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwxLDAsMCwwLAorICAg ICAgICAgICAgICAgICAgICAgICAweGVkLDB4MmEsMHgyZSwweGE3LAorICAgICAgICAgICAgICAg ICAgICAgICAyNTUsCisgICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEw LDEwLAorICAgICAgICAgICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKKyAg ICAgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAg ICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAorICAgICAgICAgICAgICAgICAg ICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMTAs MTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEw LDEwLDEwLDEwLDEwLAorICAgICAgICAgICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwx MCwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisg ICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAorICAgICAgICAg ICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgICAgIDEw LDEwLDEwLDEwLDEwLDEwLDEwLDEwLAorICAgICAgICAgICAgICAgICAgICAgICAxMCwxMCwxMCwx MCwxMCwxMCwxMCwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAs MTAsMTAsCisgICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAor ICAgICAgICAgICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAg ICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAorICAgICAgICAgICAgICAgICAgICAgICAx MCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAs MTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEw LDEwLDEwLAorICAgICAgICAgICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwK KyAgICAgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAg ICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAorICAgICAgICAgICAgICAg ICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAg MTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEw LDEwLDEwLDEwLDEwLDEwLAorICAgICAgICAgICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwx MCwxMCwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAs CisgICAgICAgICAgICAgICAgICAgICAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAorICAgICAg ICAgICAgICAgICAgICAgICAxMCwxMCwxMCwxMCwxMCwxMCwxMH07CiAKIGNvbnN0IGludCBoZWFk M181W10gPSB7MHg0ZiwweDY3LDB4NjcsMHg1MywwLDB4MDQsCi0JCSAgICAgICAweDA3LDB4MDAs MHgwNCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsCi0JCSAgICAgICAweDAxLDB4MDIsMHgwMyww eDA0LDIsMCwwLDAsCi0JCSAgICAgICAweDZjLDB4M2IsMHg4MiwweDNkLAotCQkgICAgICAgMSwK LQkJICAgICAgIDUwfTsKKyAgICAgICAgICAgICAgICAgICAgICAgMHgwNywweDAwLDB4MDQsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLAorICAgICAgICAgICAgICAgICAgICAgICAweDAxLDB4MDIs MHgwMywweDA0LDIsMCwwLDAsCisgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsMHgzYiwweDgy LDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAg IDUwfTsKIAogCiAvKiBwYWNrZXQgdGhhdCBvdmVyc3BhbnMgb3ZlciBhbiBlbnRpcmUgcGFnZSAq LwogY29uc3QgaW50IGhlYWQxXzZbXSA9IHsweDRmLDB4NjcsMHg2NywweDUzLDAsMHgwMiwKLQkJ ICAgICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKLQkJICAgICAg IDB4MDEsMHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKLQkJICAgICAgIDB4ZmYsMHg3YiwweDIzLDB4 MTcsCi0JCSAgICAgICAxLAotCQkgICAgICAgMH07CisgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwwLDAsMCwwLAorICAgICAgICAgICAgICAgICAgICAg ICAweGZmLDB4N2IsMHgyMywweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAg ICAgICAgICAgICAgICAgICAwfTsKIAogY29uc3QgaW50IGhlYWQyXzZbXSA9IHsweDRmLDB4Njcs MHg2NywweDUzLDAsMHgwMCwKLQkJICAgICAgIDB4MDcsMHgwNCwweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwKLQkJICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMSwwLDAsMCwKLQkJICAg ICAgIDB4M2MsMHhkOSwweDRkLDB4M2YsCi0JCSAgICAgICAxNywKLQkJICAgICAgIDEwMCwyNTUs MjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAotCQkgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NX07CisgICAgICAgICAgICAgICAgICAgICAgIDB4MDcsMHgwNCwweDAwLDB4 MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwweDAy LDB4MDMsMHgwNCwxLDAsMCwwLAorICAgICAgICAgICAgICAgICAgICAgICAweDY4LDB4MjIsMHg3 YywweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAyNTUsCisgICAgICAgICAgICAgICAgICAg ICAgIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUs MjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTV9 OwogCiBjb25zdCBpbnQgaGVhZDNfNltdID0gezB4NGYsMHg2NywweDY3LDB4NTMsMCwweDAxLAot CQkgICAgICAgMHgwNywweDA0LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAotCQkgICAg ICAgMHgwMSwweDAyLDB4MDMsMHgwNCwyLDAsMCwwLAotCQkgICAgICAgMHhiZCwweGQ1LDB4YjUs MHg4YiwKLQkJICAgICAgIDE3LAotCQkgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1 LDI1NSwKLQkJICAgICAgIDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1fTsKKyAg ICAgICAgICAgICAgICAgICAgICAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiww eEZGLAorICAgICAgICAgICAgICAgICAgICAgICAweDAxLDB4MDIsMHgwMywweDA0LDIsMCwwLDAs CisgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsMHg4NywweGJhLDB4ZjMsCisgICAgICAgICAg ICAgICAgICAgICAgIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1 LDI1NSwyNTUsMjU1fTsKIAogY29uc3QgaW50IGhlYWQ0XzZbXSA9IHsweDRmLDB4NjcsMHg2Nyww eDUzLDAsMHgwNSwKLQkJICAgICAgIDB4MDcsMHgxMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwKLQkJICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMywwLDAsMCwKLQkJICAgICAgIDB4 ZWYsMHhkZCwweDg4LDB4ZGUsCi0JCSAgICAgICA3LAotCQkgICAgICAgMjU1LDI1NSw3NSwyNTUs NCwyNTUsMH07CisgICAgICAgICAgICAgICAgICAgICAgIDB4MDcsMHgxMCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwweDAyLDB4MDMs MHgwNCwzLDAsMCwwLAorICAgICAgICAgICAgICAgICAgICAgICAweGY3LDB4MmYsMHg2YywweDYw LAorICAgICAgICAgICAgICAgICAgICAgICA1LAorICAgICAgICAgICAgICAgICAgICAgICAyNTQs MjU1LDQsMjU1LDB9OwogCiAvKiBwYWNrZXQgdGhhdCBvdmVyc3BhbnMgb3ZlciBhbiBlbnRpcmUg cGFnZSAqLwogY29uc3QgaW50IGhlYWQxXzdbXSA9IHsweDRmLDB4NjcsMHg2NywweDUzLDAsMHgw MiwKLQkJICAgICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKLQkJ ICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMCwwLDAsMCwKLQkJICAgICAgIDB4ZmYsMHg3Yiww eDIzLDB4MTcsCi0JCSAgICAgICAxLAotCQkgICAgICAgMH07CisgICAgICAgICAgICAgICAgICAg ICAgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAg ICAgICAgICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwwLDAsMCwwLAorICAgICAgICAgICAgICAg ICAgICAgICAweGZmLDB4N2IsMHgyMywweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAxLAor ICAgICAgICAgICAgICAgICAgICAgICAwfTsKIAogY29uc3QgaW50IGhlYWQyXzdbXSA9IHsweDRm LDB4NjcsMHg2NywweDUzLDAsMHgwMCwKLQkJICAgICAgIDB4MDcsMHgwNCwweDAwLDB4MDAsMHgw MCwweDAwLDB4MDAsMHgwMCwKLQkJICAgICAgIDB4MDEsMHgwMiwweDAzLDB4MDQsMSwwLDAsMCwK LQkJICAgICAgIDB4M2MsMHhkOSwweDRkLDB4M2YsCi0JCSAgICAgICAxNywKLQkJICAgICAgIDEw MCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LAotCQkgICAgICAgMjU1LDI1NSwyNTUs MjU1LDI1NSwyNTUsMjU1LDI1NX07CisgICAgICAgICAgICAgICAgICAgICAgIDB4MDcsMHgwNCww eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMHgw MSwweDAyLDB4MDMsMHgwNCwxLDAsMCwwLAorICAgICAgICAgICAgICAgICAgICAgICAweDY4LDB4 MjIsMHg3YywweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAyNTUsCisgICAgICAgICAgICAg ICAgICAgICAgIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTUsMjU1LDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgMjU1LDI1NSwyNTUsMjU1LDI1 NSwyNTV9OwogCiBjb25zdCBpbnQgaGVhZDNfN1tdID0gezB4NGYsMHg2NywweDY3LDB4NTMsMCww eDA1LAotCQkgICAgICAgMHgwNywweDA4LDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAot CQkgICAgICAgMHgwMSwweDAyLDB4MDMsMHgwNCwyLDAsMCwwLAotCQkgICAgICAgMHhkNCwweGUw LDB4NjAsMHhlNSwKLQkJICAgICAgIDEsMH07CisgICAgICAgICAgICAgICAgICAgICAgIDB4MDcs MHgwOCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAgICAgICAgICAgICAgICAg ICAgMHgwMSwweDAyLDB4MDMsMHgwNCwyLDAsMCwwLAorICAgICAgICAgICAgICAgICAgICAgICAw eGQ0LDB4ZTAsMHg2MCwweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAg ICAgICAgICAgICAgICAwfTsKIAotdm9pZCB0ZXN0X3BhY2soY29uc3QgaW50ICpwbCwgY29uc3Qg aW50ICoqaGVhZGVycyl7CitpbnQgY29tcGFyZV9wYWNrZXQoY29uc3Qgb2dnX3BhY2tldCAqb3Ax LCBjb25zdCBvZ2dfcGFja2V0ICpvcDIpeworICBpZihvcDEtPnBhY2tldCE9b3AyLT5wYWNrZXQp eworICAgIGZwcmludGYoc3RkZXJyLCJvcDEtPnBhY2tldCAhPSBvcDItPnBhY2tldFxuIik7Cisg ICAgcmV0dXJuKDEpOworICB9CisgIGlmKG9wMS0+Ynl0ZXMhPW9wMi0+Ynl0ZXMpeworICAgIGZw cmludGYoc3RkZXJyLCJvcDEtPmJ5dGVzICE9IG9wMi0+Ynl0ZXNcbiIpOworICAgIHJldHVybigx KTsKKyAgfQorICBpZihvcDEtPmJfb19zIT1vcDItPmJfb19zKXsKKyAgICBmcHJpbnRmKHN0ZGVy ciwib3AxLT5iX29fcyAhPSBvcDItPmJfb19zXG4iKTsKKyAgICByZXR1cm4oMSk7CisgIH0KKyAg aWYob3AxLT5lX29fcyE9b3AyLT5lX29fcyl7CisgICAgZnByaW50ZihzdGRlcnIsIm9wMS0+ZV9v X3MgIT0gb3AyLT5lX29fc1xuIik7CisgICAgcmV0dXJuKDEpOworICB9CisgIGlmKG9wMS0+Z3Jh bnVsZXBvcyE9b3AyLT5ncmFudWxlcG9zKXsKKyAgICBmcHJpbnRmKHN0ZGVyciwib3AxLT5ncmFu dWxlcG9zICE9IG9wMi0+Z3JhbnVsZXBvc1xuIik7CisgICAgcmV0dXJuKDEpOworICB9CisgIGlm KG9wMS0+cGFja2V0bm8hPW9wMi0+cGFja2V0bm8peworICAgIGZwcmludGYoc3RkZXJyLCJvcDEt PnBhY2tldG5vICE9IG9wMi0+cGFja2V0bm9cbiIpOworICAgIHJldHVybigxKTsKKyAgfQorICBy ZXR1cm4oMCk7Cit9CisKK3ZvaWQgdGVzdF9wYWNrKGNvbnN0IGludCAqcGwsIGNvbnN0IGludCAq KmhlYWRlcnMsIGludCBieXRlc2tpcCwKKyAgICAgICAgICAgICAgIGludCBwYWdlc2tpcCwgaW50 IHBhY2tldHNraXApewogICB1bnNpZ25lZCBjaGFyICpkYXRhPV9vZ2dfbWFsbG9jKDEwMjQqMTAy NCk7IC8qIGZvciBzY3JpcHRlZCB0ZXN0IGNhc2VzIG9ubHkgKi8KICAgbG9uZyBpbnB0cj0wOwog ICBsb25nIG91dHB0cj0wOwogICBsb25nIGRlcHRyPTA7CiAgIGxvbmcgZGVwYWNrZXQ9MDsKICAg bG9uZyBncmFudWxlX3Bvcz03LHBhZ2Vubz0wOwotICBpbnQgaSxqLHBhY2tldHMscGFnZW91dD0w OworICBpbnQgaSxqLHBhY2tldHMscGFnZW91dD1wYWdlc2tpcDsKICAgaW50IGVvc2ZsYWc9MDsK ICAgaW50IGJvc2ZsYWc9MDsKIAorICBpbnQgYnl0ZXNraXBjb3VudD0wOworCiAgIG9nZ19zdHJl YW1fcmVzZXQoJm9zX2VuKTsKICAgb2dnX3N0cmVhbV9yZXNldCgmb3NfZGUpOwogICBvZ2dfc3lu Y19yZXNldCgmb3kpOwogCisgIGZvcihwYWNrZXRzPTA7cGFja2V0czxwYWNrZXRza2lwO3BhY2tl dHMrKykKKyAgICBkZXBhY2tldCs9cGxbcGFja2V0c107CisKICAgZm9yKHBhY2tldHM9MDs7cGFj a2V0cysrKWlmKHBsW3BhY2tldHNdPT0tMSlicmVhazsKIAogICBmb3IoaT0wO2k8cGFja2V0cztp KyspewogICAgIC8qIGNvbnN0cnVjdCBhIHRlc3QgcGFja2V0ICovCiAgICAgb2dnX3BhY2tldCBv cDsKICAgICBpbnQgbGVuPXBsW2ldOwotICAgIAorCiAgICAgb3AucGFja2V0PWRhdGEraW5wdHI7 CiAgICAgb3AuYnl0ZXM9bGVuOwogICAgIG9wLmVfb19zPShwbFtpKzFdPDA/MTowKTsKQEAgLTEy MzAsODggKzE1NjQsMTExIEBAIHZvaWQgdGVzdF9wYWNrKGNvbnN0IGludCAqcGwsIGNvbnN0IGlu dCAKICAgICAvKiByZXRyaWV2ZSBhbnkgZmluaXNoZWQgcGFnZXMgKi8KICAgICB7CiAgICAgICBv Z2dfcGFnZSBvZzsKLSAgICAgIAotICAgICAgd2hpbGUob2dnX3N0cmVhbV9wYWdlb3V0KCZvc19l biwmb2cpKXsKLQkvKiBXZSBoYXZlIGEgcGFnZS4gIENoZWNrIGl0IGNhcmVmdWxseSAqLwotCi0J ZnByaW50ZihzdGRlcnIsIiVsZCwgIixwYWdlbm8pOwotCi0JaWYoaGVhZGVyc1twYWdlbm9dPT1O VUxMKXsKLQkgIGZwcmludGYoc3RkZXJyLCJjb2RlZCB0b28gbWFueSBwYWdlcyFcbiIpOwotCSAg ZXhpdCgxKTsKLQl9Ci0KLQljaGVja19wYWdlKGRhdGErb3V0cHRyLGhlYWRlcnNbcGFnZW5vXSwm b2cpOwotCi0Jb3V0cHRyKz1vZy5ib2R5X2xlbjsKLQlwYWdlbm8rKzsKLQotCS8qIGhhdmUgYSBj b21wbGV0ZSBwYWdlOyBzdWJtaXQgaXQgdG8gc3luYy9kZWNvZGUgKi8KLQotCXsKLQkgIG9nZ19w YWdlIG9nX2RlOwotCSAgb2dnX3BhY2tldCBvcF9kZSxvcF9kZTI7Ci0JICBjaGFyICpidWY9b2dn X3N5bmNfYnVmZmVyKCZveSxvZy5oZWFkZXJfbGVuK29nLmJvZHlfbGVuKTsKLQkgIG1lbWNweShi dWYsb2cuaGVhZGVyLG9nLmhlYWRlcl9sZW4pOwotCSAgbWVtY3B5KGJ1ZitvZy5oZWFkZXJfbGVu LG9nLmJvZHksb2cuYm9keV9sZW4pOwotCSAgb2dnX3N5bmNfd3JvdGUoJm95LG9nLmhlYWRlcl9s ZW4rb2cuYm9keV9sZW4pOwotCi0JICB3aGlsZShvZ2dfc3luY19wYWdlb3V0KCZveSwmb2dfZGUp PjApewotCSAgICAvKiBnb3QgYSBwYWdlLiAgSGFwcHkgaGFwcHkuICBWZXJpZnkgdGhhdCBpdCdz IGdvb2QuICovCi0JICAgIAotCSAgICBjaGVja19wYWdlKGRhdGErZGVwdHIsaGVhZGVyc1twYWdl b3V0XSwmb2dfZGUpOwotCSAgICBkZXB0cis9b2dfZGUuYm9keV9sZW47Ci0JICAgIHBhZ2VvdXQr KzsKLQotCSAgICAvKiBzdWJtaXQgaXQgdG8gZGVjb25zdGl0dXRpb24gKi8KLQkgICAgb2dnX3N0 cmVhbV9wYWdlaW4oJm9zX2RlLCZvZ19kZSk7CiAKLQkgICAgLyogcGFja2V0cyBvdXQ/ICovCi0J ICAgIHdoaWxlKG9nZ19zdHJlYW1fcGFja2V0cGVlaygmb3NfZGUsJm9wX2RlMik+MCl7Ci0JICAg ICAgb2dnX3N0cmVhbV9wYWNrZXRwZWVrKCZvc19kZSxOVUxMKTsKLQkgICAgICBvZ2dfc3RyZWFt X3BhY2tldG91dCgmb3NfZGUsJm9wX2RlKTsgLyoganVzdCBjYXRjaGluZyB0aGVtIGFsbCAqLwot CSAgICAgIAotCSAgICAgIC8qIHZlcmlmeSBwZWVrIGFuZCBvdXQgbWF0Y2ggKi8KLQkgICAgICBp ZihtZW1jbXAoJm9wX2RlLCZvcF9kZTIsc2l6ZW9mKG9wX2RlKSkpewotCQlmcHJpbnRmKHN0ZGVy ciwicGFja2V0b3V0ICE9IHBhY2tldHBlZWshIHBvcz0lbGRcbiIsCi0JCQlkZXBhY2tldCk7Ci0J CWV4aXQoMSk7Ci0JICAgICAgfQorICAgICAgd2hpbGUob2dnX3N0cmVhbV9wYWdlb3V0KCZvc19l biwmb2cpKXsKKyAgICAgICAgLyogV2UgaGF2ZSBhIHBhZ2UuICBDaGVjayBpdCBjYXJlZnVsbHkg Ki8KIAotCSAgICAgIC8qIHZlcmlmeSB0aGUgcGFja2V0ISAqLwotCSAgICAgIC8qIGNoZWNrIGRh dGEgKi8KLQkgICAgICBpZihtZW1jbXAoZGF0YStkZXBhY2tldCxvcF9kZS5wYWNrZXQsb3BfZGUu Ynl0ZXMpKXsKLQkJZnByaW50ZihzdGRlcnIsInBhY2tldCBkYXRhIG1pc21hdGNoIGluIGRlY29k ZSEgcG9zPSVsZFxuIiwKLQkJCWRlcGFja2V0KTsKLQkJZXhpdCgxKTsKLQkgICAgICB9Ci0JICAg ICAgLyogY2hlY2sgYm9zIGZsYWcgKi8KLQkgICAgICBpZihib3NmbGFnPT0wICYmIG9wX2RlLmJf b19zPT0wKXsKLQkJZnByaW50ZihzdGRlcnIsImJfb19zIGZsYWcgbm90IHNldCBvbiBwYWNrZXQh XG4iKTsKLQkJZXhpdCgxKTsKLQkgICAgICB9Ci0JICAgICAgaWYoYm9zZmxhZyAmJiBvcF9kZS5i X29fcyl7Ci0JCWZwcmludGYoc3RkZXJyLCJiX29fcyBmbGFnIGluY29ycmVjdGx5IHNldCBvbiBw YWNrZXQhXG4iKTsKLQkJZXhpdCgxKTsKLQkgICAgICB9Ci0JICAgICAgYm9zZmxhZz0xOwotCSAg ICAgIGRlcGFja2V0Kz1vcF9kZS5ieXRlczsKLQkgICAgICAKLQkgICAgICAvKiBjaGVjayBlb3Mg ZmxhZyAqLwotCSAgICAgIGlmKGVvc2ZsYWcpewotCQlmcHJpbnRmKHN0ZGVyciwiTXVsdGlwbGUg ZGVjb2RlZCBwYWNrZXRzIHdpdGggZW9zIGZsYWchXG4iKTsKLQkJZXhpdCgxKTsKLQkgICAgICB9 CisgICAgICAgIGZwcmludGYoc3RkZXJyLCIlbGQsICIscGFnZW5vKTsKIAotCSAgICAgIGlmKG9w X2RlLmVfb19zKWVvc2ZsYWc9MTsKKyAgICAgICAgaWYoaGVhZGVyc1twYWdlbm9dPT1OVUxMKXsK KyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiY29kZWQgdG9vIG1hbnkgcGFnZXMhXG4iKTsKKyAg ICAgICAgICBleGl0KDEpOworICAgICAgICB9CiAKLQkgICAgICAvKiBjaGVjayBncmFudWxlcG9z IGZsYWcgKi8KLQkgICAgICBpZihvcF9kZS5ncmFudWxlcG9zIT0tMSl7Ci0JCWZwcmludGYoc3Rk ZXJyLCIgZ3JhbnVsZTolbGQgIiwobG9uZylvcF9kZS5ncmFudWxlcG9zKTsKLQkgICAgICB9Ci0J ICAgIH0KLQkgIH0KLQl9CisgICAgICAgIGNoZWNrX3BhZ2UoZGF0YStvdXRwdHIsaGVhZGVyc1tw YWdlbm9dLCZvZyk7CisKKyAgICAgICAgb3V0cHRyKz1vZy5ib2R5X2xlbjsKKyAgICAgICAgcGFn ZW5vKys7CisgICAgICAgIGlmKHBhZ2Vza2lwKXsKKyAgICAgICAgICBib3NmbGFnPTE7CisgICAg ICAgICAgcGFnZXNraXAtLTsKKyAgICAgICAgICBkZXB0cis9b2cuYm9keV9sZW47CisgICAgICAg IH0KKworICAgICAgICAvKiBoYXZlIGEgY29tcGxldGUgcGFnZTsgc3VibWl0IGl0IHRvIHN5bmMv ZGVjb2RlICovCisKKyAgICAgICAgeworICAgICAgICAgIG9nZ19wYWdlIG9nX2RlOworICAgICAg ICAgIG9nZ19wYWNrZXQgb3BfZGUsb3BfZGUyOworICAgICAgICAgIGNoYXIgKmJ1Zj1vZ2dfc3lu Y19idWZmZXIoJm95LG9nLmhlYWRlcl9sZW4rb2cuYm9keV9sZW4pOworICAgICAgICAgIGNoYXIg Km5leHQ9YnVmOworICAgICAgICAgIGJ5dGVza2lwY291bnQrPW9nLmhlYWRlcl9sZW47CisgICAg ICAgICAgaWYoYnl0ZXNraXBjb3VudD5ieXRlc2tpcCl7CisgICAgICAgICAgICBtZW1jcHkobmV4 dCxvZy5oZWFkZXIsYnl0ZXNraXBjb3VudC1ieXRlc2tpcCk7CisgICAgICAgICAgICBuZXh0Kz1i eXRlc2tpcGNvdW50LWJ5dGVza2lwOworICAgICAgICAgICAgYnl0ZXNraXBjb3VudD1ieXRlc2tp cDsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBieXRlc2tpcGNvdW50Kz1vZy5ib2R5X2xlbjsK KyAgICAgICAgICBpZihieXRlc2tpcGNvdW50PmJ5dGVza2lwKXsKKyAgICAgICAgICAgIG1lbWNw eShuZXh0LG9nLmJvZHksYnl0ZXNraXBjb3VudC1ieXRlc2tpcCk7CisgICAgICAgICAgICBuZXh0 Kz1ieXRlc2tpcGNvdW50LWJ5dGVza2lwOworICAgICAgICAgICAgYnl0ZXNraXBjb3VudD1ieXRl c2tpcDsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBvZ2dfc3luY193cm90ZSgmb3ksbmV4dC1i dWYpOworCisgICAgICAgICAgd2hpbGUoMSl7CisgICAgICAgICAgICBpbnQgcmV0PW9nZ19zeW5j X3BhZ2VvdXQoJm95LCZvZ19kZSk7CisgICAgICAgICAgICBpZihyZXQ9PTApYnJlYWs7CisgICAg ICAgICAgICBpZihyZXQ8MCljb250aW51ZTsKKyAgICAgICAgICAgIC8qIGdvdCBhIHBhZ2UuICBI YXBweSBoYXBweS4gIFZlcmlmeSB0aGF0IGl0J3MgZ29vZC4gKi8KKworICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsIiglZCksICIscGFnZW91dCk7CisKKyAgICAgICAgICAgIGNoZWNrX3BhZ2Uo ZGF0YStkZXB0cixoZWFkZXJzW3BhZ2VvdXRdLCZvZ19kZSk7CisgICAgICAgICAgICBkZXB0cis9 b2dfZGUuYm9keV9sZW47CisgICAgICAgICAgICBwYWdlb3V0Kys7CisKKyAgICAgICAgICAgIC8q IHN1Ym1pdCBpdCB0byBkZWNvbnN0aXR1dGlvbiAqLworICAgICAgICAgICAgb2dnX3N0cmVhbV9w YWdlaW4oJm9zX2RlLCZvZ19kZSk7CisKKyAgICAgICAgICAgIC8qIHBhY2tldHMgb3V0PyAqLwor ICAgICAgICAgICAgd2hpbGUob2dnX3N0cmVhbV9wYWNrZXRwZWVrKCZvc19kZSwmb3BfZGUyKT4w KXsKKyAgICAgICAgICAgICAgb2dnX3N0cmVhbV9wYWNrZXRwZWVrKCZvc19kZSxOVUxMKTsKKyAg ICAgICAgICAgICAgb2dnX3N0cmVhbV9wYWNrZXRvdXQoJm9zX2RlLCZvcF9kZSk7IC8qIGp1c3Qg Y2F0Y2hpbmcgdGhlbSBhbGwgKi8KKworICAgICAgICAgICAgICAvKiB2ZXJpZnkgcGVlayBhbmQg b3V0IG1hdGNoICovCisgICAgICAgICAgICAgIGlmKGNvbXBhcmVfcGFja2V0KCZvcF9kZSwmb3Bf ZGUyKSl7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsInBhY2tldG91dCAhPSBwYWNr ZXRwZWVrISBwb3M9JWxkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwYWNrZXQpOwor ICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAvKiB2ZXJpZnkgdGhlIHBhY2tldCEgKi8KKyAgICAgICAgICAgICAgLyogY2hlY2sgZGF0YSAq LworICAgICAgICAgICAgICBpZihtZW1jbXAoZGF0YStkZXBhY2tldCxvcF9kZS5wYWNrZXQsb3Bf ZGUuYnl0ZXMpKXsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwicGFja2V0IGRhdGEg bWlzbWF0Y2ggaW4gZGVjb2RlISBwb3M9JWxkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ZGVwYWNrZXQpOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgLyogY2hlY2sgYm9zIGZsYWcgKi8KKyAgICAgICAgICAgICAgaWYoYm9zZmxh Zz09MCAmJiBvcF9kZS5iX29fcz09MCl7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ImJfb19zIGZsYWcgbm90IHNldCBvbiBwYWNrZXQhXG4iKTsKKyAgICAgICAgICAgICAgICBleGl0 KDEpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmKGJvc2ZsYWcgJiYgb3BfZGUu Yl9vX3MpeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJiX29fcyBmbGFnIGluY29y cmVjdGx5IHNldCBvbiBwYWNrZXQhXG4iKTsKKyAgICAgICAgICAgICAgICBleGl0KDEpOworICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJvc2ZsYWc9MTsKKyAgICAgICAgICAgICAgZGVw YWNrZXQrPW9wX2RlLmJ5dGVzOworCisgICAgICAgICAgICAgIC8qIGNoZWNrIGVvcyBmbGFnICov CisgICAgICAgICAgICAgIGlmKGVvc2ZsYWcpeworICAgICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCJNdWx0aXBsZSBkZWNvZGVkIHBhY2tldHMgd2l0aCBlb3MgZmxhZyFcbiIpOworICAgICAg ICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZihv cF9kZS5lX29fcyllb3NmbGFnPTE7CisKKyAgICAgICAgICAgICAgLyogY2hlY2sgZ3JhbnVsZXBv cyBmbGFnICovCisgICAgICAgICAgICAgIGlmKG9wX2RlLmdyYW51bGVwb3MhPS0xKXsKKyAgICAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiIGdyYW51bGU6JWxkICIsKGxvbmcpb3BfZGUuZ3Jh bnVsZXBvcyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg ICAgICAgIH0KICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTEzNTYsMTA0ICsxNzEzLDEyNCBAQCBp bnQgbWFpbih2b2lkKXsKICAgICAvKiAxNyBvbmx5ICovCiAgICAgY29uc3QgaW50IHBhY2tldHNb XT17MTcsIC0xfTsKICAgICBjb25zdCBpbnQgKmhlYWRyZXRbXT17aGVhZDFfMCxOVUxMfTsKLSAg ICAKKwogICAgIGZwcmludGYoc3RkZXJyLCJ0ZXN0aW5nIHNpbmdsZSBwYWdlIGVuY29kaW5nLi4u ICIpOwotICAgIHRlc3RfcGFjayhwYWNrZXRzLGhlYWRyZXQpOworICAgIHRlc3RfcGFjayhwYWNr ZXRzLGhlYWRyZXQsMCwwLDApOwogICB9CiAKICAgewogICAgIC8qIDE3LCAyNTQsIDI1NSwgMjU2 LCA1MDAsIDUxMCwgNjAwIGJ5dGUsIHBhZCAqLwogICAgIGNvbnN0IGludCBwYWNrZXRzW109ezE3 LCAyNTQsIDI1NSwgMjU2LCA1MDAsIDUxMCwgNjAwLCAtMX07CiAgICAgY29uc3QgaW50ICpoZWFk cmV0W109e2hlYWQxXzEsaGVhZDJfMSxOVUxMfTsKLSAgICAKKwogICAgIGZwcmludGYoc3RkZXJy LCJ0ZXN0aW5nIGJhc2ljIHBhZ2UgZW5jb2RpbmcuLi4gIik7Ci0gICAgdGVzdF9wYWNrKHBhY2tl dHMsaGVhZHJldCk7CisgICAgdGVzdF9wYWNrKHBhY2tldHMsaGVhZHJldCwwLDAsMCk7CiAgIH0K IAogICB7CiAgICAgLyogbmlsIHBhY2tldHM7IGJlZ2lubmluZyxtaWRkbGUsZW5kICovCiAgICAg Y29uc3QgaW50IHBhY2tldHNbXT17MCwxNywgMjU0LCAyNTUsIDAsIDI1NiwgMCwgNTAwLCA1MTAs IDYwMCwgMCwgLTF9OwogICAgIGNvbnN0IGludCAqaGVhZHJldFtdPXtoZWFkMV8yLGhlYWQyXzIs TlVMTH07Ci0gICAgCisKICAgICBmcHJpbnRmKHN0ZGVyciwidGVzdGluZyBiYXNpYyBuaWwgcGFj a2V0cy4uLiAiKTsKLSAgICB0ZXN0X3BhY2socGFja2V0cyxoZWFkcmV0KTsKKyAgICB0ZXN0X3Bh Y2socGFja2V0cyxoZWFkcmV0LDAsMCwwKTsKICAgfQogCiAgIHsKICAgICAvKiBsYXJnZSBpbml0 aWFsIHBhY2tldCAqLwogICAgIGNvbnN0IGludCBwYWNrZXRzW109ezQzNDUsMjU5LDI1NSwtMX07 CiAgICAgY29uc3QgaW50ICpoZWFkcmV0W109e2hlYWQxXzMsaGVhZDJfMyxOVUxMfTsKLSAgICAK KwogICAgIGZwcmludGYoc3RkZXJyLCJ0ZXN0aW5nIGluaXRpYWwtcGFja2V0IGxhY2luZyA+IDRr Li4uICIpOwotICAgIHRlc3RfcGFjayhwYWNrZXRzLGhlYWRyZXQpOworICAgIHRlc3RfcGFjayhw YWNrZXRzLGhlYWRyZXQsMCwwLDApOwogICB9CiAKICAgewotICAgIC8qIGNvbnRpbnVpbmcgcGFj a2V0IHRlc3QgKi8KLSAgICBjb25zdCBpbnQgcGFja2V0c1tdPXswLDQzNDUsMjU5LDI1NSwtMX07 CisgICAgLyogY29udGludWluZyBwYWNrZXQgdGVzdDsgd2l0aCBwYWdlIHNwaWxsIGV4cGFuc2lv biwgd2UgaGF2ZSB0bworICAgICAgIG92ZXJmbG93IHRoZSBsYWNpbmcgdGFibGUuICovCisgICAg Y29uc3QgaW50IHBhY2tldHNbXT17MCw2NTUwMCwyNTksMjU1LC0xfTsKICAgICBjb25zdCBpbnQg KmhlYWRyZXRbXT17aGVhZDFfNCxoZWFkMl80LGhlYWQzXzQsTlVMTH07Ci0gICAgCisKICAgICBm cHJpbnRmKHN0ZGVyciwidGVzdGluZyBzaW5nbGUgcGFja2V0IHBhZ2Ugc3Bhbi4uLiAiKTsKLSAg ICB0ZXN0X3BhY2socGFja2V0cyxoZWFkcmV0KTsKKyAgICB0ZXN0X3BhY2socGFja2V0cyxoZWFk cmV0LDAsMCwwKTsKKyAgfQorCisgIHsKKyAgICAvKiBzcGlsbCBleHBhbmQgcGFja2V0IHRlc3Qg Ki8KKyAgICBjb25zdCBpbnQgcGFja2V0c1tdPXswLDQzNDUsMjU5LDI1NSwwLDAsLTF9OworICAg IGNvbnN0IGludCAqaGVhZHJldFtdPXtoZWFkMV80YixoZWFkMl80YixoZWFkM180YixOVUxMfTsK KworICAgIGZwcmludGYoc3RkZXJyLCJ0ZXN0aW5nIHBhZ2Ugc3BpbGwgZXhwYW5zaW9uLi4uICIp OworICAgIHRlc3RfcGFjayhwYWNrZXRzLGhlYWRyZXQsMCwwLDApOwogICB9CiAKICAgLyogcGFn ZSB3aXRoIHRoZSAyNTUgc2VnbWVudCBsaW1pdCAqLwogICB7CiAKICAgICBjb25zdCBpbnQgcGFj a2V0c1tdPXswLDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwxMCwx MCwxMCwxMCwKLQkJICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEw LDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgMTAsMTAs MTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAx MCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0J CSAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwx MCwKLQkJICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEwLDEwLDEw LDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgMTAsMTAsMTAsMTAs MTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwx MCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEw LDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJ ICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEw LAotCQkgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgMTAsMTAsMTAsMTAsMTAsMTAs MTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwx MCwxMCwxMCwxMCwKLQkJICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEw LDEwLDEwLDEwLDEwLDEwLAotCQkgICAxMCwxMCwxMCwxMCwxMCwxMCwxMCwxMCwKLQkJICAgMTAs MTAsMTAsMTAsMTAsMTAsMTAsMTAsCi0JCSAgIDEwLDEwLDEwLDEwLDEwLDEwLDEwLDEwLAotCQkg ICAxMCwxMCwxMCwxMCwxMCwxMCwxMCw1MCwtMX07CisgICAgICAgICAgICAgICAgICAgMTAsMTAs MTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAs MTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAg ICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAg ICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAs MTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAs MTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAg ICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAg MTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAs MTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAs CisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAg ICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAs MTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAs MTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisg ICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAg ICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAs MTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAs MTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAg ICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAg ICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAs MTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAs MTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAg ICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAg MTAsMTAsMTAsMTAsMTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAs MTAsMTAsMTAsMTAsCisgICAgICAgICAgICAgICAgICAgMTAsMTAsMTAsMTAsMTAsMTAsMTAsNTAs LTF9OwogICAgIGNvbnN0IGludCAqaGVhZHJldFtdPXtoZWFkMV81LGhlYWQyXzUsaGVhZDNfNSxO VUxMfTsKLSAgICAKKwogICAgIGZwcmludGYoc3RkZXJyLCJ0ZXN0aW5nIG1heCBwYWNrZXQgc2Vn bWVudHMuLi4gIik7Ci0gICAgdGVzdF9wYWNrKHBhY2tldHMsaGVhZHJldCk7CisgICAgdGVzdF9w YWNrKHBhY2tldHMsaGVhZHJldCwwLDAsMCk7CiAgIH0KIAogICB7CiAgICAgLyogcGFja2V0IHRo YXQgb3ZlcnNwYW5zIG92ZXIgYW4gZW50aXJlIHBhZ2UgKi8KLSAgICBjb25zdCBpbnQgcGFja2V0 c1tdPXswLDEwMCw5MDAwLDI1OSwyNTUsLTF9OworICAgIGNvbnN0IGludCBwYWNrZXRzW109ezAs MTAwLDEzMDA0OSwyNTksMjU1LC0xfTsKICAgICBjb25zdCBpbnQgKmhlYWRyZXRbXT17aGVhZDFf NixoZWFkMl82LGhlYWQzXzYsaGVhZDRfNixOVUxMfTsKLSAgICAKKwogICAgIGZwcmludGYoc3Rk ZXJyLCJ0ZXN0aW5nIHZlcnkgbGFyZ2UgcGFja2V0cy4uLiAiKTsKLSAgICB0ZXN0X3BhY2socGFj a2V0cyxoZWFkcmV0KTsKKyAgICB0ZXN0X3BhY2socGFja2V0cyxoZWFkcmV0LDAsMCwwKTsKKyAg fQorCisgIHsKKyAgICAvKiB0ZXN0IGZvciB0aGUgbGlib2dnIDEuMS4xIHJlc3luYyBpbiBsYXJn ZSBjb250aW51YXRpb24gYnVnCisgICAgICAgZm91bmQgYnkgSm9zaCBDb2Fsc29uKSAgKi8KKyAg ICBjb25zdCBpbnQgcGFja2V0c1tdPXswLDEwMCwxMzAwNDksMjU5LDI1NSwtMX07CisgICAgY29u c3QgaW50ICpoZWFkcmV0W109e2hlYWQxXzYsaGVhZDJfNixoZWFkM182LGhlYWQ0XzYsTlVMTH07 CisKKyAgICBmcHJpbnRmKHN0ZGVyciwidGVzdGluZyBjb250aW51YXRpb24gcmVzeW5jIGluIHZl cnkgbGFyZ2UgcGFja2V0cy4uLiAiKTsKKyAgICB0ZXN0X3BhY2socGFja2V0cyxoZWFkcmV0LDEw MCwyLDMpOwogICB9CiAKICAgewogICAgIC8qIHRlcm0gb25seSBwYWdlLiAgd2h5IG5vdD8gKi8K LSAgICBjb25zdCBpbnQgcGFja2V0c1tdPXswLDEwMCw0MDgwLC0xfTsKKyAgICBjb25zdCBpbnQg cGFja2V0c1tdPXswLDEwMCw2NDc3MCwtMX07CiAgICAgY29uc3QgaW50ICpoZWFkcmV0W109e2hl YWQxXzcsaGVhZDJfNyxoZWFkM183LE5VTEx9OwotICAgIAorCiAgICAgZnByaW50ZihzdGRlcnIs InRlc3RpbmcgemVybyBkYXRhIHBhZ2UgKDEgbmlsIHBhY2tldCkuLi4gIik7Ci0gICAgdGVzdF9w YWNrKHBhY2tldHMsaGVhZHJldCk7CisgICAgdGVzdF9wYWNrKHBhY2tldHMsaGVhZHJldCwwLDAs MCk7CiAgIH0KIAogCkBAIC0xNDYxLDE2ICsxODM4LDE2IEBAIGludCBtYWluKHZvaWQpewogICB7 CiAgICAgLyogYnVpbGQgYSBidW5jaCBvZiBwYWdlcyBmb3IgdGVzdGluZyAqLwogICAgIHVuc2ln bmVkIGNoYXIgKmRhdGE9X29nZ19tYWxsb2MoMTAyNCoxMDI0KTsKLSAgICBpbnQgcGxbXT17MCwx MDAsNDA3OSwyOTU2LDIwNTcsNzYsMzQsOTEyLDAsMjM0LDEwMDAsMTAwMCwxMDAwLDMwMCwtMX07 CisgICAgaW50IHBsW109ezAsIDEsMSw5OCw0MDc5LCAxLDEsMjk1NCwyMDU3LCA3NiwzNCw5MTIs MCwyMzQsMTAwMCwxMDAwLCAxMDAwLDMwMCwtMX07CiAgICAgaW50IGlucHRyPTAsaSxqOwogICAg IG9nZ19wYWdlIG9nWzVdOwotICAgIAorCiAgICAgb2dnX3N0cmVhbV9yZXNldCgmb3NfZW4pOwog CiAgICAgZm9yKGk9MDtwbFtpXSE9LTE7aSsrKXsKICAgICAgIG9nZ19wYWNrZXQgb3A7CiAgICAg ICBpbnQgbGVuPXBsW2ldOwotICAgICAgCisKICAgICAgIG9wLnBhY2tldD1kYXRhK2lucHRyOwog ICAgICAgb3AuYnl0ZXM9bGVuOwogICAgICAgb3AuZV9vX3M9KHBsW2krMV08MD8xOjApOwpAQCAt MTQ4NSw4ICsxODYyLDggQEAgaW50IG1haW4odm9pZCl7CiAgICAgLyogcmV0cmlldmUgZmluaXNo ZWQgcGFnZXMgKi8KICAgICBmb3IoaT0wO2k8NTtpKyspewogICAgICAgaWYob2dnX3N0cmVhbV9w YWdlb3V0KCZvc19lbiwmb2dbaV0pPT0wKXsKLQlmcHJpbnRmKHN0ZGVyciwiVG9vIGZldyBwYWdl cyBvdXRwdXQgYnVpbGRpbmcgc3luYyB0ZXN0cyFcbiIpOwotCWV4aXQoMSk7CisgICAgICAgIGZw cmludGYoc3RkZXJyLCJUb28gZmV3IHBhZ2VzIG91dHB1dCBidWlsZGluZyBzeW5jIHRlc3RzIVxu Iik7CisgICAgICAgIGV4aXQoMSk7CiAgICAgICB9CiAgICAgICBjb3B5X3BhZ2UoJm9nW2ldKTsK ICAgICB9CkBAIC0xNTAxLDExICsxODc4LDExIEBAIGludCBtYWluKHZvaWQpewogICAgICAgb2dn X3N5bmNfcmVzZXQoJm95KTsKICAgICAgIG9nZ19zdHJlYW1fcmVzZXQoJm9zX2RlKTsKICAgICAg IGZvcihpPTA7aTw1O2krKyl7Ci0JbWVtY3B5KG9nZ19zeW5jX2J1ZmZlcigmb3ksb2dbaV0uaGVh ZGVyX2xlbiksb2dbaV0uaGVhZGVyLAotCSAgICAgICBvZ1tpXS5oZWFkZXJfbGVuKTsKLQlvZ2df c3luY193cm90ZSgmb3ksb2dbaV0uaGVhZGVyX2xlbik7Ci0JbWVtY3B5KG9nZ19zeW5jX2J1ZmZl cigmb3ksb2dbaV0uYm9keV9sZW4pLG9nW2ldLmJvZHksb2dbaV0uYm9keV9sZW4pOwotCW9nZ19z eW5jX3dyb3RlKCZveSxvZ1tpXS5ib2R5X2xlbik7CisgICAgICAgIG1lbWNweShvZ2dfc3luY19i dWZmZXIoJm95LG9nW2ldLmhlYWRlcl9sZW4pLG9nW2ldLmhlYWRlciwKKyAgICAgICAgICAgICAg IG9nW2ldLmhlYWRlcl9sZW4pOworICAgICAgICBvZ2dfc3luY193cm90ZSgmb3ksb2dbaV0uaGVh ZGVyX2xlbik7CisgICAgICAgIG1lbWNweShvZ2dfc3luY19idWZmZXIoJm95LG9nW2ldLmJvZHlf bGVuKSxvZ1tpXS5ib2R5LG9nW2ldLmJvZHlfbGVuKTsKKyAgICAgICAgb2dnX3N5bmNfd3JvdGUo Jm95LG9nW2ldLmJvZHlfbGVuKTsKICAgICAgIH0KIAogICAgICAgb2dnX3N5bmNfcGFnZW91dCgm b3ksJnRlbXApOwpAQCAtMTUxOCwyMSArMTg5NSwyNSBAQCBpbnQgbWFpbih2b2lkKXsKICAgICAg IG9nZ19zdHJlYW1fcGFnZWluKCZvc19kZSwmdGVtcCk7CiAKICAgICAgIC8qIGRvIHdlIGdldCB0 aGUgZXhwZWN0ZWQgcmVzdWx0cy9wYWNrZXRzPyAqLwotICAgICAgCisKICAgICAgIGlmKG9nZ19z dHJlYW1fcGFja2V0b3V0KCZvc19kZSwmdGVzdCkhPTEpZXJyb3IoKTsKICAgICAgIGNoZWNrcGFj a2V0KCZ0ZXN0LDAsMCwwKTsKICAgICAgIGlmKG9nZ19zdHJlYW1fcGFja2V0b3V0KCZvc19kZSwm dGVzdCkhPTEpZXJyb3IoKTsKLSAgICAgIGNoZWNrcGFja2V0KCZ0ZXN0LDEwMCwxLC0xKTsKKyAg ICAgIGNoZWNrcGFja2V0KCZ0ZXN0LDEsMSwtMSk7CiAgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tl dG91dCgmb3NfZGUsJnRlc3QpIT0xKWVycm9yKCk7Ci0gICAgICBjaGVja3BhY2tldCgmdGVzdCw0 MDc5LDIsMzAwMCk7CisgICAgICBjaGVja3BhY2tldCgmdGVzdCwxLDIsLTEpOworICAgICAgaWYo b2dnX3N0cmVhbV9wYWNrZXRvdXQoJm9zX2RlLCZ0ZXN0KSE9MSllcnJvcigpOworICAgICAgY2hl Y2twYWNrZXQoJnRlc3QsOTgsMywtMSk7CisgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgm b3NfZGUsJnRlc3QpIT0xKWVycm9yKCk7CisgICAgICBjaGVja3BhY2tldCgmdGVzdCw0MDc5LDQs NTAwMCk7CiAgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgmb3NfZGUsJnRlc3QpIT0tMSl7 Ci0JZnByaW50ZihzdGRlcnIsIkVycm9yOiBsb3NzIG9mIHBhZ2UgZGlkIG5vdCByZXR1cm4gZXJy b3JcbiIpOwotCWV4aXQoMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCJFcnJvcjogbG9zcyBv ZiBwYWdlIGRpZCBub3QgcmV0dXJuIGVycm9yXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKICAgICAg IH0KICAgICAgIGlmKG9nZ19zdHJlYW1fcGFja2V0b3V0KCZvc19kZSwmdGVzdCkhPTEpZXJyb3Io KTsKLSAgICAgIGNoZWNrcGFja2V0KCZ0ZXN0LDc2LDUsLTEpOworICAgICAgY2hlY2twYWNrZXQo JnRlc3QsNzYsOSwtMSk7CiAgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgmb3NfZGUsJnRl c3QpIT0xKWVycm9yKCk7Ci0gICAgICBjaGVja3BhY2tldCgmdGVzdCwzNCw2LC0xKTsKKyAgICAg IGNoZWNrcGFja2V0KCZ0ZXN0LDM0LDEwLC0xKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCJvay5c biIpOwogICAgIH0KIApAQCAtMTU0NiwxMSArMTkyNywxMSBAQCBpbnQgbWFpbih2b2lkKXsKICAg ICAgIG9nZ19zeW5jX3Jlc2V0KCZveSk7CiAgICAgICBvZ2dfc3RyZWFtX3Jlc2V0KCZvc19kZSk7 CiAgICAgICBmb3IoaT0wO2k8NTtpKyspewotCW1lbWNweShvZ2dfc3luY19idWZmZXIoJm95LG9n W2ldLmhlYWRlcl9sZW4pLG9nW2ldLmhlYWRlciwKLQkgICAgICAgb2dbaV0uaGVhZGVyX2xlbik7 Ci0Jb2dnX3N5bmNfd3JvdGUoJm95LG9nW2ldLmhlYWRlcl9sZW4pOwotCW1lbWNweShvZ2dfc3lu Y19idWZmZXIoJm95LG9nW2ldLmJvZHlfbGVuKSxvZ1tpXS5ib2R5LG9nW2ldLmJvZHlfbGVuKTsK LQlvZ2dfc3luY193cm90ZSgmb3ksb2dbaV0uYm9keV9sZW4pOworICAgICAgICBtZW1jcHkob2dn X3N5bmNfYnVmZmVyKCZveSxvZ1tpXS5oZWFkZXJfbGVuKSxvZ1tpXS5oZWFkZXIsCisgICAgICAg ICAgICAgICBvZ1tpXS5oZWFkZXJfbGVuKTsKKyAgICAgICAgb2dnX3N5bmNfd3JvdGUoJm95LG9n W2ldLmhlYWRlcl9sZW4pOworICAgICAgICBtZW1jcHkob2dnX3N5bmNfYnVmZmVyKCZveSxvZ1tp XS5ib2R5X2xlbiksb2dbaV0uYm9keSxvZ1tpXS5ib2R5X2xlbik7CisgICAgICAgIG9nZ19zeW5j X3dyb3RlKCZveSxvZ1tpXS5ib2R5X2xlbik7CiAgICAgICB9CiAKICAgICAgIG9nZ19zeW5jX3Bh Z2VvdXQoJm95LCZ0ZW1wKTsKQEAgLTE1NjUsMjQgKzE5NDYsMzQgQEAgaW50IG1haW4odm9pZCl7 CiAgICAgICBvZ2dfc3RyZWFtX3BhZ2Vpbigmb3NfZGUsJnRlbXApOwogCiAgICAgICAvKiBkbyB3 ZSBnZXQgdGhlIGV4cGVjdGVkIHJlc3VsdHMvcGFja2V0cz8gKi8KLSAgICAgIAorCiAgICAgICBp ZihvZ2dfc3RyZWFtX3BhY2tldG91dCgmb3NfZGUsJnRlc3QpIT0xKWVycm9yKCk7CiAgICAgICBj aGVja3BhY2tldCgmdGVzdCwwLDAsMCk7CiAgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgm b3NfZGUsJnRlc3QpIT0xKWVycm9yKCk7Ci0gICAgICBjaGVja3BhY2tldCgmdGVzdCwxMDAsMSwt MSk7Ci0gICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgmb3NfZGUsJnRlc3QpIT0xKWVycm9y KCk7Ci0gICAgICBjaGVja3BhY2tldCgmdGVzdCw0MDc5LDIsMzAwMCk7CisgICAgICBjaGVja3Bh Y2tldCgmdGVzdCwxLDEsLTEpOwogICAgICAgaWYob2dnX3N0cmVhbV9wYWNrZXRvdXQoJm9zX2Rl LCZ0ZXN0KSE9MSllcnJvcigpOwotICAgICAgY2hlY2twYWNrZXQoJnRlc3QsMjk1NiwzLDQwMDAp OworICAgICAgY2hlY2twYWNrZXQoJnRlc3QsMSwyLC0xKTsKKyAgICAgIGlmKG9nZ19zdHJlYW1f cGFja2V0b3V0KCZvc19kZSwmdGVzdCkhPTEpZXJyb3IoKTsKKyAgICAgIGNoZWNrcGFja2V0KCZ0 ZXN0LDk4LDMsLTEpOworICAgICAgaWYob2dnX3N0cmVhbV9wYWNrZXRvdXQoJm9zX2RlLCZ0ZXN0 KSE9MSllcnJvcigpOworICAgICAgY2hlY2twYWNrZXQoJnRlc3QsNDA3OSw0LDUwMDApOworICAg ICAgaWYob2dnX3N0cmVhbV9wYWNrZXRvdXQoJm9zX2RlLCZ0ZXN0KSE9MSllcnJvcigpOworICAg ICAgY2hlY2twYWNrZXQoJnRlc3QsMSw1LC0xKTsKKyAgICAgIGlmKG9nZ19zdHJlYW1fcGFja2V0 b3V0KCZvc19kZSwmdGVzdCkhPTEpZXJyb3IoKTsKKyAgICAgIGNoZWNrcGFja2V0KCZ0ZXN0LDEs NiwtMSk7CisgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgmb3NfZGUsJnRlc3QpIT0xKWVy cm9yKCk7CisgICAgICBjaGVja3BhY2tldCgmdGVzdCwyOTU0LDcsLTEpOworICAgICAgaWYob2dn X3N0cmVhbV9wYWNrZXRvdXQoJm9zX2RlLCZ0ZXN0KSE9MSllcnJvcigpOworICAgICAgY2hlY2tw YWNrZXQoJnRlc3QsMjA1Nyw4LDkwMDApOwogICAgICAgaWYob2dnX3N0cmVhbV9wYWNrZXRvdXQo Jm9zX2RlLCZ0ZXN0KSE9LTEpewotCWZwcmludGYoc3RkZXJyLCJFcnJvcjogbG9zcyBvZiBwYWdl IGRpZCBub3QgcmV0dXJuIGVycm9yXG4iKTsKLQlleGl0KDEpOworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwiRXJyb3I6IGxvc3Mgb2YgcGFnZSBkaWQgbm90IHJldHVybiBlcnJvclxuIik7CisgICAg ICAgIGV4aXQoMSk7CiAgICAgICB9CiAgICAgICBpZihvZ2dfc3RyZWFtX3BhY2tldG91dCgmb3Nf ZGUsJnRlc3QpIT0xKWVycm9yKCk7Ci0gICAgICBjaGVja3BhY2tldCgmdGVzdCwzMDAsMTMsMTQw MDApOworICAgICAgY2hlY2twYWNrZXQoJnRlc3QsMzAwLDE3LDE4MDAwKTsKICAgICAgIGZwcmlu dGYoc3RkZXJyLCJvay5cbiIpOwogICAgIH0KLSAgICAKKwogICAgIC8qIHRoZSByZXN0IG9ubHkg dGVzdCBzeW5jICovCiAgICAgewogICAgICAgb2dnX3BhZ2Ugb2dfZGU7CkBAIC0xNTkwLDM4ICsx OTgxLDM4IEBAIGludCBtYWluKHZvaWQpewogICAgICAgZnByaW50ZihzdGRlcnIsIlRlc3Rpbmcg c3luYyBvbiBwYXJ0aWFsIGlucHV0cy4uLiAiKTsKICAgICAgIG9nZ19zeW5jX3Jlc2V0KCZveSk7 CiAgICAgICBtZW1jcHkob2dnX3N5bmNfYnVmZmVyKCZveSxvZ1sxXS5oZWFkZXJfbGVuKSxvZ1sx XS5oZWFkZXIsCi0JICAgICAzKTsKKyAgICAgICAgICAgICAzKTsKICAgICAgIG9nZ19zeW5jX3dy b3RlKCZveSwzKTsKICAgICAgIGlmKG9nZ19zeW5jX3BhZ2VvdXQoJm95LCZvZ19kZSk+MCllcnJv cigpOwotICAgICAgCisKICAgICAgIC8qIFRlc3QgZnJhY3Rpb25hbCBwYWdlIGlucHV0czogaW5j b21wbGV0ZSBmaXhlZCBoZWFkZXIgKi8KICAgICAgIG1lbWNweShvZ2dfc3luY19idWZmZXIoJm95 LG9nWzFdLmhlYWRlcl9sZW4pLG9nWzFdLmhlYWRlciszLAotCSAgICAgMjApOworICAgICAgICAg ICAgIDIwKTsKICAgICAgIG9nZ19zeW5jX3dyb3RlKCZveSwyMCk7CiAgICAgICBpZihvZ2dfc3lu Y19wYWdlb3V0KCZveSwmb2dfZGUpPjApZXJyb3IoKTsKLSAgICAgIAorCiAgICAgICAvKiBUZXN0 IGZyYWN0aW9uYWwgcGFnZSBpbnB1dHM6IGluY29tcGxldGUgaGVhZGVyICovCiAgICAgICBtZW1j cHkob2dnX3N5bmNfYnVmZmVyKCZveSxvZ1sxXS5oZWFkZXJfbGVuKSxvZ1sxXS5oZWFkZXIrMjMs Ci0JICAgICA1KTsKKyAgICAgICAgICAgICA1KTsKICAgICAgIG9nZ19zeW5jX3dyb3RlKCZveSw1 KTsKICAgICAgIGlmKG9nZ19zeW5jX3BhZ2VvdXQoJm95LCZvZ19kZSk+MCllcnJvcigpOwotICAg ICAgCisKICAgICAgIC8qIFRlc3QgZnJhY3Rpb25hbCBwYWdlIGlucHV0czogaW5jb21wbGV0ZSBi b2R5ICovCi0gICAgICAKKwogICAgICAgbWVtY3B5KG9nZ19zeW5jX2J1ZmZlcigmb3ksb2dbMV0u aGVhZGVyX2xlbiksb2dbMV0uaGVhZGVyKzI4LAotCSAgICAgb2dbMV0uaGVhZGVyX2xlbi0yOCk7 CisgICAgICAgICAgICAgb2dbMV0uaGVhZGVyX2xlbi0yOCk7CiAgICAgICBvZ2dfc3luY193cm90 ZSgmb3ksb2dbMV0uaGVhZGVyX2xlbi0yOCk7CiAgICAgICBpZihvZ2dfc3luY19wYWdlb3V0KCZv eSwmb2dfZGUpPjApZXJyb3IoKTsKLSAgICAgIAorCiAgICAgICBtZW1jcHkob2dnX3N5bmNfYnVm ZmVyKCZveSxvZ1sxXS5ib2R5X2xlbiksb2dbMV0uYm9keSwxMDAwKTsKICAgICAgIG9nZ19zeW5j X3dyb3RlKCZveSwxMDAwKTsKICAgICAgIGlmKG9nZ19zeW5jX3BhZ2VvdXQoJm95LCZvZ19kZSk+ MCllcnJvcigpOwotICAgICAgCisKICAgICAgIG1lbWNweShvZ2dfc3luY19idWZmZXIoJm95LG9n WzFdLmJvZHlfbGVuKSxvZ1sxXS5ib2R5KzEwMDAsCi0JICAgICBvZ1sxXS5ib2R5X2xlbi0xMDAw KTsKKyAgICAgICAgICAgICBvZ1sxXS5ib2R5X2xlbi0xMDAwKTsKICAgICAgIG9nZ19zeW5jX3dy b3RlKCZveSxvZ1sxXS5ib2R5X2xlbi0xMDAwKTsKICAgICAgIGlmKG9nZ19zeW5jX3BhZ2VvdXQo Jm95LCZvZ19kZSk8PTApZXJyb3IoKTsKLSAgICAgIAorCiAgICAgICBmcHJpbnRmKHN0ZGVyciwi b2suXG4iKTsKICAgICB9CiAKQEAgLTE2MjksNjQgKzIwMjAsNjQgQEAgaW50IG1haW4odm9pZCl7 CiAgICAgewogICAgICAgb2dnX3BhZ2Ugb2dfZGU7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwiVGVz dGluZyBzeW5jIG9uIDErcGFydGlhbCBpbnB1dHMuLi4gIik7Ci0gICAgICBvZ2dfc3luY19yZXNl dCgmb3kpOyAKKyAgICAgIG9nZ19zeW5jX3Jlc2V0KCZveSk7CiAKICAgICAgIG1lbWNweShvZ2df c3luY19idWZmZXIoJm95LG9nWzFdLmhlYWRlcl9sZW4pLG9nWzFdLmhlYWRlciwKLQkgICAgIG9n WzFdLmhlYWRlcl9sZW4pOworICAgICAgICAgICAgIG9nWzFdLmhlYWRlcl9sZW4pOwogICAgICAg b2dnX3N5bmNfd3JvdGUoJm95LG9nWzFdLmhlYWRlcl9sZW4pOwogCiAgICAgICBtZW1jcHkob2dn X3N5bmNfYnVmZmVyKCZveSxvZ1sxXS5ib2R5X2xlbiksb2dbMV0uYm9keSwKLQkgICAgIG9nWzFd LmJvZHlfbGVuKTsKKyAgICAgICAgICAgICBvZ1sxXS5ib2R5X2xlbik7CiAgICAgICBvZ2dfc3lu Y193cm90ZSgmb3ksb2dbMV0uYm9keV9sZW4pOwogCiAgICAgICBtZW1jcHkob2dnX3N5bmNfYnVm ZmVyKCZveSxvZ1sxXS5oZWFkZXJfbGVuKSxvZ1sxXS5oZWFkZXIsCi0JICAgICAyMCk7CisgICAg ICAgICAgICAgMjApOwogICAgICAgb2dnX3N5bmNfd3JvdGUoJm95LDIwKTsKICAgICAgIGlmKG9n Z19zeW5jX3BhZ2VvdXQoJm95LCZvZ19kZSk8PTApZXJyb3IoKTsKICAgICAgIGlmKG9nZ19zeW5j X3BhZ2VvdXQoJm95LCZvZ19kZSk+MCllcnJvcigpOwogCiAgICAgICBtZW1jcHkob2dnX3N5bmNf YnVmZmVyKCZveSxvZ1sxXS5oZWFkZXJfbGVuKSxvZ1sxXS5oZWFkZXIrMjAsCi0JICAgICBvZ1sx XS5oZWFkZXJfbGVuLTIwKTsKKyAgICAgICAgICAgICBvZ1sxXS5oZWFkZXJfbGVuLTIwKTsKICAg ICAgIG9nZ19zeW5jX3dyb3RlKCZveSxvZ1sxXS5oZWFkZXJfbGVuLTIwKTsKICAgICAgIG1lbWNw eShvZ2dfc3luY19idWZmZXIoJm95LG9nWzFdLmJvZHlfbGVuKSxvZ1sxXS5ib2R5LAotCSAgICAg b2dbMV0uYm9keV9sZW4pOworICAgICAgICAgICAgIG9nWzFdLmJvZHlfbGVuKTsKICAgICAgIG9n Z19zeW5jX3dyb3RlKCZveSxvZ1sxXS5ib2R5X2xlbik7CiAgICAgICBpZihvZ2dfc3luY19wYWdl b3V0KCZveSwmb2dfZGUpPD0wKWVycm9yKCk7CiAKICAgICAgIGZwcmludGYoc3RkZXJyLCJvay5c biIpOwogICAgIH0KLSAgICAKKwogICAgIC8qIFRlc3QgcmVjYXB0dXJlOiBnYXJiYWdlICsgcGFn ZSAqLwogICAgIHsKICAgICAgIG9nZ19wYWdlIG9nX2RlOwogICAgICAgZnByaW50ZihzdGRlcnIs IlRlc3Rpbmcgc2VhcmNoIGZvciBjYXB0dXJlLi4uICIpOwotICAgICAgb2dnX3N5bmNfcmVzZXQo Jm95KTsgCi0gICAgICAKKyAgICAgIG9nZ19zeW5jX3Jlc2V0KCZveSk7CisKICAgICAgIC8qICdn YXJiYWdlJyAqLwogICAgICAgbWVtY3B5KG9nZ19zeW5jX2J1ZmZlcigmb3ksb2dbMV0uYm9keV9s ZW4pLG9nWzFdLmJvZHksCi0JICAgICBvZ1sxXS5ib2R5X2xlbik7CisgICAgICAgICAgICAgb2db MV0uYm9keV9sZW4pOwogICAgICAgb2dnX3N5bmNfd3JvdGUoJm95LG9nWzFdLmJvZHlfbGVuKTsK IAogICAgICAgbWVtY3B5KG9nZ19zeW5jX2J1ZmZlcigmb3ksb2dbMV0uaGVhZGVyX2xlbiksb2db MV0uaGVhZGVyLAotCSAgICAgb2dbMV0uaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgb2dbMV0u aGVhZGVyX2xlbik7CiAgICAgICBvZ2dfc3luY193cm90ZSgmb3ksb2dbMV0uaGVhZGVyX2xlbik7 CiAKICAgICAgIG1lbWNweShvZ2dfc3luY19idWZmZXIoJm95LG9nWzFdLmJvZHlfbGVuKSxvZ1sx XS5ib2R5LAotCSAgICAgb2dbMV0uYm9keV9sZW4pOworICAgICAgICAgICAgIG9nWzFdLmJvZHlf bGVuKTsKICAgICAgIG9nZ19zeW5jX3dyb3RlKCZveSxvZ1sxXS5ib2R5X2xlbik7CiAKICAgICAg IG1lbWNweShvZ2dfc3luY19idWZmZXIoJm95LG9nWzJdLmhlYWRlcl9sZW4pLG9nWzJdLmhlYWRl ciwKLQkgICAgIDIwKTsKKyAgICAgICAgICAgICAyMCk7CiAgICAgICBvZ2dfc3luY193cm90ZSgm b3ksMjApOwogICAgICAgaWYob2dnX3N5bmNfcGFnZW91dCgmb3ksJm9nX2RlKT4wKWVycm9yKCk7 CiAgICAgICBpZihvZ2dfc3luY19wYWdlb3V0KCZveSwmb2dfZGUpPD0wKWVycm9yKCk7CiAgICAg ICBpZihvZ2dfc3luY19wYWdlb3V0KCZveSwmb2dfZGUpPjApZXJyb3IoKTsKIAogICAgICAgbWVt Y3B5KG9nZ19zeW5jX2J1ZmZlcigmb3ksb2dbMl0uaGVhZGVyX2xlbiksb2dbMl0uaGVhZGVyKzIw LAotCSAgICAgb2dbMl0uaGVhZGVyX2xlbi0yMCk7CisgICAgICAgICAgICAgb2dbMl0uaGVhZGVy X2xlbi0yMCk7CiAgICAgICBvZ2dfc3luY193cm90ZSgmb3ksb2dbMl0uaGVhZGVyX2xlbi0yMCk7 CiAgICAgICBtZW1jcHkob2dnX3N5bmNfYnVmZmVyKCZveSxvZ1syXS5ib2R5X2xlbiksb2dbMl0u Ym9keSwKLQkgICAgIG9nWzJdLmJvZHlfbGVuKTsKKyAgICAgICAgICAgICBvZ1syXS5ib2R5X2xl bik7CiAgICAgICBvZ2dfc3luY193cm90ZSgmb3ksb2dbMl0uYm9keV9sZW4pOwogICAgICAgaWYo b2dnX3N5bmNfcGFnZW91dCgmb3ksJm9nX2RlKTw9MCllcnJvcigpOwogCkBAIC0xNjk3LDM2ICsy MDg4LDM2IEBAIGludCBtYWluKHZvaWQpewogICAgIHsKICAgICAgIG9nZ19wYWdlIG9nX2RlOwog ICAgICAgZnByaW50ZihzdGRlcnIsIlRlc3RpbmcgcmVjYXB0dXJlLi4uICIpOwotICAgICAgb2dn X3N5bmNfcmVzZXQoJm95KTsgCisgICAgICBvZ2dfc3luY19yZXNldCgmb3kpOwogCiAgICAgICBt ZW1jcHkob2dnX3N5bmNfYnVmZmVyKCZveSxvZ1sxXS5oZWFkZXJfbGVuKSxvZ1sxXS5oZWFkZXIs Ci0JICAgICBvZ1sxXS5oZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICBvZ1sxXS5oZWFkZXJfbGVu KTsKICAgICAgIG9nZ19zeW5jX3dyb3RlKCZveSxvZ1sxXS5oZWFkZXJfbGVuKTsKIAogICAgICAg bWVtY3B5KG9nZ19zeW5jX2J1ZmZlcigmb3ksb2dbMV0uYm9keV9sZW4pLG9nWzFdLmJvZHksCi0J ICAgICBvZ1sxXS5ib2R5X2xlbik7CisgICAgICAgICAgICAgb2dbMV0uYm9keV9sZW4pOwogICAg ICAgb2dnX3N5bmNfd3JvdGUoJm95LG9nWzFdLmJvZHlfbGVuKTsKIAogICAgICAgbWVtY3B5KG9n Z19zeW5jX2J1ZmZlcigmb3ksb2dbMl0uaGVhZGVyX2xlbiksb2dbMl0uaGVhZGVyLAotCSAgICAg b2dbMl0uaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgb2dbMl0uaGVhZGVyX2xlbik7CiAgICAg ICBvZ2dfc3luY193cm90ZSgmb3ksb2dbMl0uaGVhZGVyX2xlbik7CiAKICAgICAgIG1lbWNweShv Z2dfc3luY19idWZmZXIoJm95LG9nWzJdLmhlYWRlcl9sZW4pLG9nWzJdLmhlYWRlciwKLQkgICAg IG9nWzJdLmhlYWRlcl9sZW4pOworICAgICAgICAgICAgIG9nWzJdLmhlYWRlcl9sZW4pOwogICAg ICAgb2dnX3N5bmNfd3JvdGUoJm95LG9nWzJdLmhlYWRlcl9sZW4pOwogCiAgICAgICBpZihvZ2df c3luY19wYWdlb3V0KCZveSwmb2dfZGUpPD0wKWVycm9yKCk7CiAKICAgICAgIG1lbWNweShvZ2df c3luY19idWZmZXIoJm95LG9nWzJdLmJvZHlfbGVuKSxvZ1syXS5ib2R5LAotCSAgICAgb2dbMl0u Ym9keV9sZW4tNSk7CisgICAgICAgICAgICAgb2dbMl0uYm9keV9sZW4tNSk7CiAgICAgICBvZ2df c3luY193cm90ZSgmb3ksb2dbMl0uYm9keV9sZW4tNSk7CiAKICAgICAgIG1lbWNweShvZ2dfc3lu Y19idWZmZXIoJm95LG9nWzNdLmhlYWRlcl9sZW4pLG9nWzNdLmhlYWRlciwKLQkgICAgIG9nWzNd LmhlYWRlcl9sZW4pOworICAgICAgICAgICAgIG9nWzNdLmhlYWRlcl9sZW4pOwogICAgICAgb2dn X3N5bmNfd3JvdGUoJm95LG9nWzNdLmhlYWRlcl9sZW4pOwogCiAgICAgICBtZW1jcHkob2dnX3N5 bmNfYnVmZmVyKCZveSxvZ1szXS5ib2R5X2xlbiksb2dbM10uYm9keSwKLQkgICAgIG9nWzNdLmJv ZHlfbGVuKTsKKyAgICAgICAgICAgICBvZ1szXS5ib2R5X2xlbik7CiAgICAgICBvZ2dfc3luY193 cm90ZSgmb3ksb2dbM10uYm9keV9sZW4pOwogCiAgICAgICBpZihvZ2dfc3luY19wYWdlb3V0KCZv eSwmb2dfZGUpPjApZXJyb3IoKTsKQEAgLTE3MzQsMTMgKzIxMjUsMTYgQEAgaW50IG1haW4odm9p ZCl7CiAKICAgICAgIGZwcmludGYoc3RkZXJyLCJvay5cbiIpOwogICAgIH0KLSAgfSAgICAKKwor ICAgIC8qIEZyZWUgcGFnZSBkYXRhIHRoYXQgd2FzIHByZXZpb3VzbHkgY29waWVkICovCisgICAg eworICAgICAgZm9yKGk9MDtpPDU7aSsrKXsKKyAgICAgICAgZnJlZV9wYWdlKCZvZ1tpXSk7Cisg ICAgICB9CisgICAgfQorICB9CiAKICAgcmV0dXJuKDApOwogfQogCiAjZW5kaWYKLQotCi0KLQpk aWZmIC0tZ2l0IGEvc3lzL3NyYy9jbWQvYXVkaW8vbGlib2dnL21rZmlsZSBiL3N5cy9zcmMvY21k L2F1ZGlvL2xpYm9nZy9ta2ZpbGUKLS0tIGEvc3lzL3NyYy9jbWQvYXVkaW8vbGlib2dnL21rZmls ZQorKysgYi9zeXMvc3JjL2NtZC9hdWRpby9saWJvZ2cvbWtmaWxlCkBAIC0xLDcgKzEsNyBAQAog PC8kb2JqdHlwZS9ta2ZpbGUKIAogQ0M9cGNjCi1DRkxBR1M9LUkuICAtYworQ0ZMQUdTPS1JLiAt YwogTElCPWxpYm9nZy5hJE8KIAogT0ZJTEVTPVwKQEAgLTEyLDE0ICsxMiw5IEBAIEhGSUxFUz1c CiAJb2dnL29nZy5oXAogCW9nZy9vc190eXBlcy5oXAogCi1VUERBVEU9XAotCW1rZmlsZVwKLQkk SEZJTEVTXAotCSR7T0ZJTEVTOiUuJE89JS5jfVwKLQkke0xJQjovJG9ianR5cGUvJT0vMzg2LyV9 XAotCiA8L3N5cy9zcmMvY21kL21rbGliCiAKIG51a2U6VjoKIAltayBjbGVhbgogCXJtIC1mIGxp Ym9nZy5hWyRPU10KKwpkaWZmIC0tZ2l0IGEvc3lzL3NyYy9jbWQvYXVkaW8vbGlib2dnL29nZy9j b25maWdfdHlwZXMuaCBiL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9nZy9vZ2cvY29uZmlnX3R5cGVz LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSBhL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9n Zy9vZ2cvY29uZmlnX3R5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0jaWZu ZGVmIF9fQ09ORklHX1RZUEVTX0hfXwotI2RlZmluZSBfX0NPTkZJR19UWVBFU19IX18KLQotLyog dGhlc2UgYXJlIGZpbGxlZCBpbiBieSBjb25maWd1cmUgKi8KLXR5cGVkZWYgaW50MTZfdCBvZ2df aW50MTZfdDsKLXR5cGVkZWYgaW50MzJfdCBvZ2dfaW50MzJfdDsKLXR5cGVkZWYgdV9pbnQzMl90 IG9nZ191aW50MzJfdDsKLXR5cGVkZWYgaW50NjRfdCBvZ2dfaW50NjRfdDsKLQotI2VuZGlmCmRp ZmYgLS1naXQgYS9zeXMvc3JjL2NtZC9hdWRpby9saWJvZ2cvb2dnL29nZy5oIGIvc3lzL3NyYy9j bWQvYXVkaW8vbGlib2dnL29nZy9vZ2cuaAotLS0gYS9zeXMvc3JjL2NtZC9hdWRpby9saWJvZ2cv b2dnL29nZy5oCisrKyBiL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9nZy9vZ2cvb2dnLmgKQEAgLTUs MTMgKzUsMTMgQEAKICAqIEdPVkVSTkVEIEJZIEEgQlNELVNUWUxFIFNPVVJDRSBMSUNFTlNFIElO Q0xVREVEIFdJVEggVEhJUyBTT1VSQ0UgKgogICogSU4gJ0NPUFlJTkcnLiBQTEVBU0UgUkVBRCBU SEVTRSBURVJNUyBCRUZPUkUgRElTVFJJQlVUSU5HLiAgICAgICAqCiAgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAq IFRIRSBPZ2dWb3JiaXMgU09VUkNFIENPREUgSVMgKEMpIENPUFlSSUdIVCAxOTk0LTIwMDIgICAg ICAgICAgICAgKgorICogVEhFIE9nZ1ZvcmJpcyBTT1VSQ0UgQ09ERSBJUyAoQykgQ09QWVJJR0hU IDE5OTQtMjAwNyAgICAgICAgICAgICAqCiAgKiBieSB0aGUgWGlwaC5PcmcgRm91bmRhdGlvbiBo dHRwOi8vd3d3LnhpcGgub3JnLyAgICAgICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiAKICBmdW5jdGlvbjogdG9wbGV2ZWwgbGlib2dnIGluY2x1ZGUKLSBsYXN0IG1v ZDogJElkOiBvZ2cuaCx2IDEuMTggMjAwMi8wNy8xMyAxMDoyODozMyBnaWxlcyBFeHAgJAorIGxh c3QgbW9kOiAkSWQkCiAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpZm5kZWYgX09HR19ICkBAIC0yMyw5ICsy MywxNSBAQCBleHRlcm4gIkMiIHsKIAogI3ByYWdtYSBsaWIgIi9zeXMvc3JjL2NtZC9hdWRpby9s aWJvZ2cvbGlib2dnLmEkTyIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG9nZy9v c190eXBlcy5oPgogCiB0eXBlZGVmIHN0cnVjdCB7CisgIHZvaWQgKmlvdl9iYXNlOworICBzaXpl X3QgaW92X2xlbjsKK30gb2dnX2lvdmVjX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKICAgbG9uZyBl bmRieXRlOwogICBpbnQgIGVuZGJpdDsKIApAQCAtNTUsOCArNjEsOCBAQCB0eXBlZGVmIHN0cnVj dCB7CiAKICAgaW50ICAgICAqbGFjaW5nX3ZhbHM7ICAgICAgLyogVGhlIHZhbHVlcyB0aGF0IHdp bGwgZ28gdG8gdGhlIHNlZ21lbnQgdGFibGUgKi8KICAgb2dnX2ludDY0X3QgKmdyYW51bGVfdmFs czsgLyogZ3JhbnVsZXBvcyB2YWx1ZXMgZm9yIGhlYWRlcnMuIE5vdCBjb21wYWN0Ci0JCQkJdGhp cyB3YXksIGJ1dCBpdCBpcyBzaW1wbGUgY291cGxlZCB0byB0aGUKLQkJCQlsYWNpbmcgZmlmbyAq LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHdheSwgYnV0IGl0IGlzIHNp bXBsZSBjb3VwbGVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWNp bmcgZmlmbyAqLwogICBsb25nICAgIGxhY2luZ19zdG9yYWdlOwogICBsb25nICAgIGxhY2luZ19m aWxsOwogICBsb25nICAgIGxhY2luZ19wYWNrZXQ7CkBAIC03MSwxMCArNzcsMTAgQEAgdHlwZWRl ZiBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhIGxvZ2ljYWwgYml0 c3RyZWFtICovCiAgIGxvbmcgICAgc2VyaWFsbm87CiAgIGxvbmcgICAgcGFnZW5vOwotICBvZ2df aW50NjRfdCAgcGFja2V0bm87ICAgICAgLyogc2VxdWVuY2UgbnVtYmVyIGZvciBkZWNvZGU7IHRo ZSBmcmFtaW5nCisgIG9nZ19pbnQ2NF90ICBwYWNrZXRubzsgIC8qIHNlcXVlbmNlIG51bWJlciBm b3IgZGVjb2RlOyB0aGUgZnJhbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbm93 cyB3aGVyZSB0aGVyZSdzIGEgaG9sZSBpbiB0aGUgZGF0YSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnV0IHdlIG5lZWQgY291cGxpbmcgc28gdGhhdCB0aGUgY29kZWMKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHdoaWNoIGlzIGluIGEgc2VwZXJhdGUgYWJzdHJhY3Rpb24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoaWNoIGlzIGluIGEgc2VwYXJhdGUgYWJz dHJhY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIpIGFsc28ga25vd3Mg YWJvdXQgdGhlIGdhcCAqLwogICBvZ2dfaW50NjRfdCAgIGdyYW51bGVwb3M7CiAKQEAgLTkwLDEy ICs5NiwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgIGxvbmcgIGVfb19zOwogCiAgIG9nZ19pbnQ2 NF90ICBncmFudWxlcG9zOwotICAKKwogICBvZ2dfaW50NjRfdCAgcGFja2V0bm87ICAgICAvKiBz ZXF1ZW5jZSBudW1iZXIgZm9yIGRlY29kZTsgdGhlIGZyYW1pbmcKLQkJCQlrbm93cyB3aGVyZSB0 aGVyZSdzIGEgaG9sZSBpbiB0aGUgZGF0YSwKLQkJCQlidXQgd2UgbmVlZCBjb3VwbGluZyBzbyB0 aGF0IHRoZSBjb2RlYwotCQkJCSh3aGljaCBpcyBpbiBhIHNlcGVyYXRlIGFic3RyYWN0aW9uCi0J CQkJbGF5ZXIpIGFsc28ga25vd3MgYWJvdXQgdGhlIGdhcCAqLworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrbm93cyB3aGVyZSB0aGVyZSdzIGEgaG9sZSBpbiB0aGUgZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHdlIG5lZWQgY291cGxpbmcgc28gdGhh dCB0aGUgY29kZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoaWNoIGlzIGlu IGEgc2VwYXJhdGUgYWJzdHJhY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGF5ZXIpIGFsc28ga25vd3MgYWJvdXQgdGhlIGdhcCAqLwogfSBvZ2dfcGFja2V0OwogCiB0eXBl ZGVmIHN0cnVjdCB7CkBAIC0xMTIsNiArMTE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogLyogT2dn IEJJVFNUUkVBTSBQUklNSVRJVkVTOiBiaXRzdHJlYW0gKioqKioqKioqKioqKioqKioqKioqKioq LwogCiBleHRlcm4gdm9pZCAgb2dncGFja193cml0ZWluaXQob2dncGFja19idWZmZXIgKmIpOwor ZXh0ZXJuIGludCAgIG9nZ3BhY2tfd3JpdGVjaGVjayhvZ2dwYWNrX2J1ZmZlciAqYik7CiBleHRl cm4gdm9pZCAgb2dncGFja193cml0ZXRydW5jKG9nZ3BhY2tfYnVmZmVyICpiLGxvbmcgYml0cyk7 CiBleHRlcm4gdm9pZCAgb2dncGFja193cml0ZWFsaWduKG9nZ3BhY2tfYnVmZmVyICpiKTsKIGV4 dGVybiB2b2lkICBvZ2dwYWNrX3dyaXRlY29weShvZ2dwYWNrX2J1ZmZlciAqYix2b2lkICpzb3Vy Y2UsbG9uZyBiaXRzKTsKQEAgLTEyOSwxOCArMTM2LDQyIEBAIGV4dGVybiBsb25nICBvZ2dwYWNr X2J5dGVzKG9nZ3BhY2tfYnVmZmUKIGV4dGVybiBsb25nICBvZ2dwYWNrX2JpdHMob2dncGFja19i dWZmZXIgKmIpOwogZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKm9nZ3BhY2tfZ2V0X2J1ZmZlcihvZ2dw YWNrX2J1ZmZlciAqYik7CiAKK2V4dGVybiB2b2lkICBvZ2dwYWNrQl93cml0ZWluaXQob2dncGFj a19idWZmZXIgKmIpOworZXh0ZXJuIGludCAgIG9nZ3BhY2tCX3dyaXRlY2hlY2sob2dncGFja19i dWZmZXIgKmIpOworZXh0ZXJuIHZvaWQgIG9nZ3BhY2tCX3dyaXRldHJ1bmMob2dncGFja19idWZm ZXIgKmIsbG9uZyBiaXRzKTsKK2V4dGVybiB2b2lkICBvZ2dwYWNrQl93cml0ZWFsaWduKG9nZ3Bh Y2tfYnVmZmVyICpiKTsKK2V4dGVybiB2b2lkICBvZ2dwYWNrQl93cml0ZWNvcHkob2dncGFja19i dWZmZXIgKmIsdm9pZCAqc291cmNlLGxvbmcgYml0cyk7CitleHRlcm4gdm9pZCAgb2dncGFja0Jf cmVzZXQob2dncGFja19idWZmZXIgKmIpOworZXh0ZXJuIHZvaWQgIG9nZ3BhY2tCX3dyaXRlY2xl YXIob2dncGFja19idWZmZXIgKmIpOworZXh0ZXJuIHZvaWQgIG9nZ3BhY2tCX3JlYWRpbml0KG9n Z3BhY2tfYnVmZmVyICpiLHVuc2lnbmVkIGNoYXIgKmJ1ZixpbnQgYnl0ZXMpOworZXh0ZXJuIHZv aWQgIG9nZ3BhY2tCX3dyaXRlKG9nZ3BhY2tfYnVmZmVyICpiLHVuc2lnbmVkIGxvbmcgdmFsdWUs aW50IGJpdHMpOworZXh0ZXJuIGxvbmcgIG9nZ3BhY2tCX2xvb2sob2dncGFja19idWZmZXIgKmIs aW50IGJpdHMpOworZXh0ZXJuIGxvbmcgIG9nZ3BhY2tCX2xvb2sxKG9nZ3BhY2tfYnVmZmVyICpi KTsKK2V4dGVybiB2b2lkICBvZ2dwYWNrQl9hZHYob2dncGFja19idWZmZXIgKmIsaW50IGJpdHMp OworZXh0ZXJuIHZvaWQgIG9nZ3BhY2tCX2FkdjEob2dncGFja19idWZmZXIgKmIpOworZXh0ZXJu IGxvbmcgIG9nZ3BhY2tCX3JlYWQob2dncGFja19idWZmZXIgKmIsaW50IGJpdHMpOworZXh0ZXJu IGxvbmcgIG9nZ3BhY2tCX3JlYWQxKG9nZ3BhY2tfYnVmZmVyICpiKTsKK2V4dGVybiBsb25nICBv Z2dwYWNrQl9ieXRlcyhvZ2dwYWNrX2J1ZmZlciAqYik7CitleHRlcm4gbG9uZyAgb2dncGFja0Jf Yml0cyhvZ2dwYWNrX2J1ZmZlciAqYik7CitleHRlcm4gdW5zaWduZWQgY2hhciAqb2dncGFja0Jf Z2V0X2J1ZmZlcihvZ2dwYWNrX2J1ZmZlciAqYik7CisKIC8qIE9nZyBCSVRTVFJFQU0gUFJJTUlU SVZFUzogZW5jb2RpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIGV4dGVybiBpbnQg ICAgICBvZ2dfc3RyZWFtX3BhY2tldGluKG9nZ19zdHJlYW1fc3RhdGUgKm9zLCBvZ2dfcGFja2V0 ICpvcCk7CitleHRlcm4gaW50ICAgICAgb2dnX3N0cmVhbV9pb3ZlY2luKG9nZ19zdHJlYW1fc3Rh dGUgKm9zLCBvZ2dfaW92ZWNfdCAqaW92LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgY291bnQsIGxvbmcgZV9vX3MsIG9nZ19pbnQ2NF90IGdyYW51bGVwb3MpOwogZXh0 ZXJuIGludCAgICAgIG9nZ19zdHJlYW1fcGFnZW91dChvZ2dfc3RyZWFtX3N0YXRlICpvcywgb2dn X3BhZ2UgKm9nKTsKK2V4dGVybiBpbnQgICAgICBvZ2dfc3RyZWFtX3BhZ2VvdXRfZmlsbChvZ2df c3RyZWFtX3N0YXRlICpvcywgb2dnX3BhZ2UgKm9nLCBpbnQgbmZpbGwpOwogZXh0ZXJuIGludCAg ICAgIG9nZ19zdHJlYW1fZmx1c2gob2dnX3N0cmVhbV9zdGF0ZSAqb3MsIG9nZ19wYWdlICpvZyk7 CitleHRlcm4gaW50ICAgICAgb2dnX3N0cmVhbV9mbHVzaF9maWxsKG9nZ19zdHJlYW1fc3RhdGUg Km9zLCBvZ2dfcGFnZSAqb2csIGludCBuZmlsbCk7CiAKIC8qIE9nZyBCSVRTVFJFQU0gUFJJTUlU SVZFUzogZGVjb2RpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIGV4dGVybiBpbnQg ICAgICBvZ2dfc3luY19pbml0KG9nZ19zeW5jX3N0YXRlICpveSk7CiBleHRlcm4gaW50ICAgICAg b2dnX3N5bmNfY2xlYXIob2dnX3N5bmNfc3RhdGUgKm95KTsKIGV4dGVybiBpbnQgICAgICBvZ2df c3luY19yZXNldChvZ2dfc3luY19zdGF0ZSAqb3kpOwotZXh0ZXJuIGludAlvZ2dfc3luY19kZXN0 cm95KG9nZ19zeW5jX3N0YXRlICpveSk7CitleHRlcm4gaW50ICAgICAgb2dnX3N5bmNfZGVzdHJv eShvZ2dfc3luY19zdGF0ZSAqb3kpOworZXh0ZXJuIGludCAgICAgIG9nZ19zeW5jX2NoZWNrKG9n Z19zeW5jX3N0YXRlICpveSk7CiAKIGV4dGVybiBjaGFyICAgICpvZ2dfc3luY19idWZmZXIob2dn X3N5bmNfc3RhdGUgKm95LCBsb25nIHNpemUpOwogZXh0ZXJuIGludCAgICAgIG9nZ19zeW5jX3dy b3RlKG9nZ19zeW5jX3N0YXRlICpveSwgbG9uZyBieXRlcyk7CkBAIC0xNTcsMTggKzE4OCwxOSBA QCBleHRlcm4gaW50ICAgICAgb2dnX3N0cmVhbV9jbGVhcihvZ2dfc3RyCiBleHRlcm4gaW50ICAg ICAgb2dnX3N0cmVhbV9yZXNldChvZ2dfc3RyZWFtX3N0YXRlICpvcyk7CiBleHRlcm4gaW50ICAg ICAgb2dnX3N0cmVhbV9yZXNldF9zZXJpYWxubyhvZ2dfc3RyZWFtX3N0YXRlICpvcyxpbnQgc2Vy aWFsbm8pOwogZXh0ZXJuIGludCAgICAgIG9nZ19zdHJlYW1fZGVzdHJveShvZ2dfc3RyZWFtX3N0 YXRlICpvcyk7CitleHRlcm4gaW50ICAgICAgb2dnX3N0cmVhbV9jaGVjayhvZ2dfc3RyZWFtX3N0 YXRlICpvcyk7CiBleHRlcm4gaW50ICAgICAgb2dnX3N0cmVhbV9lb3Mob2dnX3N0cmVhbV9zdGF0 ZSAqb3MpOwogCiBleHRlcm4gdm9pZCAgICAgb2dnX3BhZ2VfY2hlY2tzdW1fc2V0KG9nZ19wYWdl ICpvZyk7CiAKLWV4dGVybiBpbnQgICAgICBvZ2dfcGFnZV92ZXJzaW9uKG9nZ19wYWdlICpvZyk7 Ci1leHRlcm4gaW50ICAgICAgb2dnX3BhZ2VfY29udGludWVkKG9nZ19wYWdlICpvZyk7Ci1leHRl cm4gaW50ICAgICAgb2dnX3BhZ2VfYm9zKG9nZ19wYWdlICpvZyk7Ci1leHRlcm4gaW50ICAgICAg b2dnX3BhZ2VfZW9zKG9nZ19wYWdlICpvZyk7Ci1leHRlcm4gb2dnX2ludDY0X3QgIG9nZ19wYWdl X2dyYW51bGVwb3Mob2dnX3BhZ2UgKm9nKTsKLWV4dGVybiBpbnQgICAgICBvZ2dfcGFnZV9zZXJp YWxubyhvZ2dfcGFnZSAqb2cpOwotZXh0ZXJuIGxvbmcgICAgIG9nZ19wYWdlX3BhZ2VubyhvZ2df cGFnZSAqb2cpOwotZXh0ZXJuIGludCAgICAgIG9nZ19wYWdlX3BhY2tldHMob2dnX3BhZ2UgKm9n KTsKK2V4dGVybiBpbnQgICAgICBvZ2dfcGFnZV92ZXJzaW9uKGNvbnN0IG9nZ19wYWdlICpvZyk7 CitleHRlcm4gaW50ICAgICAgb2dnX3BhZ2VfY29udGludWVkKGNvbnN0IG9nZ19wYWdlICpvZyk7 CitleHRlcm4gaW50ICAgICAgb2dnX3BhZ2VfYm9zKGNvbnN0IG9nZ19wYWdlICpvZyk7CitleHRl cm4gaW50ICAgICAgb2dnX3BhZ2VfZW9zKGNvbnN0IG9nZ19wYWdlICpvZyk7CitleHRlcm4gb2dn X2ludDY0X3QgIG9nZ19wYWdlX2dyYW51bGVwb3MoY29uc3Qgb2dnX3BhZ2UgKm9nKTsKK2V4dGVy biBpbnQgICAgICBvZ2dfcGFnZV9zZXJpYWxubyhjb25zdCBvZ2dfcGFnZSAqb2cpOworZXh0ZXJu IGxvbmcgICAgIG9nZ19wYWdlX3BhZ2Vubyhjb25zdCBvZ2dfcGFnZSAqb2cpOworZXh0ZXJuIGlu dCAgICAgIG9nZ19wYWdlX3BhY2tldHMoY29uc3Qgb2dnX3BhZ2UgKm9nKTsKIAogZXh0ZXJuIHZv aWQgICAgIG9nZ19wYWNrZXRfY2xlYXIob2dnX3BhY2tldCAqb3ApOwogCkBAIC0xNzgsOSArMjEw LDMgQEAgZXh0ZXJuIHZvaWQgICAgIG9nZ19wYWNrZXRfY2xlYXIob2dnX3BhYwogI2VuZGlmCiAK ICNlbmRpZiAgLyogX09HR19IICovCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9zeXMvc3JjL2Nt ZC9hdWRpby9saWJvZ2cvb2dnL29zX3R5cGVzLmggYi9zeXMvc3JjL2NtZC9hdWRpby9saWJvZ2cv b2dnL29zX3R5cGVzLmgKLS0tIGEvc3lzL3NyYy9jbWQvYXVkaW8vbGlib2dnL29nZy9vc190eXBl cy5oCisrKyBiL3N5cy9zcmMvY21kL2F1ZGlvL2xpYm9nZy9vZ2cvb3NfdHlwZXMuaApAQCAtOSw2 ICs5LDcgQEAKICNkZWZpbmUgX29nZ19mcmVlICAgIGZyZWUKIAogdHlwZWRlZiBzaG9ydCBvZ2df aW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgb2dnX3VpbnQxNl90OwogdHlwZWRlZiBp bnQgb2dnX2ludDMyX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGludCBvZ2dfdWludDMyX3Q7CiB0eXBl ZGVmIGxvbmcgbG9uZyBvZ2dfaW50NjRfdDsK --0000000000004677d80575665385--