From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Rex Dieter To: git-commits@fedoraproject.org Subject: [rpms/amarok] epel10.2: - --with-mp4v2 (rh#346011) Date: Mon, 06 Jul 2026 18:30:12 GMT Message-ID: <178336261254.1.10332709456682677024.rpms-amarok-a4c9e68eb6f5@fedoraproject.org> List-ID: X-Git-Repo: rpms/amarok X-Git-Branch: epel10.2 X-Git-Rev: a4c9e68eb6f5cb9921774ff034d83c9f591a96ad ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvYW1hcm9rCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWwxMC4yCiAgICAgICAg ICAgIENvbW1pdCA6IGE0YzllNjhlYjZmNWNiOTkyMTc3NGZmMDM0ZDgzYzlmNTkxYTk2YWQKICAg ICAgICAgICAgQXV0aG9yIDogUmV4IERpZXRlciA8cmRpZXRlckBmZWRvcmFwcm9qZWN0Lm9yZz4K ICAgICAgICAgICAgRGF0ZSAgIDogMjAwNy0xMS0yOVQyMDozMDoxMyswMDowMAogICAgICAgICAg ICBTdGF0cyAgOiArMzU1OC8tOSBpbiAyIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0 cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9hbWFyb2svYy9hNGM5ZTY4ZWI2ZjVjYjk5 MjE3NzRmZjAzNGQ4M2M5ZjU5MWE5NmFkP2JyYW5jaD1lcGVsMTAuMgoKICAgICAgICAgICAgTG9n OgogICAgICAgICAgICAtIC0td2l0aC1tcDR2MiAocmgjMzQ2MDExKQotIGZpeCBhc2Yvd21hIHN1 cHBvcnQgKHJoIzM0NjAxMSxrZGUjMTUxNzMzKQoKLS0tCmRpZmYgLS1naXQgYS9hbWFyb2stYXNm LnBhdGNoIGIvYW1hcm9rLWFzZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5mZmNhMmI5Ci0tLSAvZGV2L251bGwKKysrIGIvYW1hcm9rLWFzZi5wYXRjaApAQCAtMCww ICsxLDM1MzMgQEAKKworUHJvcGVydHkgY2hhbmdlcyBvbjogYW1hcm9rL3NyYy9tZXRhZGF0YS9h c2YKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KK05hbWU6IHN2bjppZ25vcmUKKyAgICsgLmxpYnMKKy5kZXBzCitNYWtl ZmlsZQorTWFrZWZpbGUuaW4KKworCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNm ZmlsZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmZmlsZS5o CShyZXZpc2lvbiAwKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZmZpbGUuaAkocmV2 aXNpb24gNzQzMDA1KQorQEAgLTAsMCArMSwxMTQgQEAKKysvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysg ICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAwNS0yMDA3IGJ5IEx1a8OhxaEgTGFsaW5z a8O9CisrICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21haWwuY29tCisrICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgIFRoaXMgbGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5ICAqCisrICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorKyAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKysgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAqICAgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAg ICoKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VICAgICAqCisrICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCisrICogICBMaWNlbnNlIGFsb25nIHdp dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgor KyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgIDAyMTExLTEzMDcgICoKKysgKiAgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKysKKysjaWZuZGVmIFRBR0xJQl9BU0ZGSUxFX0gKKysjZGVmaW5lIFRBR0xJQl9B U0ZGSUxFX0gKKysKKysjaW5jbHVkZSA8dGFnLmg+CisrI2luY2x1ZGUgPHRmaWxlLmg+CisrI2lu Y2x1ZGUgImFzZnByb3BlcnRpZXMuaCIKKysjaW5jbHVkZSAiYXNmdGFnLmgiCisrCisrbmFtZXNw YWNlIFRhZ0xpYiB7CisrCisrICAvLyEgQW4gaW1wbGVtZW50YXRpb24gb2YgQVNGIChXTUEpIG1l dGFkYXRhCisrICBuYW1lc3BhY2UgQVNGIHsKKysKKysgICAgLyohCisrICAgICAqIFRoaXMgaW1w bGVtZW50cyBhbmQgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBBU0YgZmlsZXMgdG8gdGhlCisr ICAgICAqIFRhZ0xpYjo6VGFnIGFuZCBUYWdMaWI6OkF1ZGlvUHJvcGVydGllcyBpbnRlcmZhY2Vz IGJ5IHdheSBvZiBpbXBsZW1lbnRpbmcKKysgICAgICogdGhlIGFic3RyYWN0IFRhZ0xpYjo6Rmls ZSBBUEkgYXMgd2VsbCBhcyBwcm92aWRpbmcgc29tZSBhZGRpdGlvbmFsCisrICAgICAqIGluZm9y bWF0aW9uIHNwZWNpZmljIHRvIEFTRiBmaWxlcy4KKysgICAgICovCisrICAgIGNsYXNzIEZpbGUg OiBwdWJsaWMgVGFnTGliOjpGaWxlCisrICAgIHsKKysgICAgcHVibGljOgorKworKyAgICAgIC8q IQorKyAgICAgICAqIENvbnRydWN0cyBhbiBBU0YgZmlsZSBmcm9tIFxhIGZpbGUuICBJZiBcYSBy ZWFkUHJvcGVydGllcyBpcyB0cnVlIHRoZQorKyAgICAgICAqIGZpbGUncyBhdWRpbyBwcm9wZXJ0 aWVzIHdpbGwgYWxzbyBiZSByZWFkIHVzaW5nIFxhIHByb3BlcnRpZXNTdHlsZS4gIElmCisrICAg ICAgICogZmFsc2UsIFxhIHByb3BlcnRpZXNTdHlsZSBpcyBpZ25vcmVkLgorKyAgICAgICAqCisr ICAgICAgICogXG5vdGUgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGJvdGggXGEgcmVh ZFByb3BlcnRpZXMgYW5kCisrICAgICAgICogXGEgcHJvcGVydGllc1N0eWxlIGFyZSBpZ25vcmVk LgorKyAgICAgICAqLworKyAgICAgIEZpbGUoY29uc3QgY2hhciAqZmlsZSwgYm9vbCByZWFkUHJv cGVydGllcyA9IHRydWUsIFByb3BlcnRpZXM6OlJlYWRTdHlsZSBwcm9wZXJ0aWVzU3R5bGUgPSBQ cm9wZXJ0aWVzOjpBdmVyYWdlKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBEZXN0cm95cyB0 aGlzIGluc3RhbmNlIG9mIHRoZSBGaWxlLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgfkZp bGUoKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUg QVNGIHRhZyBvZiB0aGUgZmlsZS4KKysgICAgICAgKgorKyAgICAgICAqIEFTRjo6VGFnIGltcGxl bWVudHMgdGhlIHRhZyBpbnRlcmZhY2UsIHNvIHRoaXMgc2VydmVzIGFzIHRoZQorKyAgICAgICAq IHJlaW1wbGVtZW50YXRpb24gb2YgVGFnTGliOjpGaWxlOjp0YWcoKS4KKysgICAgICAgKgorKyAg ICAgICAqIFxub3RlIFRoZSBUYWcgPGI+aXMgc3RpbGw8L2I+IG93bmVkIGJ5IHRoZSBBU0Y6OkZp bGUgYW5kIHNob3VsZCBub3QgYmUKKysgICAgICAgKiBkZWxldGVkIGJ5IHRoZSB1c2VyLiAgSXQg d2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIGZpbGUgKG9iamVjdCkgaXMKKysgICAgICAgKiBkZXN0 cm95ZWQuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBUYWcgKnRhZygpIGNvbnN0OworKwor KyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIEFTRiBhdWRpbyBwcm9wZXJ0aWVzIGZv ciB0aGlzIGZpbGUuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBQcm9wZXJ0aWVzICphdWRp b1Byb3BlcnRpZXMoKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTYXZlIHRoZSBm aWxlLgorKyAgICAgICAqCisrICAgICAgICogVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIHNhdmUg d2FzIHN1Y2Nlc3NmdWwuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBib29sIHNhdmUoKTsK KysKKysgICAgcHJpdmF0ZToKKysKKysgICAgICBpbnQgcmVhZEJZVEUoKTsKKysgICAgICBpbnQg cmVhZFdPUkQoKTsKKysgICAgICB1bnNpZ25lZCBpbnQgcmVhZERXT1JEKCk7CisrICAgICAgbG9u ZyBsb25nIHJlYWRRV09SRCgpOworKyAgICAgIHN0YXRpYyBCeXRlVmVjdG9yIHJlbmRlclN0cmlu Zyhjb25zdCBTdHJpbmcgJnN0ciwgYm9vbCBpbmNsdWRlTGVuZ3RoID0gZmFsc2UpOworKyAgICAg IFN0cmluZyByZWFkU3RyaW5nKGludCBsZW4pOworKyAgICAgIHZvaWQgcmVhZChib29sIHJlYWRQ cm9wZXJ0aWVzLCBQcm9wZXJ0aWVzOjpSZWFkU3R5bGUgcHJvcGVydGllc1N0eWxlKTsKKysKKysg ICAgICBmcmllbmQgY2xhc3MgQXR0cmlidXRlOworKworKyAgICAgIGNsYXNzIEJhc2VPYmplY3Q7 CisrICAgICAgY2xhc3MgVW5rbm93bk9iamVjdDsKKysgICAgICBjbGFzcyBGaWxlUHJvcGVydGll c09iamVjdDsKKysgICAgICBjbGFzcyBTdHJlYW1Qcm9wZXJ0aWVzT2JqZWN0OworKyAgICAgIGNs YXNzIENvbnRlbnREZXNjcmlwdGlvbk9iamVjdDsKKysgICAgICBjbGFzcyBFeHRlbmRlZENvbnRl bnREZXNjcmlwdGlvbk9iamVjdDsKKysgICAgICBjbGFzcyBIZWFkZXJFeHRlbnNpb25PYmplY3Q7 CisrICAgICAgY2xhc3MgTWV0YWRhdGFPYmplY3Q7CisrICAgICAgY2xhc3MgTWV0YWRhdGFMaWJy YXJ5T2JqZWN0OworKworKyAgICAgIGNsYXNzIEZpbGVQcml2YXRlOworKyAgICAgIEZpbGVQcml2 YXRlICpkOworKyAgICB9OworKworKyAgfQorKworK30KKysKKysjZW5kaWYKKworUHJvcGVydHkg Y2hhbmdlcyBvbjogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmZmlsZS5oCitfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CitOYW1lOiBzdm46ZW9sLXN0eWxlCisgICArIG5hdGl2ZQorCitJbmRleDogYW1hcm9rL3NyYy9t ZXRhZGF0YS9hc2YvdGFnbGliX2FzZmZpbGV0eXBlcmVzb2x2ZXIuY3BwCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvdGFnbGliX2FzZmZpbGV0eXBlcmVzb2x2ZXIuY3Bw CShyZXZpc2lvbiAwKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL3RhZ2xpYl9hc2ZmaWxl dHlwZXJlc29sdmVyLmNwcAkocmV2aXNpb24gNzQzMDA1KQorQEAgLTAsMCArMSw0NyBAQAorKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKysgICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAwNSBi eSBNYXJ0aW4gQXVtdWVsbGVyCisrICAgIGVtYWlsICAgICAgICAgICAgICAgIDogYXVtdWVsbEBy ZXNlcnYuYXQKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KysgKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorKyAqICAgMi4xIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAg ICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAq ICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiAgICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCisrICogICBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAg ICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCisrICogICBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAgICoKKysgKiAgIE1BICAwMjExMC0xMzAx ICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKysKKysvLyAoYykgMjAwNSBNYXJ0aW4gQXVtdWVsbGVy IDxhdW11ZWxsQHJlc2Vydi5hdD4KKysvLyBTZWUgQ09QWUlORyBmaWxlIGZvciBsaWNlbnNpbmcg aW5mb3JtYXRpb24KKysKKysjaW5jbHVkZSAidGFnbGliX2FzZmZpbGV0eXBlcmVzb2x2ZXIuaCIK KysjaW5jbHVkZSAiYXNmZmlsZS5oIgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKytUYWdM aWI6OkZpbGUgKkFTRkZpbGVUeXBlUmVzb2x2ZXI6OmNyZWF0ZUZpbGUoY29uc3QgY2hhciAqZmls ZU5hbWUsCisrICAgICAgICBib29sIHJlYWRQcm9wZXJ0aWVzLAorKyAgICAgICAgVGFnTGliOjpB dWRpb1Byb3BlcnRpZXM6OlJlYWRTdHlsZSBwcm9wZXJ0aWVzU3R5bGUpIGNvbnN0CisreworKyAg ICBjb25zdCBjaGFyICpleHQgPSBzdHJyY2hyKGZpbGVOYW1lLCAnLicpOworKyAgICBpZihleHQg JiYgKCFzdHJjYXNlY21wKGV4dCwgIi53bWEiKSB8fCAhc3RyY2FzZWNtcChleHQsICIuYXNmIikp KQorKyAgICB7CisrICAgICAgICBUYWdMaWI6OkFTRjo6RmlsZSAqZiA9IG5ldyBUYWdMaWI6OkFT Rjo6RmlsZShmaWxlTmFtZSwgcmVhZFByb3BlcnRpZXMsIHByb3BlcnRpZXNTdHlsZSk7CisrICAg ICAgICBpZihmLT5pc1ZhbGlkKCkpCisrICAgICAgICAgICAgcmV0dXJuIGY7CisrICAgICAgICBl bHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgZGVsZXRlIGY7CisrICAgICAgICB9CisrICAg IH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvYXNm L2FzZmF0dHJpYnV0ZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2Yv YXNmYXR0cmlidXRlLmgJKHJldmlzaW9uIDApCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2Yv YXNmYXR0cmlidXRlLmgJKHJldmlzaW9uIDc0MzAwNSkKK0BAIC0wLDAgKzEsMTc2IEBACisrLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisrICAgIGNvcHlyaWdodCAgICAgICAgICAgIDogKEMpIDIwMDUtMjAw NyBieSBMdWvDocWhIExhbGluc2vDvQorKyAgICBlbWFpbCAgICAgICAgICAgICAgICA6IGxhbGlu c2t5QGdtYWlsLmNvbQorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorKyAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKysgKiAgIDIu MSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAg ICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoK KysgKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgICAgICAgICAgICAqCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorKyAqICAgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgorKyAq ICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSAgICoKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICAqCisrICogICBVU0EgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBUQUdMSUJfQVNGQVRUUklC VVRFX0gKKysjZGVmaW5lIFRBR0xJQl9BU0ZBVFRSSUJVVEVfSAorKworKyNpbmNsdWRlIDx0c3Ry aW5nLmg+CisrI2luY2x1ZGUgPHRieXRldmVjdG9yLmg+CisrCisrbmFtZXNwYWNlIFRhZ0xpYgor K3sKKysKKysgIG5hbWVzcGFjZSBBU0YKKysgIHsKKysKKysgICAgY2xhc3MgRmlsZTsKKysKKysg ICAgY2xhc3MgQXR0cmlidXRlCisrICAgIHsKKysgICAgcHVibGljOgorKworKyAgICAgIC8qIQor KyAgICAgICAqIEVudW0gb2YgdHlwZXMgYW4gQXR0cmlidXRlIGNhbiBoYXZlLgorKyAgICAgICAq LworKyAgICAgIGVudW0gQXR0cmlidXRlVHlwZXMgeworKyAgICAgICAgVW5pY29kZVR5cGUgPSAw LAorKyAgICAgICAgQnl0ZXNUeXBlICAgPSAxLAorKyAgICAgICAgQm9vbFR5cGUgICAgPSAyLAor KyAgICAgICAgRFdvcmRUeXBlICAgPSAzLAorKyAgICAgICAgUVdvcmRUeXBlICAgPSA0LAorKyAg ICAgICAgV29yZFR5cGUgICAgPSA1LAorKyAgICAgICAgR3VpZFR5cGUgICAgPSA2CisrICAgICAg fTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBDb25zdHJ1Y3RzIGFuIGVtcHR5IGF0dHJpYnV0 ZS4KKysgICAgICAgKi8KKysgICAgICBBdHRyaWJ1dGUoKTsKKysKKysgICAgICAvKiEKKysgICAg ICAgKiBDb25zdHJ1Y3RzIGFuIGF0dHJpYnV0ZSB3aXRoIFxhIGtleSBhbmQgYSBVbmljb2RlVHlw ZSBcYSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZ2 YWx1ZSk7CisrCisrICAgICAgLyohCisrICAgICAgICogQ29uc3RydWN0cyBhbiBhdHRyaWJ1dGUg d2l0aCBcYSBrZXkgYW5kIGEgQnl0ZXNUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAg IEF0dHJpYnV0ZShjb25zdCBCeXRlVmVjdG9yICZ2YWx1ZSk7CisrCisrICAgICAgLyohCisrICAg ICAgICogQ29uc3RydWN0cyBhbiBhdHRyaWJ1dGUgd2l0aCBcYSBrZXkgYW5kIGEgRFdvcmRUeXBl IFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIEF0dHJpYnV0ZSh1bnNpZ25lZCBpbnQgdmFs dWUpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIENvbnN0cnVjdHMgYW4gYXR0cmlidXRlIHdp dGggXGEga2V5IGFuZCBhIFFXb3JkVHlwZSBcYSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICBB dHRyaWJ1dGUodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKTsKKysKKysgICAgICAvKiEKKysgICAg ICAgKiBDb25zdHJ1Y3RzIGFuIGF0dHJpYnV0ZSB3aXRoIFxhIGtleSBhbmQgYSBXb3JkVHlwZSBc YSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICBBdHRyaWJ1dGUodW5zaWduZWQgc2hvcnQgdmFs dWUpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIENvbnN0cnVjdHMgYW4gYXR0cmlidXRlIHdp dGggXGEga2V5IGFuZCBhIEJvb2xUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIEF0 dHJpYnV0ZShib29sIHZhbHVlKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBDb25zdHJ1Y3Qg YW4gYXR0cmlidXRlIGFzIGEgY29weSBvZiBcYSBvdGhlci4KKysgICAgICAgKi8KKysgICAgICBB dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlICZpdGVtKTsKKysKKysgICAgICAvKiEKKysgICAgICAg KiBDb3BpZXMgdGhlIGNvbnRlbnRzIG9mIFxhIG90aGVyIGludG8gdGhpcyBpdGVtLgorKyAgICAg ICAqLworKyAgICAgIEFTRjo6QXR0cmlidXRlICZvcGVyYXRvcj0oY29uc3QgQXR0cmlidXRlICZv dGhlcik7CisrCisrICAgICAgLyohCisrICAgICAgICogRGVzdHJveXMgdGhlIGF0dHJpYnV0ZS4K KysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIH5BdHRyaWJ1dGUoKTsKKysKKysgICAgICAvKiEK KysgICAgICAgKiBSZXR1cm5zIHR5cGUgb2YgdGhlIHZhbHVlLgorKyAgICAgICAqLworKyAgICAg IEF0dHJpYnV0ZVR5cGVzIHR5cGUoKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBS ZXR1cm5zIHRoZSBCb29sVHlwZSBcYSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICB1bnNpZ25l ZCBzaG9ydCB0b0Jvb2woKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5z IHRoZSBXb3JkVHlwZSBcYSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICB1bnNpZ25lZCBzaG9y dCB0b1VTaG9ydCgpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhl IERXb3JkVHlwZSBcYSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICB1bnNpZ25lZCBpbnQgdG9V SW50KCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgUVdvcmRU eXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b1VM b25nTG9uZygpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIFVu aWNvZGVUeXBlIFxhIHZhbHVlLgorKyAgICAgICAqLworKyAgICAgIFN0cmluZyB0b1N0cmluZygp IGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIEJ5dGVzVHlwZSBc YSB2YWx1ZS4KKysgICAgICAgKi8KKysgICAgICBCeXRlVmVjdG9yIHRvQnl0ZVZlY3RvcigpIGNv bnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgdGhlIGxhbmd1YWdlIG51bWJl ciwgb3IgMCBpcyBubyBzdHJlYW0gbnVtYmVyIHdhcyBzZXQuCisrICAgICAgICovCisrICAgICAg aW50IGxhbmd1YWdlKCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0cyB0aGUg bGFuZ3VhZ2UgbnVtYmVyLgorKyAgICAgICAqLworKyAgICAgIHZvaWQgc2V0TGFuZ3VhZ2UoaW50 IHZhbHVlKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSBzdHJlYW0gbnVt YmVyLCBvciAwIGlzIG5vIHN0cmVhbSBudW1iZXIgd2FzIHNldC4KKysgICAgICAgKi8KKysgICAg ICBpbnQgc3RyZWFtKCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0cyB0aGUg c3RyZWFtIG51bWJlci4KKysgICAgICAgKi8KKysgICAgICB2b2lkIHNldFN0cmVhbShpbnQgdmFs dWUpOworKworKyNpZm5kZWYgRE9fTk9UX0RPQ1VNRU5UCisrICAgICAgLyogVEhJUyBJUyBQUklW QVRFLCBET04nVCBUT1VDSCBJVCEgKi8KKysgICAgICBTdHJpbmcgcGFyc2UoQVNGOjpGaWxlICZm aWxlLCBpbnQga2luZCA9IDApOworKyNlbmRpZgorKworKyAgICBwcml2YXRlOgorKyAgICAgIGZy aWVuZCBjbGFzcyBGaWxlOworKworKyAgICAgIEJ5dGVWZWN0b3IgcmVuZGVyKGNvbnN0IFN0cmlu ZyAmbmFtZSwgaW50IGtpbmQgPSAwKSBjb25zdDsKKysKKysgICAgICBjbGFzcyBBdHRyaWJ1dGVQ cml2YXRlOworKyAgICAgIEF0dHJpYnV0ZVByaXZhdGUgKmQ7CisrICAgIH07CisrCisrICB9Cisr CisrfQorKworKyNlbmRpZgorCitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBhbWFyb2svc3JjL21ldGFk YXRhL2FzZi9hc2ZhdHRyaWJ1dGUuaAorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworTmFtZTogc3ZuOmVvbC1zdHlsZQor ICAgKyBuYXRpdmUKKworSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL3RhZ2xpYl9hc2Zm aWxldHlwZXJlc29sdmVyLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL2Fz Zi90YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5oCShyZXZpc2lvbiAwKQorKysrIGFtYXJvay9z cmMvbWV0YWRhdGEvYXNmL3RhZ2xpYl9hc2ZmaWxldHlwZXJlc29sdmVyLmgJKHJldmlzaW9uIDc0 MzAwNSkKK0BAIC0wLDAgKzEsMzkgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICAgIGNvcHly aWdodCAgICAgICAgICAgIDogKEMpIDIwMDUgYnkgTWFydGluIEF1bXVlbGxlcgorKyAgICBlbWFp bCAgICAgICAgICAgICAgICA6IGF1bXVlbGxAcmVzZXJ2LmF0CisrICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorKyAqICAg aXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gICoKKysgKiAgIDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KgorKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoKKysgKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAqCisrICogICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSAgICAgKgorKyAqICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisr ICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljICAgICAgKgorKyAqICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICoKKysgKiAgIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAg ICAgICAqCisrICogICBNQSAgMDIxMTAtMTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisr Ly8gKGMpIDIwMDUgTWFydGluIEF1bXVlbGxlciA8YXVtdWVsbEByZXNlcnYuYXQ+CisrLy8gU2Vl IENPUFlJTkcgZmlsZSBmb3IgbGljZW5zaW5nIGluZm9ybWF0aW9uCisrCisrI2lmbmRlZiBUQUdM SUJfQVNGRklMRVRZUEVSRVNPTFZFUl9ICisrI2RlZmluZSBUQUdMSUJfQVNGRklMRVRZUEVSRVNP TFZFUl9ICisrCisrI2luY2x1ZGUgPHRhZ2xpYi90ZmlsZS5oPgorKyNpbmNsdWRlIDx0YWdsaWIv ZmlsZXJlZi5oPgorKworKworK2NsYXNzIEFTRkZpbGVUeXBlUmVzb2x2ZXIgOiBwdWJsaWMgVGFn TGliOjpGaWxlUmVmOjpGaWxlVHlwZVJlc29sdmVyCisreworKyAgICBUYWdMaWI6OkZpbGUgKmNy ZWF0ZUZpbGUoY29uc3QgY2hhciAqZmlsZU5hbWUsCisrICAgICAgICAgICAgYm9vbCByZWFkQXVk aW9Qcm9wZXJ0aWVzLAorKyAgICAgICAgICAgIFRhZ0xpYjo6QXVkaW9Qcm9wZXJ0aWVzOjpSZWFk U3R5bGUgYXVkaW9Qcm9wZXJ0aWVzU3R5bGUpIGNvbnN0OworK307CisrCisrI2VuZGlmCitJbmRl eDogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmdGFnLmNwcAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFt YXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnRhZy5jcHAJKHJldmlzaW9uIDApCisrKysgYW1hcm9r L3NyYy9tZXRhZGF0YS9hc2YvYXNmdGFnLmNwcAkocmV2aXNpb24gNzQzMDA1KQorQEAgLTAsMCAr MSwyMDIgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgICAgY29weXJpZ2h0ICAgICAgICAgICAg OiAoQykgMjAwNS0yMDA3IGJ5IEx1a8OhxaEgTGFsaW5za8O9CisrICAgIGVtYWlsICAgICAgICAg ICAgICAgIDogbGFsaW5za3lAZ21haWwuY29tCisrICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAgKgorKyAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0ICAgKgorKyAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAq CisrICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgICAgICAqCisrICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgICoKKysg KiAgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSAi YXNmdGFnLmgiCisrCisrdXNpbmcgbmFtZXNwYWNlIFRhZ0xpYjsKKysKKytjbGFzcyBBU0Y6OlRh Zzo6VGFnUHJpdmF0ZQorK3sKKytwdWJsaWM6CisrICBTdHJpbmcgdGl0bGU7CisrICBTdHJpbmcg YXJ0aXN0OworKyAgU3RyaW5nIGNvcHlyaWdodDsKKysgIFN0cmluZyBjb21tZW50OworKyAgU3Ry aW5nIHJhdGluZzsKKysgIEF0dHJpYnV0ZUxpc3RNYXAgYXR0cmlidXRlTGlzdE1hcDsKKyt9Owor KworK0FTRjo6VGFnOjpUYWcoKQorKzogVGFnTGliOjpUYWcoKQorK3sKKysgIGQgPSBuZXcgVGFn UHJpdmF0ZTsKKyt9CisrCisrQVNGOjpUYWc6On5UYWcoKQorK3sKKysgIGlmKGQpCisrICAgIGRl bGV0ZSBkOworK30KKysKKytTdHJpbmcKKytBU0Y6OlRhZzo6dGl0bGUoKSBjb25zdAorK3sKKysg IHJldHVybiBkLT50aXRsZTsKKyt9CisrCisrU3RyaW5nCisrQVNGOjpUYWc6OmFydGlzdCgpIGNv bnN0CisreworKyAgcmV0dXJuIGQtPmFydGlzdDsKKyt9CisrCisrU3RyaW5nCisrQVNGOjpUYWc6 OmFsYnVtKCkgY29uc3QKKyt7CisrICBpZihkLT5hdHRyaWJ1dGVMaXN0TWFwLmNvbnRhaW5zKCJX TS9BbGJ1bVRpdGxlIikpCisrICAgIHJldHVybiBkLT5hdHRyaWJ1dGVMaXN0TWFwWyJXTS9BbGJ1 bVRpdGxlIl1bMF0udG9TdHJpbmcoKTsKKysgIHJldHVybiBTdHJpbmc6Om51bGw7CisrfQorKwor K1N0cmluZworK0FTRjo6VGFnOjpjb3B5cmlnaHQoKSBjb25zdAorK3sKKysgIHJldHVybiBkLT5j b3B5cmlnaHQ7CisrfQorKworK1N0cmluZworK0FTRjo6VGFnOjpjb21tZW50KCkgY29uc3QKKyt7 CisrICByZXR1cm4gZC0+Y29tbWVudDsKKyt9CisrCisrU3RyaW5nCisrQVNGOjpUYWc6OnJhdGlu ZygpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPnJhdGluZzsKKyt9CisrCisrdW5zaWduZWQgaW50 CisrQVNGOjpUYWc6OnllYXIoKSBjb25zdAorK3sKKysgIGlmKGQtPmF0dHJpYnV0ZUxpc3RNYXAu Y29udGFpbnMoIldNL1llYXIiKSkKKysgICAgcmV0dXJuIGQtPmF0dHJpYnV0ZUxpc3RNYXBbIldN L1llYXIiXVswXS50b1N0cmluZygpLnRvSW50KCk7CisrICByZXR1cm4gMDsKKyt9CisrCisrdW5z aWduZWQgaW50CisrQVNGOjpUYWc6OnRyYWNrKCkgY29uc3QKKyt7CisrICBpZihkLT5hdHRyaWJ1 dGVMaXN0TWFwLmNvbnRhaW5zKCJXTS9UcmFja051bWJlciIpKQorKyAgICByZXR1cm4gZC0+YXR0 cmlidXRlTGlzdE1hcFsiV00vVHJhY2tOdW1iZXIiXVswXS50b1N0cmluZygpLnRvSW50KCk7Cisr ICBpZihkLT5hdHRyaWJ1dGVMaXN0TWFwLmNvbnRhaW5zKCJXTS9UcmFjayIpKQorKyAgICByZXR1 cm4gZC0+YXR0cmlidXRlTGlzdE1hcFsiV00vVHJhY2siXVswXS50b1VJbnQoKTsKKysgIHJldHVy biAwOworK30KKysKKytTdHJpbmcKKytBU0Y6OlRhZzo6Z2VucmUoKSBjb25zdAorK3sKKysgIGlm KGQtPmF0dHJpYnV0ZUxpc3RNYXAuY29udGFpbnMoIldNL0dlbnJlIikpCisrICAgIHJldHVybiBk LT5hdHRyaWJ1dGVMaXN0TWFwWyJXTS9HZW5yZSJdWzBdLnRvU3RyaW5nKCk7CisrICByZXR1cm4g U3RyaW5nOjpudWxsOworK30KKysKKyt2b2lkCisrQVNGOjpUYWc6OnNldFRpdGxlKGNvbnN0IFN0 cmluZyAmdmFsdWUpCisreworKyAgZC0+dGl0bGUgPSB2YWx1ZTsKKyt9CisrCisrdm9pZAorK0FT Rjo6VGFnOjpzZXRBcnRpc3QoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKyt7CisrICBkLT5hcnRpc3Qg PSB2YWx1ZTsKKyt9CisrCisrdm9pZAorK0FTRjo6VGFnOjpzZXRDb3B5cmlnaHQoY29uc3QgU3Ry aW5nICZ2YWx1ZSkKKyt7CisrICBkLT5jb3B5cmlnaHQgPSB2YWx1ZTsKKyt9CisrCisrdm9pZAor K0FTRjo6VGFnOjpzZXRDb21tZW50KGNvbnN0IFN0cmluZyAmdmFsdWUpCisreworKyAgZC0+Y29t bWVudCA9IHZhbHVlOworK30KKysKKyt2b2lkCisrQVNGOjpUYWc6OnNldFJhdGluZyhjb25zdCBT dHJpbmcgJnZhbHVlKQorK3sKKysgIGQtPnJhdGluZyA9IHZhbHVlOworK30KKysKKyt2b2lkCisr QVNGOjpUYWc6OnNldEFsYnVtKGNvbnN0IFN0cmluZyAmdmFsdWUpCisreworKyAgc2V0QXR0cmli dXRlKCJXTS9BbGJ1bVRpdGxlIiwgdmFsdWUpOworK30KKysKKyt2b2lkCisrQVNGOjpUYWc6OnNl dEdlbnJlKGNvbnN0IFN0cmluZyAmdmFsdWUpCisreworKyAgc2V0QXR0cmlidXRlKCJXTS9HZW5y ZSIsIHZhbHVlKTsKKyt9CisrCisrdm9pZAorK0FTRjo6VGFnOjpzZXRZZWFyKHVpbnQgdmFsdWUp CisreworKyAgc2V0QXR0cmlidXRlKCJXTS9ZZWFyIiwgU3RyaW5nOjpudW1iZXIodmFsdWUpKTsK Kyt9CisrCisrdm9pZAorK0FTRjo6VGFnOjpzZXRUcmFjayh1aW50IHZhbHVlKQorK3sKKysgIHNl dEF0dHJpYnV0ZSgiV00vVHJhY2tOdW1iZXIiLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworK30K KysKKytBU0Y6OkF0dHJpYnV0ZUxpc3RNYXAmCisrQVNGOjpUYWc6OmF0dHJpYnV0ZUxpc3RNYXAo KQorK3sKKysgIHJldHVybiBkLT5hdHRyaWJ1dGVMaXN0TWFwOworK30KKysKKyt2b2lkIEFTRjo6 VGFnOjpyZW1vdmVJdGVtKGNvbnN0IFN0cmluZyAma2V5KQorK3sKKysgIEF0dHJpYnV0ZUxpc3RN YXA6Okl0ZXJhdG9yIGl0ID0gZC0+YXR0cmlidXRlTGlzdE1hcC5maW5kKGtleSk7CisrICBpZihp dCAhPSBkLT5hdHRyaWJ1dGVMaXN0TWFwLmVuZCgpKQorKyAgICBkLT5hdHRyaWJ1dGVMaXN0TWFw LmVyYXNlKGl0KTsKKyt9CisrCisrdm9pZCBBU0Y6OlRhZzo6c2V0QXR0cmlidXRlKGNvbnN0IFN0 cmluZyAmbmFtZSwgY29uc3QgQXR0cmlidXRlICZhdHRyaWJ1dGUpCisreworKyAgQXR0cmlidXRl TGlzdCB2YWx1ZTsKKysgIHZhbHVlLmFwcGVuZChhdHRyaWJ1dGUpOworKyAgZC0+YXR0cmlidXRl TGlzdE1hcC5pbnNlcnQobmFtZSwgdmFsdWUpOworK30KKysKKyt2b2lkIEFTRjo6VGFnOjphZGRB dHRyaWJ1dGUoY29uc3QgU3RyaW5nICZuYW1lLCBjb25zdCBBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkK Kyt7CisrICBpZihkLT5hdHRyaWJ1dGVMaXN0TWFwLmNvbnRhaW5zKG5hbWUpKSB7CisrICAgIGQt PmF0dHJpYnV0ZUxpc3RNYXBbbmFtZV0uYXBwZW5kKGF0dHJpYnV0ZSk7CisrICB9CisrICBlbHNl IHsKKysgICAgc2V0QXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7CisrICB9CisrfQorKworK2Jv b2wgQVNGOjpUYWc6OmlzRW1wdHkoKSBjb25zdCB7CisrICByZXR1cm4gVGFnTGliOjpUYWc6Omlz RW1wdHkoKSAmJgorKyAgICAgICAgIGNvcHlyaWdodCgpLmlzRW1wdHkoKSAmJgorKyAgICAgICAg IHJhdGluZygpLmlzRW1wdHkoKSAmJgorKyAgICAgICAgIGQtPmF0dHJpYnV0ZUxpc3RNYXAuaXNF bXB0eSgpOworK30KK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zwcm9wZXJ0aWVz LmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnByb3BlcnRp ZXMuY3BwCShyZXZpc2lvbiAwKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnByb3Bl cnRpZXMuY3BwCShyZXZpc2lvbiA3NDMwMDUpCitAQCAtMCwwICsxLDk1IEBACisrLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisrICAgIGNvcHlyaWdodCAgICAgICAgICAgIDogKEMpIDIwMDUtMjAwNyBieSBM dWvDocWhIExhbGluc2vDvQorKyAgICBlbWFpbCAgICAgICAgICAgICAgICA6IGxhbGluc2t5QGdt YWlsLmNvbQorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisr ICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSAgKgorKyAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKysgKiAgIDIuMSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAg ICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoKKysgKiAg IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgICAgICAgICAgICAqCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorKyAqICAgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAg ICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgorKyAqICAgTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSAgICoKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICAqCisrICogICBVU0EgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgor KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgPHRzdHJpbmcuaD4KKysjaW5jbHVk ZSAiYXNmcHJvcGVydGllcy5oIgorKworK3VzaW5nIG5hbWVzcGFjZSBUYWdMaWI7CisrCisrY2xh c3MgQVNGOjpQcm9wZXJ0aWVzOjpQcm9wZXJ0aWVzUHJpdmF0ZQorK3sKKytwdWJsaWM6CisrICBQ cm9wZXJ0aWVzUHJpdmF0ZSgpOiBsZW5ndGgoMCksIGJpdHJhdGUoMCksIHNhbXBsZVJhdGUoMCks IGNoYW5uZWxzKDApIHt9CisrICBpbnQgbGVuZ3RoOworKyAgaW50IGJpdHJhdGU7CisrICBpbnQg c2FtcGxlUmF0ZTsKKysgIGludCBjaGFubmVsczsKKyt9OworKworKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisrLy8gcHVibGljIG1lbWJlcnMKKysvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworKwor K0FTRjo6UHJvcGVydGllczo6UHJvcGVydGllcygpIDogQXVkaW9Qcm9wZXJ0aWVzKEF1ZGlvUHJv cGVydGllczo6QXZlcmFnZSkKKyt7CisrICBkID0gbmV3IFByb3BlcnRpZXNQcml2YXRlOworK30K KysKKytBU0Y6OlByb3BlcnRpZXM6On5Qcm9wZXJ0aWVzKCkKKyt7CisrICBpZihkKQorKyAgICBk ZWxldGUgZDsgIAorK30KKysKKytpbnQgQVNGOjpQcm9wZXJ0aWVzOjpsZW5ndGgoKSBjb25zdAor K3sKKysgIHJldHVybiBkLT5sZW5ndGg7CisrfQorKworK2ludCBBU0Y6OlByb3BlcnRpZXM6OmJp dHJhdGUoKSBjb25zdAorK3sKKysgIHJldHVybiBkLT5iaXRyYXRlOworK30KKysKKytpbnQgQVNG OjpQcm9wZXJ0aWVzOjpzYW1wbGVSYXRlKCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+c2FtcGxl UmF0ZTsKKyt9CisrCisraW50IEFTRjo6UHJvcGVydGllczo6Y2hhbm5lbHMoKSBjb25zdAorK3sK KysgIHJldHVybiBkLT5jaGFubmVsczsKKyt9IAorKworKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisrLy8gcHJpdmF0ZSBtZW1iZXJzCisrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKysKKyt2b2lk IEFTRjo6UHJvcGVydGllczo6c2V0TGVuZ3RoKGludCBsZW5ndGgpCisreworKyAgZC0+bGVuZ3Ro ID0gbGVuZ3RoOworK30KKysKKyt2b2lkIEFTRjo6UHJvcGVydGllczo6c2V0Qml0cmF0ZShpbnQg bGVuZ3RoKQorK3sKKysgIGQtPmJpdHJhdGUgPSBsZW5ndGg7CisrfQorKworK3ZvaWQgQVNGOjpQ cm9wZXJ0aWVzOjpzZXRTYW1wbGVSYXRlKGludCBsZW5ndGgpCisreworKyAgZC0+c2FtcGxlUmF0 ZSA9IGxlbmd0aDsKKyt9CisrCisrdm9pZCBBU0Y6OlByb3BlcnRpZXM6OnNldENoYW5uZWxzKGlu dCBsZW5ndGgpCisreworKyAgZC0+Y2hhbm5lbHMgPSBsZW5ndGg7CisrfQorKworCitQcm9wZXJ0 eSBjaGFuZ2VzIG9uOiBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zwcm9wZXJ0aWVzLmNwcAor X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXworTmFtZTogc3ZuOmVvbC1zdHlsZQorICAgKyBuYXRpdmUKKworSW5kZXg6IGFt YXJvay9zcmMvbWV0YWRhdGEvYXNmL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9r L3NyYy9tZXRhZGF0YS9hc2YvTWFrZWZpbGUuYW0JKHJldmlzaW9uIDApCisrKysgYW1hcm9rL3Ny Yy9tZXRhZGF0YS9hc2YvTWFrZWZpbGUuYW0JKHJldmlzaW9uIDc0MzAwNSkKK0BAIC0wLDAgKzEs MjAgQEAKKytTVUJESVJTID0KKysKKytJTkNMVURFUyAgICAgICAgICAgPSAkKGFsbF9pbmNsdWRl cykgJCh0YWdsaWJfaW5jbHVkZXMpCisrTUVUQVNPVVJDRVMgICAgICAgID0gQVVUTworK2xpYnRh Z2FzZl9sYV9MREZMQUdTICA9ICQoYWxsX2xpYnJhcmllcykKKytub2luc3RfTFRMSUJSQVJJRVMg PSBsaWJ0YWdhc2YubGEKKysKKytsaWJ0YWdhc2ZfbGFfU09VUkNFUyA9ICBcCisrICAgICAgICAg ICAgICAgICAgICAgYXNmYXR0cmlidXRlLmNwcCBcCisrICAgICAgICAgICAgICAgICAgICAgYXNm cHJvcGVydGllcy5jcHAgXAorKyAgICAgICAgICAgICAgICAgICAgIGFzZnRhZy5jcHAgXAorKyAg ICAgICAgICAgICAgICAgICAgIGFzZmZpbGUuY3BwIFwKKysgICAgICAgICAgICAgICAgICAgICB0 YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5jcHAKKysKKytub2luc3RfSEVBREVSUyA9IFwKKysg ICAgICAgICAgICAgICAgICAgICBhc2ZhdHRyaWJ1dGUuaCBcCisrICAgICAgICAgICAgICAgICAg ICAgYXNmcHJvcGVydGllcy5oIFwKKysgICAgICAgICAgICAgICAgICAgICBhc2Z0YWcuaCBcCisr ICAgICAgICAgICAgICAgICAgICAgYXNmZmlsZS5oIFwKKysgICAgICAgICAgICAgICAgICAgICB0 YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5oCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS9h c2YvYXNmZmlsZS5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9h c2ZmaWxlLmNwcAkocmV2aXNpb24gMCkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Zm aWxlLmNwcAkocmV2aXNpb24gNzQzMDA1KQorQEAgLTAsMCArMSw1NDcgQEAKKysvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKysgICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAwNS0yMDA3IGJ5IEx1 a8OhxaEgTGFsaW5za8O9CisrICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21h aWwuY29tCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysg KiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAgKgorKyAqICAgMi4xIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAg ICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAqICAg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZiAgICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAqCisrICogICBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAg KgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCisrICogICBMaWNl bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgICoKKysgKiAgIFVTQSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisr ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSA8dGJ5dGV2ZWN0b3JsaXN0Lmg+Cisr I2luY2x1ZGUgPHRzdHJpbmcuaD4KKysjaW5jbHVkZSAiYXNmZmlsZS5oIgorKyNpbmNsdWRlICJh c2Z0YWcuaCIKKysjaW5jbHVkZSAiYXNmcHJvcGVydGllcy5oIgorKworK3VzaW5nIG5hbWVzcGFj ZSBUYWdMaWI7CisrCisrY2xhc3MgQVNGOjpGaWxlOjpGaWxlUHJpdmF0ZQorK3sKKytwdWJsaWM6 CisrICBGaWxlUHJpdmF0ZSgpOgorKyAgICBzaXplKDApLAorKyAgICB0YWcoMCksCisrICAgIHBy b3BlcnRpZXMoMCksCisrICAgIGNvbnRlbnREZXNjcmlwdGlvbk9iamVjdCgwKSwKKysgICAgZXh0 ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3QoMCksCisrICAgIGhlYWRlckV4dGVuc2lvbk9i amVjdCgwKSwKKysgICAgbWV0YWRhdGFPYmplY3QoMCksCisrICAgIG1ldGFkYXRhTGlicmFyeU9i amVjdCgwKSB7fQorKyAgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CisrICBBU0Y6OlRhZyAqdGFn OworKyAgQVNGOjpQcm9wZXJ0aWVzICpwcm9wZXJ0aWVzOworKyAgTGlzdDxBU0Y6OkZpbGU6OkJh c2VPYmplY3QgKj4gb2JqZWN0czsKKysgIEFTRjo6RmlsZTo6Q29udGVudERlc2NyaXB0aW9uT2Jq ZWN0ICpjb250ZW50RGVzY3JpcHRpb25PYmplY3Q7CisrICBBU0Y6OkZpbGU6OkV4dGVuZGVkQ29u dGVudERlc2NyaXB0aW9uT2JqZWN0ICpleHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbk9iamVjdDsK KysgIEFTRjo6RmlsZTo6SGVhZGVyRXh0ZW5zaW9uT2JqZWN0ICpoZWFkZXJFeHRlbnNpb25PYmpl Y3Q7CisrICBBU0Y6OkZpbGU6Ok1ldGFkYXRhT2JqZWN0ICptZXRhZGF0YU9iamVjdDsKKysgIEFT Rjo6RmlsZTo6TWV0YWRhdGFMaWJyYXJ5T2JqZWN0ICptZXRhZGF0YUxpYnJhcnlPYmplY3Q7Cisr fTsKKysKKytzdGF0aWMgQnl0ZVZlY3RvciBoZWFkZXJHdWlkKCJceDMwXHgyNlx4QjJceDc1XHg4 RVx4NjZceENGXHgxMVx4QTZceEQ5XHgwMFx4QUFceDAwXHg2Mlx4Q0VceDZDIiwgMTYpOworK3N0 YXRpYyBCeXRlVmVjdG9yIGZpbGVQcm9wZXJ0aWVzR3VpZCgiXHhBMVx4RENceEFCXHg4Q1x4NDdc eEE5XHhDRlx4MTFceDhFXHhFNFx4MDBceEMwXHgwQ1x4MjBceDUzXHg2NSIsIDE2KTsKKytzdGF0 aWMgQnl0ZVZlY3RvciBzdHJlYW1Qcm9wZXJ0aWVzR3VpZCgiXHg5MVx4MDdceERDXHhCN1x4Qjdc eEE5XHhDRlx4MTFceDhFXHhFNlx4MDBceEMwXHgwQ1x4MjBceDUzXHg2NSIsIDE2KTsKKytzdGF0 aWMgQnl0ZVZlY3RvciBjb250ZW50RGVzY3JpcHRpb25HdWlkKCJceDMzXHgyNlx4QjJceDc1XHg4 RVx4NjZceENGXHgxMVx4QTZceEQ5XHgwMFx4QUFceDAwXHg2Mlx4Q0VceDZDIiwgMTYpOworK3N0 YXRpYyBCeXRlVmVjdG9yIGV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uR3VpZCgiXHg0MFx4QTRc eEQwXHhEMlx4MDdceEUzXHhEMlx4MTFceDk3XHhGMFx4MDBceEEwXHhDOVx4NUVceEE4XHg1MCIs IDE2KTsKKytzdGF0aWMgQnl0ZVZlY3RvciBoZWFkZXJFeHRlbnNpb25HdWlkKCJceGI1XHgwM1x4 YmZfLlx4YTlceGNmXHgxMVx4OGVceGUzXHgwMFx4YzBceDBjIFNlIiwgMTYpOworK3N0YXRpYyBC eXRlVmVjdG9yIG1ldGFkYXRhR3VpZCgiXHhFQVx4Q0JceEY4XHhDNVx4QUZbd0hcMjA0Z1x4QUFc MjE0RFx4RkFMXHhDQSIsIDE2KTsKKytzdGF0aWMgQnl0ZVZlY3RvciBtZXRhZGF0YUxpYnJhcnlH dWlkKCJcMjI0XDAzNCNEXDIzMFwyMjRcMzIxSVwyNDFBXHgxZFx4MTNORXBUIiwgMTYpOworKwor K2NsYXNzIEFTRjo6RmlsZTo6QmFzZU9iamVjdAorK3sKKytwdWJsaWM6CisrICBCeXRlVmVjdG9y IGRhdGE7CisrICB2aXJ0dWFsIH5CYXNlT2JqZWN0KCkge30KKysgIHZpcnR1YWwgQnl0ZVZlY3Rv ciBndWlkKCkgPSAwOworKyAgdmlydHVhbCB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdW5z aWduZWQgaW50IHNpemUpOworKyAgdmlydHVhbCBCeXRlVmVjdG9yIHJlbmRlcihBU0Y6OkZpbGUg KmZpbGUpOworK307CisrCisrY2xhc3MgQVNGOjpGaWxlOjpVbmtub3duT2JqZWN0IDogcHVibGlj IEFTRjo6RmlsZTo6QmFzZU9iamVjdAorK3sKKysgIEJ5dGVWZWN0b3IgbXlHdWlkOworK3B1Ymxp YzoKKysgIFVua25vd25PYmplY3QoY29uc3QgQnl0ZVZlY3RvciAmZ3VpZCk7CisrICBCeXRlVmVj dG9yIGd1aWQoKTsKKyt9OworKworK2NsYXNzIEFTRjo6RmlsZTo6RmlsZVByb3BlcnRpZXNPYmpl Y3QgOiBwdWJsaWMgQVNGOjpGaWxlOjpCYXNlT2JqZWN0CisreworK3B1YmxpYzoKKysgIEJ5dGVW ZWN0b3IgZ3VpZCgpOworKyAgdm9pZCBwYXJzZShBU0Y6OkZpbGUgKmZpbGUsIHVpbnQgc2l6ZSk7 CisrfTsKKysKKytjbGFzcyBBU0Y6OkZpbGU6OlN0cmVhbVByb3BlcnRpZXNPYmplY3QgOiBwdWJs aWMgQVNGOjpGaWxlOjpCYXNlT2JqZWN0CisreworK3B1YmxpYzoKKysgIEJ5dGVWZWN0b3IgZ3Vp ZCgpOworKyAgdm9pZCBwYXJzZShBU0Y6OkZpbGUgKmZpbGUsIHVpbnQgc2l6ZSk7CisrfTsKKysK KytjbGFzcyBBU0Y6OkZpbGU6OkNvbnRlbnREZXNjcmlwdGlvbk9iamVjdCA6IHB1YmxpYyBBU0Y6 OkZpbGU6OkJhc2VPYmplY3QKKyt7CisrcHVibGljOgorKyAgQnl0ZVZlY3RvciBndWlkKCk7Cisr ICB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCBzaXplKTsKKysgIEJ5dGVWZWN0b3Ig cmVuZGVyKEFTRjo6RmlsZSAqZmlsZSk7CisrfTsKKysKKytjbGFzcyBBU0Y6OkZpbGU6OkV4dGVu ZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0IDogcHVibGljIEFTRjo6RmlsZTo6QmFzZU9iamVj dAorK3sKKytwdWJsaWM6CisrICBCeXRlVmVjdG9yTGlzdCBhdHRyaWJ1dGVEYXRhOworKyAgQnl0 ZVZlY3RvciBndWlkKCk7CisrICB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCBzaXpl KTsKKysgIEJ5dGVWZWN0b3IgcmVuZGVyKEFTRjo6RmlsZSAqZmlsZSk7CisrfTsKKysKKytjbGFz cyBBU0Y6OkZpbGU6Ok1ldGFkYXRhT2JqZWN0IDogcHVibGljIEFTRjo6RmlsZTo6QmFzZU9iamVj dAorK3sKKytwdWJsaWM6CisrICBCeXRlVmVjdG9yTGlzdCBhdHRyaWJ1dGVEYXRhOworKyAgQnl0 ZVZlY3RvciBndWlkKCk7CisrICB2b2lkIHBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCBzaXpl KTsKKysgIEJ5dGVWZWN0b3IgcmVuZGVyKEFTRjo6RmlsZSAqZmlsZSk7CisrfTsKKysKKytjbGFz cyBBU0Y6OkZpbGU6Ok1ldGFkYXRhTGlicmFyeU9iamVjdCA6IHB1YmxpYyBBU0Y6OkZpbGU6OkJh c2VPYmplY3QKKyt7CisrcHVibGljOgorKyAgQnl0ZVZlY3Rvckxpc3QgYXR0cmlidXRlRGF0YTsK KysgIEJ5dGVWZWN0b3IgZ3VpZCgpOworKyAgdm9pZCBwYXJzZShBU0Y6OkZpbGUgKmZpbGUsIHVp bnQgc2l6ZSk7CisrICBCeXRlVmVjdG9yIHJlbmRlcihBU0Y6OkZpbGUgKmZpbGUpOworK307Cisr CisrY2xhc3MgQVNGOjpGaWxlOjpIZWFkZXJFeHRlbnNpb25PYmplY3QgOiBwdWJsaWMgQVNGOjpG aWxlOjpCYXNlT2JqZWN0CisreworK3B1YmxpYzoKKysgIExpc3Q8QVNGOjpGaWxlOjpCYXNlT2Jq ZWN0ICo+IG9iamVjdHM7CisrICBCeXRlVmVjdG9yIGd1aWQoKTsKKysgIHZvaWQgcGFyc2UoQVNG OjpGaWxlICpmaWxlLCB1aW50IHNpemUpOworKyAgQnl0ZVZlY3RvciByZW5kZXIoQVNGOjpGaWxl ICpmaWxlKTsKKyt9OworKworK3ZvaWQKKytBU0Y6OkZpbGU6OkJhc2VPYmplY3Q6OnBhcnNlKEFT Rjo6RmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IHNpemUpCisreworKyAgZGF0YSA9IGZpbGUtPnJl YWRCbG9jayhzaXplIC0gMjQpOworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpGaWxlOjpCYXNl T2JqZWN0OjpyZW5kZXIoQVNGOjpGaWxlICogLypmaWxlKi8pCisreworKyAgcmV0dXJuIGd1aWQo KSArIEJ5dGVWZWN0b3I6OmZyb21Mb25nTG9uZyhkYXRhLnNpemUoKSArIDI0LCBmYWxzZSkgKyBk YXRhOworK30KKysKKytBU0Y6OkZpbGU6OlVua25vd25PYmplY3Q6OlVua25vd25PYmplY3QoY29u c3QgQnl0ZVZlY3RvciAmZ3VpZCkgOiBteUd1aWQoZ3VpZCkKKyt7CisrfQorKworK0J5dGVWZWN0 b3IKKytBU0Y6OkZpbGU6OlVua25vd25PYmplY3Q6Omd1aWQoKQorK3sKKysgIHJldHVybiBteUd1 aWQ7CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZpbGU6OkZpbGVQcm9wZXJ0aWVzT2JqZWN0 OjpndWlkKCkKKyt7CisrICByZXR1cm4gZmlsZVByb3BlcnRpZXNHdWlkOworK30KKysKKyt2b2lk CisrQVNGOjpGaWxlOjpGaWxlUHJvcGVydGllc09iamVjdDo6cGFyc2UoQVNGOjpGaWxlICpmaWxl LCB1aW50IHNpemUpCisreworKyAgQmFzZU9iamVjdDo6cGFyc2UoZmlsZSwgc2l6ZSk7CisrICBm aWxlLT5kLT5wcm9wZXJ0aWVzLT5zZXRMZW5ndGgoKGludCkoZGF0YS5taWQoNDAsIDgpLnRvTG9u Z0xvbmcoZmFsc2UpIC8gMTAwMDAwMDBMIC0gZGF0YS5taWQoNTYsIDgpLnRvTG9uZ0xvbmcoZmFs c2UpIC8gMTAwMEwpKTsKKyt9CisrCisrQnl0ZVZlY3RvcgorK0FTRjo6RmlsZTo6U3RyZWFtUHJv cGVydGllc09iamVjdDo6Z3VpZCgpCisreworKyAgcmV0dXJuIHN0cmVhbVByb3BlcnRpZXNHdWlk OworK30KKysKKyt2b2lkCisrQVNGOjpGaWxlOjpTdHJlYW1Qcm9wZXJ0aWVzT2JqZWN0OjpwYXJz ZShBU0Y6OkZpbGUgKmZpbGUsIHVpbnQgc2l6ZSkKKyt7CisrICBCYXNlT2JqZWN0OjpwYXJzZShm aWxlLCBzaXplKTsKKysgIGZpbGUtPmQtPnByb3BlcnRpZXMtPnNldENoYW5uZWxzKGRhdGEubWlk KDU2LCAyKS50b1Nob3J0KGZhbHNlKSk7CisrICBmaWxlLT5kLT5wcm9wZXJ0aWVzLT5zZXRTYW1w bGVSYXRlKGRhdGEubWlkKDU4LCA0KS50b1VJbnQoZmFsc2UpKTsKKysgIGZpbGUtPmQtPnByb3Bl cnRpZXMtPnNldEJpdHJhdGUoZGF0YS5taWQoNjIsIDQpLnRvVUludChmYWxzZSkgKiA4IC8gMTAw MCk7CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZpbGU6OkNvbnRlbnREZXNjcmlwdGlvbk9i amVjdDo6Z3VpZCgpCisreworKyAgcmV0dXJuIGNvbnRlbnREZXNjcmlwdGlvbkd1aWQ7CisrfQor KworK3ZvaWQKKytBU0Y6OkZpbGU6OkNvbnRlbnREZXNjcmlwdGlvbk9iamVjdDo6cGFyc2UoQVNG OjpGaWxlICpmaWxlLCB1aW50IC8qc2l6ZSovKQorK3sKKysgIGZpbGUtPmQtPmNvbnRlbnREZXNj cmlwdGlvbk9iamVjdCA9IHRoaXM7CisrICBpbnQgdGl0bGVMZW5ndGggPSBmaWxlLT5yZWFkV09S RCgpOworKyAgaW50IGFydGlzdExlbmd0aCA9IGZpbGUtPnJlYWRXT1JEKCk7CisrICBpbnQgY29w eXJpZ2h0TGVuZ3RoID0gZmlsZS0+cmVhZFdPUkQoKTsKKysgIGludCBjb21tZW50TGVuZ3RoID0g ZmlsZS0+cmVhZFdPUkQoKTsKKysgIGludCByYXRpbmdMZW5ndGggPSBmaWxlLT5yZWFkV09SRCgp OworKyAgZmlsZS0+ZC0+dGFnLT5zZXRUaXRsZShmaWxlLT5yZWFkU3RyaW5nKHRpdGxlTGVuZ3Ro KSk7CisrICBmaWxlLT5kLT50YWctPnNldEFydGlzdChmaWxlLT5yZWFkU3RyaW5nKGFydGlzdExl bmd0aCkpOworKyAgZmlsZS0+ZC0+dGFnLT5zZXRDb3B5cmlnaHQoZmlsZS0+cmVhZFN0cmluZyhj b3B5cmlnaHRMZW5ndGgpKTsKKysgIGZpbGUtPmQtPnRhZy0+c2V0Q29tbWVudChmaWxlLT5yZWFk U3RyaW5nKGNvbW1lbnRMZW5ndGgpKTsKKysgIGZpbGUtPmQtPnRhZy0+c2V0UmF0aW5nKGZpbGUt PnJlYWRTdHJpbmcocmF0aW5nTGVuZ3RoKSk7CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkZp bGU6OkNvbnRlbnREZXNjcmlwdGlvbk9iamVjdDo6cmVuZGVyKEFTRjo6RmlsZSAqZmlsZSkKKyt7 CisrICBCeXRlVmVjdG9yIHYxID0gZmlsZS0+cmVuZGVyU3RyaW5nKGZpbGUtPmQtPnRhZy0+dGl0 bGUoKSk7CisrICBCeXRlVmVjdG9yIHYyID0gZmlsZS0+cmVuZGVyU3RyaW5nKGZpbGUtPmQtPnRh Zy0+YXJ0aXN0KCkpOworKyAgQnl0ZVZlY3RvciB2MyA9IGZpbGUtPnJlbmRlclN0cmluZyhmaWxl LT5kLT50YWctPmNvcHlyaWdodCgpKTsKKysgIEJ5dGVWZWN0b3IgdjQgPSBmaWxlLT5yZW5kZXJT dHJpbmcoZmlsZS0+ZC0+dGFnLT5jb21tZW50KCkpOworKyAgQnl0ZVZlY3RvciB2NSA9IGZpbGUt PnJlbmRlclN0cmluZyhmaWxlLT5kLT50YWctPnJhdGluZygpKTsKKysgIGRhdGEuY2xlYXIoKTsK KysgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2MS5zaXplKCksIGZhbHNlKSk7 CisrICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodjIuc2l6ZSgpLCBmYWxzZSkp OworKyAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHYzLnNpemUoKSwgZmFsc2Up KTsKKysgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2NC5zaXplKCksIGZhbHNl KSk7CisrICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodjUuc2l6ZSgpLCBmYWxz ZSkpOworKyAgZGF0YS5hcHBlbmQodjEpOworKyAgZGF0YS5hcHBlbmQodjIpOworKyAgZGF0YS5h cHBlbmQodjMpOworKyAgZGF0YS5hcHBlbmQodjQpOworKyAgZGF0YS5hcHBlbmQodjUpOworKyAg cmV0dXJuIEJhc2VPYmplY3Q6OnJlbmRlcihmaWxlKTsKKyt9CisrCisrQnl0ZVZlY3RvcgorK0FT Rjo6RmlsZTo6RXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3Q6Omd1aWQoKQorK3sKKysg IHJldHVybiBleHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbkd1aWQ7CisrfQorKworK3ZvaWQKKytB U0Y6OkZpbGU6OkV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0OjpwYXJzZShBU0Y6OkZp bGUgKmZpbGUsIHVpbnQgLypzaXplKi8pCisreworKyAgZmlsZS0+ZC0+ZXh0ZW5kZWRDb250ZW50 RGVzY3JpcHRpb25PYmplY3QgPSB0aGlzOworKyAgaW50IGNvdW50ID0gZmlsZS0+cmVhZFdPUkQo KTsKKysgIHdoaWxlKGNvdW50LS0pIHsKKysgICAgQVNGOjpBdHRyaWJ1dGUgYXR0cmlidXRlOwor KyAgICBTdHJpbmcgbmFtZSA9IGF0dHJpYnV0ZS5wYXJzZSgqZmlsZSk7CisrICAgIGZpbGUtPmQt PnRhZy0+YWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7CisrICB9CisrfQorKworK0J5dGVW ZWN0b3IKKytBU0Y6OkZpbGU6OkV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0OjpyZW5k ZXIoQVNGOjpGaWxlICpmaWxlKQorK3sKKysgIGRhdGEuY2xlYXIoKTsKKysgIGRhdGEuYXBwZW5k KEJ5dGVWZWN0b3I6OmZyb21TaG9ydChhdHRyaWJ1dGVEYXRhLnNpemUoKSwgZmFsc2UpKTsKKysg IGRhdGEuYXBwZW5kKGF0dHJpYnV0ZURhdGEudG9CeXRlVmVjdG9yKEJ5dGVWZWN0b3I6Om51bGwp KTsKKysgIHJldHVybiBCYXNlT2JqZWN0OjpyZW5kZXIoZmlsZSk7CisrfQorKworK0J5dGVWZWN0 b3IKKytBU0Y6OkZpbGU6Ok1ldGFkYXRhT2JqZWN0OjpndWlkKCkKKyt7CisrICByZXR1cm4gbWV0 YWRhdGFHdWlkOworK30KKysKKyt2b2lkCisrQVNGOjpGaWxlOjpNZXRhZGF0YU9iamVjdDo6cGFy c2UoQVNGOjpGaWxlICpmaWxlLCB1aW50IC8qc2l6ZSovKQorK3sKKysgIGZpbGUtPmQtPm1ldGFk YXRhT2JqZWN0ID0gdGhpczsKKysgIGludCBjb3VudCA9IGZpbGUtPnJlYWRXT1JEKCk7CisrICB3 aGlsZShjb3VudC0tKSB7CisrICAgIEFTRjo6QXR0cmlidXRlIGF0dHJpYnV0ZTsKKysgICAgU3Ry aW5nIG5hbWUgPSBhdHRyaWJ1dGUucGFyc2UoKmZpbGUsIDEpOworKyAgICBmaWxlLT5kLT50YWct PmFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpOworKyAgfQorK30KKysKKytCeXRlVmVjdG9y CisrQVNGOjpGaWxlOjpNZXRhZGF0YU9iamVjdDo6cmVuZGVyKEFTRjo6RmlsZSAqZmlsZSkKKyt7 CisrICBkYXRhLmNsZWFyKCk7CisrICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQo YXR0cmlidXRlRGF0YS5zaXplKCksIGZhbHNlKSk7CisrICBkYXRhLmFwcGVuZChhdHRyaWJ1dGVE YXRhLnRvQnl0ZVZlY3RvcihCeXRlVmVjdG9yOjpudWxsKSk7CisrICByZXR1cm4gQmFzZU9iamVj dDo6cmVuZGVyKGZpbGUpOworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpGaWxlOjpNZXRhZGF0 YUxpYnJhcnlPYmplY3Q6Omd1aWQoKQorK3sKKysgIHJldHVybiBtZXRhZGF0YUxpYnJhcnlHdWlk OworK30KKysKKyt2b2lkCisrQVNGOjpGaWxlOjpNZXRhZGF0YUxpYnJhcnlPYmplY3Q6OnBhcnNl KEFTRjo6RmlsZSAqZmlsZSwgdWludCAvKnNpemUqLykKKyt7CisrICBmaWxlLT5kLT5tZXRhZGF0 YUxpYnJhcnlPYmplY3QgPSB0aGlzOworKyAgaW50IGNvdW50ID0gZmlsZS0+cmVhZFdPUkQoKTsK KysgIHdoaWxlKGNvdW50LS0pIHsKKysgICAgQVNGOjpBdHRyaWJ1dGUgYXR0cmlidXRlOworKyAg ICBTdHJpbmcgbmFtZSA9IGF0dHJpYnV0ZS5wYXJzZSgqZmlsZSwgMik7CisrICAgIGZpbGUtPmQt PnRhZy0+YWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7CisrICB9CisrfQorKworK0J5dGVW ZWN0b3IKKytBU0Y6OkZpbGU6Ok1ldGFkYXRhTGlicmFyeU9iamVjdDo6cmVuZGVyKEFTRjo6Rmls ZSAqZmlsZSkKKyt7CisrICBkYXRhLmNsZWFyKCk7CisrICBkYXRhLmFwcGVuZChCeXRlVmVjdG9y Ojpmcm9tU2hvcnQoYXR0cmlidXRlRGF0YS5zaXplKCksIGZhbHNlKSk7CisrICBkYXRhLmFwcGVu ZChhdHRyaWJ1dGVEYXRhLnRvQnl0ZVZlY3RvcihCeXRlVmVjdG9yOjpudWxsKSk7CisrICByZXR1 cm4gQmFzZU9iamVjdDo6cmVuZGVyKGZpbGUpOworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpG aWxlOjpIZWFkZXJFeHRlbnNpb25PYmplY3Q6Omd1aWQoKQorK3sKKysgIHJldHVybiBoZWFkZXJF eHRlbnNpb25HdWlkOworK30KKysKKyt2b2lkCisrQVNGOjpGaWxlOjpIZWFkZXJFeHRlbnNpb25P YmplY3Q6OnBhcnNlKEFTRjo6RmlsZSAqZmlsZSwgdWludCAvKnNpemUqLykKKyt7CisrICBmaWxl LT5kLT5oZWFkZXJFeHRlbnNpb25PYmplY3QgPSB0aGlzOworKyAgZmlsZS0+c2VlaygxOCwgRmls ZTo6Q3VycmVudCk7CisrICBsb25nIGxvbmcgZGF0YVNpemUgPSBmaWxlLT5yZWFkRFdPUkQoKTsK KysgIGxvbmcgbG9uZyBkYXRhUG9zID0gMDsKKysgIHdoaWxlKGRhdGFQb3MgPCBkYXRhU2l6ZSkg eworKyAgICBCeXRlVmVjdG9yIGd1aWQgPSBmaWxlLT5yZWFkQmxvY2soMTYpOworKyAgICBsb25n IGxvbmcgc2l6ZSA9IGZpbGUtPnJlYWRRV09SRCgpOworKyAgICBCYXNlT2JqZWN0ICpvYmo7Cisr ICAgIGlmKGd1aWQgPT0gbWV0YWRhdGFHdWlkKSB7CisrICAgICAgb2JqID0gbmV3IE1ldGFkYXRh T2JqZWN0KCk7CisrICAgIH0KKysgICAgZWxzZSBpZihndWlkID09IG1ldGFkYXRhTGlicmFyeUd1 aWQpIHsKKysgICAgICBvYmogPSBuZXcgTWV0YWRhdGFMaWJyYXJ5T2JqZWN0KCk7CisrICAgIH0K KysgICAgZWxzZSB7CisrICAgICAgb2JqID0gbmV3IFVua25vd25PYmplY3QoZ3VpZCk7CisrICAg IH0KKysgICAgb2JqLT5wYXJzZShmaWxlLCBzaXplKTsKKysgICAgb2JqZWN0cy5hcHBlbmQob2Jq KTsKKysgICAgZGF0YVBvcyArPSBzaXplOworKyAgfQorK30KKysKKytCeXRlVmVjdG9yCisrQVNG OjpGaWxlOjpIZWFkZXJFeHRlbnNpb25PYmplY3Q6OnJlbmRlcihBU0Y6OkZpbGUgKmZpbGUpCisr eworKyAgZGF0YS5jbGVhcigpOworKyAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG9iamVj dHMuc2l6ZSgpOyBpKyspIHsKKysgICAgZGF0YS5hcHBlbmQob2JqZWN0c1tpXS0+cmVuZGVyKGZp bGUpKTsKKysgIH0KKysgIGRhdGEgPSBCeXRlVmVjdG9yKCJceDExXHhEMlx4RDNceEFCXHhCQVx4 QTlceGNmXHgxMVx4OEVceEU2XHgwMFx4QzBceDBDXHgyMFx4NTNceDY1XHgwNlx4MDAiLCAxOCkg KyBCeXRlVmVjdG9yOjpmcm9tVUludChkYXRhLnNpemUoKSwgZmFsc2UpICsgZGF0YTsKKysgIHJl dHVybiBCYXNlT2JqZWN0OjpyZW5kZXIoZmlsZSk7CisrfQorKworKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisrLy8gcHVibGljIG1lbWJlcnMKKysvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworKwor K0FTRjo6RmlsZTo6RmlsZShjb25zdCBjaGFyICpmaWxlLCBib29sIHJlYWRQcm9wZXJ0aWVzLCBQ cm9wZXJ0aWVzOjpSZWFkU3R5bGUgcHJvcGVydGllc1N0eWxlKSAKKysgIDogVGFnTGliOjpGaWxl KGZpbGUpCisreworKyAgZCA9IG5ldyBGaWxlUHJpdmF0ZTsKKysgIHJlYWQocmVhZFByb3BlcnRp ZXMsIHByb3BlcnRpZXNTdHlsZSk7CisrfQorKworK0FTRjo6RmlsZTo6fkZpbGUoKQorK3sKKysg IGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBkLT5vYmplY3RzLnNpemUoKTsgaSsrKSB7Cisr ICAgIGRlbGV0ZSBkLT5vYmplY3RzW2ldOworKyAgfQorKyAgaWYoZC0+dGFnKSB7CisrICAgIGRl bGV0ZSBkLT50YWc7CisrICB9CisrICBpZihkLT5wcm9wZXJ0aWVzKSB7CisrICAgIGRlbGV0ZSBk LT5wcm9wZXJ0aWVzOworKyAgfQorKyAgZGVsZXRlIGQ7CisrfQorKworK0FTRjo6VGFnICpBU0Y6 OkZpbGU6OnRhZygpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPnRhZzsKKyt9CisrCisrQVNGOjpQ cm9wZXJ0aWVzICpBU0Y6OkZpbGU6OmF1ZGlvUHJvcGVydGllcygpIGNvbnN0CisreworKyAgcmV0 dXJuIGQtPnByb3BlcnRpZXM7CisrfQorKworK3ZvaWQgQVNGOjpGaWxlOjpyZWFkKGJvb2wgLypy ZWFkUHJvcGVydGllcyovLCBQcm9wZXJ0aWVzOjpSZWFkU3R5bGUgLypwcm9wZXJ0aWVzU3R5bGUq LykKKyt7CisrICBpZighaXNWYWxpZCgpKQorKyAgICByZXR1cm47CisrCisrICBCeXRlVmVjdG9y IGd1aWQgPSByZWFkQmxvY2soMTYpOworKyAgaWYoZ3VpZCAhPSBoZWFkZXJHdWlkKSB7CisrICAg IHJldHVybjsKKysgIH0KKysKKysgIGQtPnRhZyA9IG5ldyBBU0Y6OlRhZygpOworKyAgZC0+cHJv cGVydGllcyA9IG5ldyBBU0Y6OlByb3BlcnRpZXMoKTsKKysKKysgIGQtPnNpemUgPSByZWFkUVdP UkQoKTsKKysgIGludCBudW1PYmplY3RzID0gcmVhZERXT1JEKCk7CisrICBzZWVrKDIsIEN1cnJl bnQpOworKworKyAgZm9yKGludCBpID0gMDsgaSA8IG51bU9iamVjdHM7IGkrKykgeworKyAgICBC eXRlVmVjdG9yIGd1aWQgPSByZWFkQmxvY2soMTYpOworKyAgICBsb25nIHNpemUgPSAobG9uZyly ZWFkUVdPUkQoKTsKKysgICAgQmFzZU9iamVjdCAqb2JqOworKyAgICBpZihndWlkID09IGZpbGVQ cm9wZXJ0aWVzR3VpZCkgeworKyAgICAgIG9iaiA9IG5ldyBGaWxlUHJvcGVydGllc09iamVjdCgp OworKyAgICB9CisrICAgIGVsc2UgaWYoZ3VpZCA9PSBzdHJlYW1Qcm9wZXJ0aWVzR3VpZCkgewor KyAgICAgIG9iaiA9IG5ldyBTdHJlYW1Qcm9wZXJ0aWVzT2JqZWN0KCk7CisrICAgIH0KKysgICAg ZWxzZSBpZihndWlkID09IGNvbnRlbnREZXNjcmlwdGlvbkd1aWQpIHsKKysgICAgICBvYmogPSBu ZXcgQ29udGVudERlc2NyaXB0aW9uT2JqZWN0KCk7CisrICAgIH0KKysgICAgZWxzZSBpZihndWlk ID09IGV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uR3VpZCkgeworKyAgICAgIG9iaiA9IG5ldyBF eHRlbmRlZENvbnRlbnREZXNjcmlwdGlvbk9iamVjdCgpOworKyAgICB9CisrICAgIGVsc2UgaWYo Z3VpZCA9PSBoZWFkZXJFeHRlbnNpb25HdWlkKSB7CisrICAgICAgb2JqID0gbmV3IEhlYWRlckV4 dGVuc2lvbk9iamVjdCgpOworKyAgICB9CisrICAgIGVsc2UgeworKyAgICAgIG9iaiA9IG5ldyBV bmtub3duT2JqZWN0KGd1aWQpOworKyAgICB9CisrICAgIG9iai0+cGFyc2UodGhpcywgc2l6ZSk7 CisrICAgIGQtPm9iamVjdHMuYXBwZW5kKG9iaik7CisrICB9CisrfQorKworK2Jvb2wgQVNGOjpG aWxlOjpzYXZlKCkKKyt7CisrICBpZihyZWFkT25seSgpKSB7CisrICAgIHJldHVybiBmYWxzZTsK KysgIH0KKysKKysgIGlmKCFkLT5jb250ZW50RGVzY3JpcHRpb25PYmplY3QpIHsKKysgICAgZC0+ Y29udGVudERlc2NyaXB0aW9uT2JqZWN0ID0gbmV3IENvbnRlbnREZXNjcmlwdGlvbk9iamVjdCgp OworKyAgICBkLT5vYmplY3RzLmFwcGVuZChkLT5jb250ZW50RGVzY3JpcHRpb25PYmplY3QpOwor KyAgfQorKyAgaWYoIWQtPmV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0KSB7CisrICAg IGQtPmV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0ID0gbmV3IEV4dGVuZGVkQ29udGVu dERlc2NyaXB0aW9uT2JqZWN0KCk7CisrICAgIGQtPm9iamVjdHMuYXBwZW5kKGQtPmV4dGVuZGVk Q29udGVudERlc2NyaXB0aW9uT2JqZWN0KTsKKysgIH0KKysgIGlmKCFkLT5oZWFkZXJFeHRlbnNp b25PYmplY3QpIHsKKysgICAgZC0+aGVhZGVyRXh0ZW5zaW9uT2JqZWN0ID0gbmV3IEhlYWRlckV4 dGVuc2lvbk9iamVjdCgpOworKyAgICBkLT5vYmplY3RzLmFwcGVuZChkLT5oZWFkZXJFeHRlbnNp b25PYmplY3QpOworKyAgfQorKyAgaWYoIWQtPm1ldGFkYXRhT2JqZWN0KSB7CisrICAgIGQtPm1l dGFkYXRhT2JqZWN0ID0gbmV3IE1ldGFkYXRhT2JqZWN0KCk7CisrICAgIGQtPmhlYWRlckV4dGVu c2lvbk9iamVjdC0+b2JqZWN0cy5hcHBlbmQoZC0+bWV0YWRhdGFPYmplY3QpOworKyAgfQorKyAg aWYoIWQtPm1ldGFkYXRhTGlicmFyeU9iamVjdCkgeworKyAgICBkLT5tZXRhZGF0YUxpYnJhcnlP YmplY3QgPSBuZXcgTWV0YWRhdGFMaWJyYXJ5T2JqZWN0KCk7CisrICAgIGQtPmhlYWRlckV4dGVu c2lvbk9iamVjdC0+b2JqZWN0cy5hcHBlbmQoZC0+bWV0YWRhdGFMaWJyYXJ5T2JqZWN0KTsKKysg IH0KKysKKysgIEFTRjo6QXR0cmlidXRlTGlzdE1hcDo6Q29uc3RJdGVyYXRvciBpdCA9IGQtPnRh Zy0+YXR0cmlidXRlTGlzdE1hcCgpLmJlZ2luKCk7CisrICBmb3IoOyBpdCAhPSBkLT50YWctPmF0 dHJpYnV0ZUxpc3RNYXAoKS5lbmQoKTsgaXQrKykgeworKyAgICBjb25zdCBTdHJpbmcgJm5hbWUg PSBpdC0+Zmlyc3Q7CisrICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3QgJmF0dHJpYnV0ZXMgPSBpdC0+ c2Vjb25kOworKyAgICBib29sIGluRXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3QgPSBm YWxzZTsKKysgICAgYm9vbCBpbk1ldGFkYXRhT2JqZWN0ID0gZmFsc2U7CisrICAgIGZvcih1bnNp Z25lZCBpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVzLnNpemUoKTsgaisrKSB7CisrICAgICAgY29u c3QgQXR0cmlidXRlICZhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2pdOworKyAgICAgIGlmKCFpbkV4 dGVuZGVkQ29udGVudERlc2NyaXB0aW9uT2JqZWN0ICYmIGF0dHJpYnV0ZS5sYW5ndWFnZSgpID09 IDAgJiYgYXR0cmlidXRlLnN0cmVhbSgpID09IDApIHsKKysgICAgICAgIGQtPmV4dGVuZGVkQ29u dGVudERlc2NyaXB0aW9uT2JqZWN0LT5hdHRyaWJ1dGVEYXRhLmFwcGVuZChhdHRyaWJ1dGUucmVu ZGVyKG5hbWUpKTsKKysgICAgICAgIGluRXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb25PYmplY3Qg PSB0cnVlOworKyAgICAgIH0KKysgICAgICBlbHNlIGlmKCFpbk1ldGFkYXRhT2JqZWN0ICYmIGF0 dHJpYnV0ZS5sYW5ndWFnZSgpID09IDAgJiYgYXR0cmlidXRlLnN0cmVhbSgpICE9IDApIHsKKysg ICAgICAgIGQtPm1ldGFkYXRhT2JqZWN0LT5hdHRyaWJ1dGVEYXRhLmFwcGVuZChhdHRyaWJ1dGUu cmVuZGVyKG5hbWUsIDEpKTsKKysgICAgICAgIGluTWV0YWRhdGFPYmplY3QgPSB0cnVlOworKyAg ICAgIH0KKysgICAgICBlbHNlIHsKKysgICAgICAgIGQtPm1ldGFkYXRhTGlicmFyeU9iamVjdC0+ YXR0cmlidXRlRGF0YS5hcHBlbmQoYXR0cmlidXRlLnJlbmRlcihuYW1lLCAyKSk7CisrICAgICAg fQorKyAgICB9CisrICB9CisrCisrICBCeXRlVmVjdG9yIGRhdGE7CisrICBmb3IodW5zaWduZWQg aW50IGkgPSAwOyBpIDwgZC0+b2JqZWN0cy5zaXplKCk7IGkrKykgeworKyAgICBkYXRhLmFwcGVu ZChkLT5vYmplY3RzW2ldLT5yZW5kZXIodGhpcykpOworKyAgfQorKyAgZGF0YSA9IGhlYWRlckd1 aWQgKyBCeXRlVmVjdG9yOjpmcm9tTG9uZ0xvbmcoZGF0YS5zaXplKCkgKyAzMCwgZmFsc2UpICsg Qnl0ZVZlY3Rvcjo6ZnJvbVVJbnQoZC0+b2JqZWN0cy5zaXplKCksIGZhbHNlKSArIEJ5dGVWZWN0 b3IoIlx4MDFceDAyIiwgMikgKyBkYXRhOworKyAgaW5zZXJ0KGRhdGEsIDAsIGQtPnNpemUpOwor KworKyAgcmV0dXJuIHRydWU7CisrfQorKworKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisrLy8g cHJvdGVjdGVkIG1lbWJlcnMKKysvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworKworK2ludCBBU0Y6 OkZpbGU6OnJlYWRCWVRFKCkKKyt7CisrICBCeXRlVmVjdG9yIHYgPSByZWFkQmxvY2soMSk7Cisr ICByZXR1cm4gdlswXTsKKyt9CisrCisraW50IEFTRjo6RmlsZTo6cmVhZFdPUkQoKQorK3sKKysg IEJ5dGVWZWN0b3IgdiA9IHJlYWRCbG9jaygyKTsKKysgIHJldHVybiB2LnRvU2hvcnQoZmFsc2Up OworK30KKysKKyt1bnNpZ25lZCBpbnQgQVNGOjpGaWxlOjpyZWFkRFdPUkQoKQorK3sKKysgIEJ5 dGVWZWN0b3IgdiA9IHJlYWRCbG9jayg0KTsKKysgIHJldHVybiB2LnRvVUludChmYWxzZSk7Cisr fQorKworK2xvbmcgbG9uZyBBU0Y6OkZpbGU6OnJlYWRRV09SRCgpCisreworKyAgQnl0ZVZlY3Rv ciB2ID0gcmVhZEJsb2NrKDgpOworKyAgcmV0dXJuIHYudG9Mb25nTG9uZyhmYWxzZSk7CisrfQor KworK1N0cmluZworK0FTRjo6RmlsZTo6cmVhZFN0cmluZyhpbnQgbGVuZ3RoKQorK3sKKysgIEJ5 dGVWZWN0b3IgZGF0YSA9IHJlYWRCbG9jayhsZW5ndGgpOworKyAgdW5zaWduZWQgaW50IHNpemUg PSBkYXRhLnNpemUoKTsKKysgIHdoaWxlIChzaXplID49IDIpIHsKKysgICAgaWYoZGF0YVtzaXpl IC0gMV0gIT0gJ1wwJyB8fCBkYXRhW3NpemUgLSAyXSAhPSAnXDAnKSB7CisrICAgICAgYnJlYWs7 CisrICAgIH0KKysgICAgc2l6ZSAtPSAyOworKyAgfQorKyAgaWYoc2l6ZSAhPSBkYXRhLnNpemUo KSkgeworKyAgICBkYXRhLnJlc2l6ZShzaXplKTsKKysgIH0KKysgIHJldHVybiBTdHJpbmcoZGF0 YSwgU3RyaW5nOjpVVEYxNkxFKTsKKyt9CisrCisrQnl0ZVZlY3RvcgorK0FTRjo6RmlsZTo6cmVu ZGVyU3RyaW5nKGNvbnN0IFN0cmluZyAmc3RyLCBib29sIGluY2x1ZGVMZW5ndGgpCisreworKyAg Qnl0ZVZlY3RvciBkYXRhID0gc3RyLmRhdGEoU3RyaW5nOjpVVEYxNkxFKSArIEJ5dGVWZWN0b3I6 OmZyb21TaG9ydCgwLCBmYWxzZSk7CisrICBpZihpbmNsdWRlTGVuZ3RoKSB7CisrICAgIGRhdGEg PSBCeXRlVmVjdG9yOjpmcm9tU2hvcnQoZGF0YS5zaXplKCksIGZhbHNlKSArIGRhdGE7CisrICB9 CisrICByZXR1cm4gZGF0YTsKKyt9CisKK1Byb3BlcnR5IGNoYW5nZXMgb246IGFtYXJvay9zcmMv bWV0YWRhdGEvYXNmL2FzZmZpbGUuY3BwCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitOYW1lOiBzdm46ZW9sLXN0eWxl CisgICArIG5hdGl2ZQorCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmdGFnLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Z0YWcuaAkocmV2aXNp b24gMCkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL2FzZi9hc2Z0YWcuaAkocmV2aXNpb24gNzQz MDA1KQorQEAgLTAsMCArMSwxODEgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgICAgY29weXJp Z2h0ICAgICAgICAgICAgOiAoQykgMjAwNS0yMDA3IGJ5IEx1a8OhxaEgTGFsaW5za8O9CisrICAg IGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21haWwuY29tCisrICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisr ICogICBpdCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAgKgorKyAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCisrICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKysgKiAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VICAgICAqCisrICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgICAgICAqCisrICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorKyAqICAgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAy MTExLTEzMDcgICoKKysgKiAgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KysKKysjaWZuZGVmIFRBR0xJQl9BU0ZUQUdfSAorKyNkZWZpbmUgVEFHTElCX0FTRlRBR19ICisr CisrI2luY2x1ZGUgPHRhZy5oPgorKyNpbmNsdWRlIDx0bGlzdC5oPgorKyNpbmNsdWRlIDx0bWFw Lmg+CisrI2luY2x1ZGUgImFzZmF0dHJpYnV0ZS5oIgorKworK25hbWVzcGFjZSBUYWdMaWIgewor KworKyAgbmFtZXNwYWNlIEFTRiB7CisrCisrICAgIHR5cGVkZWYgTGlzdDxBdHRyaWJ1dGU+IEF0 dHJpYnV0ZUxpc3Q7CisrICAgIHR5cGVkZWYgTWFwPFN0cmluZywgQXR0cmlidXRlTGlzdD4gQXR0 cmlidXRlTGlzdE1hcDsKKysKKysgICAgY2xhc3MgVGFnIDogcHVibGljIFRhZ0xpYjo6VGFnIHsK KysKKysgICAgICBmcmllbmQgY2xhc3MgRmlsZTsKKysKKysgICAgcHVibGljOgorKworKyAgICAg IFRhZygpOworKworKyAgICAgIHZpcnR1YWwgflRhZygpOworKworKyAgICAgIC8qIQorKyAgICAg ICAqIFJldHVybnMgdGhlIHRyYWNrIG5hbWUuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBT dHJpbmcgdGl0bGUoKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRo ZSBhcnRpc3QgbmFtZS4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFN0cmluZyBhcnRpc3Qo KSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSBhbGJ1bSBuYW1l OyBpZiBubyBhbGJ1bSBuYW1lIGlzIHByZXNlbnQgaW4gdGhlIHRhZworKyAgICAgICAqIFN0cmlu Zzo6bnVsbCB3aWxsIGJlIHJldHVybmVkLgorKyAgICAgICAqLworKyAgICAgIHZpcnR1YWwgU3Ry aW5nIGFsYnVtKCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUg dHJhY2sgY29tbWVudC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIFN0cmluZyBjb21tZW50 KCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgZ2VucmUgbmFt ZTsgaWYgbm8gZ2VucmUgaXMgcHJlc2VudCBpbiB0aGUgdGFnIFN0cmluZzo6bnVsbAorKyAgICAg ICAqIHdpbGwgYmUgcmV0dXJuZWQuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBTdHJpbmcg Z2VucmUoKSBjb25zdDsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBSZXR1cm5zIHRoZSByYXRp bmcuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBTdHJpbmcgcmF0aW5nKCkgY29uc3Q7Cisr CisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgZ2VucmUgbmFtZTsgaWYgbm8gZ2Vu cmUgaXMgcHJlc2VudCBpbiB0aGUgdGFnIFN0cmluZzo6bnVsbAorKyAgICAgICAqIHdpbGwgYmUg cmV0dXJuZWQuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCBTdHJpbmcgY29weXJpZ2h0KCkg Y29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogUmV0dXJucyB0aGUgeWVhcjsgaWYgdGhl cmUgaXMgbm8geWVhciBzZXQsIHRoaXMgd2lsbCByZXR1cm4gMC4KKysgICAgICAgKi8KKysgICAg ICB2aXJ0dWFsIHVpbnQgeWVhcigpIGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJl dHVybnMgdGhlIHRyYWNrIG51bWJlcjsgaWYgdGhlcmUgaXMgbm8gdHJhY2sgbnVtYmVyIHNldCwg dGhpcyB3aWxsCisrICAgICAgICogcmV0dXJuIDAuCisrICAgICAgICovCisrICAgICAgdmlydHVh bCB1aW50IHRyYWNrKCkgY29uc3Q7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0cyB0aGUg dGl0bGUgdG8gXGEgcy4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo Y29uc3QgU3RyaW5nICZzKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSBhcnRp c3QgdG8gXGEgcy4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0QXJ0aXN0KGNv bnN0IFN0cmluZyAmcyk7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0cyB0aGUgYWxidW0g dG8gXGEgcy4gIElmIFxhIHMgaXMgU3RyaW5nOjpudWxsIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJl CisrICAgICAgICogY2xlYXJlZC4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0 QWxidW0oY29uc3QgU3RyaW5nICZzKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRo ZSBjb21tZW50IHRvIFxhIHMuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCB2b2lkIHNldENv bW1lbnQoY29uc3QgU3RyaW5nICZzKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRo ZSByYXRpbmcgdG8gXGEgcy4gCisrICAgICAgICovCisrICAgICAgdmlydHVhbCB2b2lkIHNldFJh dGluZyhjb25zdCBTdHJpbmcgJnMpOworKworKyAgICAgIC8qIQorKyAgICAgICAqIFNldHMgdGhl IGNvcHlyaWdodCB0byBcYSBzLiAKKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIHZvaWQgc2V0 Q29weXJpZ2h0KGNvbnN0IFN0cmluZyAmcyk7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0 cyB0aGUgZ2VucmUgdG8gXGEgcy4gCisrICAgICAgICovCisrICAgICAgdmlydHVhbCB2b2lkIHNl dEdlbnJlKGNvbnN0IFN0cmluZyAmcyk7CisrCisrICAgICAgLyohCisrICAgICAgICogU2V0cyB0 aGUgeWVhciB0byBcYSBpLiAgSWYgXGEgcyBpcyAwIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIGNs ZWFyZWQuCisrICAgICAgICovCisrICAgICAgdmlydHVhbCB2b2lkIHNldFllYXIodWludCBpKTsK KysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRzIHRoZSB0cmFjayB0byBcYSBpLiAgSWYgXGEg cyBpcyAwIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIGNsZWFyZWQuCisrICAgICAgICovCisrICAg ICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKHVpbnQgaSk7CisrCisrICAgICAgLyohCisrICAgICAg ICogUmV0dXJucyB0cnVlIGlmIHRoZSB0YWcgZG9lcyBub3QgY29udGFpbiBhbnkgZGF0YS4gIFRo aXMgc2hvdWxkIGJlCisrICAgICAgICogcmVpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzIHRoYXQg cHJvdmlkZSBtb3JlIHRoYW4gdGhlIGJhc2ljIHRhZ2dpbmcKKysgICAgICAgKiBhYmlsaXRpZXMg aW4gdGhpcyBjbGFzcy4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgp IGNvbnN0OworKworKyAgICAgIC8qIQorKyAgICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8g dGhlIGl0ZW0gbGlzdCBtYXAuICBUaGlzIGlzIGFuIEF0dHJpYnV0ZUxpc3RNYXAgb2YKKysgICAg ICAgKiBhbGwgb2YgdGhlIGl0ZW1zIGluIHRoZSB0YWcuCisrICAgICAgICoKKysgICAgICAgKiBU aGlzIGlzIHRoZSBtb3N0IHBvd2VyZnVsbCBzdHJ1Y3R1cmUgZm9yIGFjY2Vzc2luZyB0aGUgaXRl bXMgb2YgdGhlIHRhZy4KKysgICAgICAgKi8KKysgICAgICBBdHRyaWJ1dGVMaXN0TWFwICZhdHRy aWJ1dGVMaXN0TWFwKCk7CisrCisrICAgICAgLyohCisrICAgICAgICogUmVtb3ZlcyB0aGUgXGEg a2V5IGF0dHJpYnV0ZSBmcm9tIHRoZSB0YWcKKysgICAgICAgKi8KKysgICAgICB2b2lkIHJlbW92 ZUl0ZW0oY29uc3QgU3RyaW5nICZuYW1lKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBTZXRz IHRoZSBcYSBrZXkgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBvZiBcYSBhdHRyaWJ1dGUuIElmIGFu IGF0dHJpYnV0ZQorKyAgICAgICAqIHdpdGggdGhlIFxhIGtleSBpcyBhbHJlYWR5IHByZXNlbnQs IGl0IHdpbGwgYmUgcmVwbGFjZWQuCisrICAgICAgICovCisrICAgICAgdm9pZCBzZXRBdHRyaWJ1 dGUoY29uc3QgU3RyaW5nICZuYW1lLCBjb25zdCBBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisrCisr ICAgICAgLyohCisrICAgICAgICogU2V0cyB0aGUgXGEga2V5IGF0dHJpYnV0ZSB0byB0aGUgdmFs dWUgb2YgXGEgYXR0cmlidXRlLiBJZiBhbiBhdHRyaWJ1dGUKKysgICAgICAgKiB3aXRoIHRoZSBc YSBrZXkgaXMgYWxyZWFkeSBwcmVzZW50LCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBsaXN0Lgor KyAgICAgICAqLworKyAgICAgIHZvaWQgYWRkQXR0cmlidXRlKGNvbnN0IFN0cmluZyAmbmFtZSwg Y29uc3QgQXR0cmlidXRlICZhdHRyaWJ1dGUpOworKworKyAgICBwcml2YXRlOgorKworKyAgICAg IGNsYXNzIFRhZ1ByaXZhdGU7CisrICAgICAgVGFnUHJpdmF0ZSAqZDsKKysgICAgfTsKKysgIH0K Kyt9CisrI2VuZGlmCitJbmRleDogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmcHJvcGVydGll cy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmcHJvcGVydGll cy5oCShyZXZpc2lvbiAwKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZnByb3BlcnRp ZXMuaAkocmV2aXNpb24gNzQzMDA1KQorQEAgLTAsMCArMSw2OSBAQAorKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKyAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1LTIwMDcgYnkgTHVrw6HF oSBMYWxpbnNrw70KKysgICAgZW1haWwgICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5j b20KKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAg VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgICoKKysgKiAgIGl0ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAqCisrICogICAyLjEgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAg KgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgICAqCisrICogICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAg ICAgICAgICAgKgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKysgKiAgIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqCisr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICoKKysgKiAgIExpY2Vuc2Ug YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgICAqCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgKgorKyAqICAgVVNBICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgVEFHTElCX0FTRlBST1BFUlRJRVNfSAorKyNk ZWZpbmUgVEFHTElCX0FTRlBST1BFUlRJRVNfSAorKworKyNpbmNsdWRlIDxhdWRpb3Byb3BlcnRp ZXMuaD4KKysjaW5jbHVkZSA8dHN0cmluZy5oPgorKworK25hbWVzcGFjZSBUYWdMaWIgeworKwor KyAgbmFtZXNwYWNlIEFTRiB7CisrCisrICAgIC8vISBBbiBpbXBsZW1lbnRhdGlvbiBvZiBBU0Yg YXVkaW8gcHJvcGVydGllcworKyAgICBjbGFzcyBQcm9wZXJ0aWVzIDogcHVibGljIEF1ZGlvUHJv cGVydGllcworKyAgICB7CisrICAgIHB1YmxpYzoKKysKKysgICAgICAvKiEKKysgICAgICAgKiBD cmVhdGUgYW4gaW5zdGFuY2Ugb2YgQVNGOjpQcm9wZXJ0aWVzLgorKyAgICAgICAqLworKyAgICAg IFByb3BlcnRpZXMoKTsKKysKKysgICAgICAvKiEKKysgICAgICAgKiBEZXN0cm95cyB0aGlzIEFT Rjo6UHJvcGVydGllcyBpbnN0YW5jZS4KKysgICAgICAgKi8KKysgICAgICB2aXJ0dWFsIH5Qcm9w ZXJ0aWVzKCk7CisrCisrICAgICAgLy8gUmVpbXBsZW1lbnRhdGlvbnMuCisrICAgICAgdmlydHVh bCBpbnQgbGVuZ3RoKCkgY29uc3Q7CisrICAgICAgdmlydHVhbCBpbnQgYml0cmF0ZSgpIGNvbnN0 OworKyAgICAgIHZpcnR1YWwgaW50IHNhbXBsZVJhdGUoKSBjb25zdDsKKysgICAgICB2aXJ0dWFs IGludCBjaGFubmVscygpIGNvbnN0OworKworKyNpZm5kZWYgRE9fTk9UX0RPQ1VNRU5UCisrICAg ICAgdm9pZCBzZXRMZW5ndGgoaW50IHZhbHVlKTsKKysgICAgICB2b2lkIHNldEJpdHJhdGUoaW50 IHZhbHVlKTsKKysgICAgICB2b2lkIHNldFNhbXBsZVJhdGUoaW50IHZhbHVlKTsKKysgICAgICB2 b2lkIHNldENoYW5uZWxzKGludCB2YWx1ZSk7CisrI2VuZGlmCisrCisrICAgIHByaXZhdGU6Cisr ICAgICAgY2xhc3MgUHJvcGVydGllc1ByaXZhdGU7CisrICAgICAgUHJvcGVydGllc1ByaXZhdGUg KmQ7CisrICAgIH07CisrCisrICB9CisrCisrfQorKworKyNlbmRpZiAKKworUHJvcGVydHkgY2hh bmdlcyBvbjogYW1hcm9rL3NyYy9tZXRhZGF0YS9hc2YvYXNmcHJvcGVydGllcy5oCitfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCitOYW1lOiBzdm46ZW9sLXN0eWxlCisgICArIG5hdGl2ZQorCitJbmRleDogYW1hcm9rL3Ny Yy9tZXRhZGF0YS9hc2YvYXNmYXR0cmlidXRlLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9z cmMvbWV0YWRhdGEvYXNmL2FzZmF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDApCisrKysgYW1hcm9r L3NyYy9tZXRhZGF0YS9hc2YvYXNmYXR0cmlidXRlLmNwcAkocmV2aXNpb24gNzQzMDA1KQorQEAg LTAsMCArMSwzMDQgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgICAgY29weXJpZ2h0ICAgICAg ICAgICAgOiAoQykgMjAwNS0yMDA3IGJ5IEx1a8OhxaEgTGFsaW5za8O9CisrICAgIGVtYWlsICAg ICAgICAgICAgICAgIDogbGFsaW5za3lAZ21haWwuY29tCisrICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor KworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisrICogICBpdCAg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAgKgorKyAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisr ICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0ICAgKgorKyAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKysgKiAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V ICAgICAqCisrICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgICAgICAqCisrICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorKyAqICAgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcg ICoKKysgKiAgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5j bHVkZSA8dGFnbGliLmg+CisrI2luY2x1ZGUgImFzZmF0dHJpYnV0ZS5oIgorKyNpbmNsdWRlICJh c2ZmaWxlLmgiCisrCisrdXNpbmcgbmFtZXNwYWNlIFRhZ0xpYjsKKysKKytjbGFzcyBBU0Y6OkF0 dHJpYnV0ZTo6QXR0cmlidXRlUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVyCisreworK3B1Ymxp YzoKKysgIEF0dHJpYnV0ZVByaXZhdGUoKQorKyAgICA6IHN0cmVhbSgwKSwKKysgICAgICBsYW5n dWFnZSgwKSB7fQorKyAgQXR0cmlidXRlVHlwZXMgdHlwZTsKKysgIFN0cmluZyBzdHJpbmdWYWx1 ZTsKKysgIEJ5dGVWZWN0b3IgYnl0ZVZlY3RvclZhbHVlOworKyAgdW5pb24geworKyAgICB1bnNp Z25lZCBpbnQgaW50VmFsdWU7CisrICAgIHVuc2lnbmVkIHNob3J0IHNob3J0VmFsdWU7CisrICAg IHVuc2lnbmVkIGxvbmcgbG9uZyBsb25nTG9uZ1ZhbHVlOworKyAgICBib29sIGJvb2xWYWx1ZTsK KysgIH07CisrICBpbnQgc3RyZWFtOworKyAgaW50IGxhbmd1YWdlOworK307CisrCisrLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKysvLyBwdWJsaWMgbWVtYmVycworKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisrCisrQVNGOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSgpCisreworKyAgZCA9IG5ldyBB dHRyaWJ1dGVQcml2YXRlOworKyAgZC0+dHlwZSA9IFVuaWNvZGVUeXBlOworK30KKysKKytBU0Y6 OkF0dHJpYnV0ZTo6QXR0cmlidXRlKGNvbnN0IEFTRjo6QXR0cmlidXRlICZvdGhlcikKKysgIDog ZChvdGhlci5kKQorK3sKKysgIGQtPnJlZigpOworK30KKysKKytBU0Y6OkF0dHJpYnV0ZSAmCisr QVNGOjpBdHRyaWJ1dGU6Om9wZXJhdG9yPShjb25zdCBBU0Y6OkF0dHJpYnV0ZSAmb3RoZXIpCisr eworKyAgaWYoZC0+ZGVyZWYoKSkKKysgICAgZGVsZXRlIGQ7CisrICBkID0gb3RoZXIuZDsKKysg IGQtPnJlZigpOworKyAgcmV0dXJuICp0aGlzOworK30KKysKKytBU0Y6OkF0dHJpYnV0ZTo6fkF0 dHJpYnV0ZSgpCisreworKyAgaWYoZC0+ZGVyZWYoKSkKKysgICAgZGVsZXRlIGQ7CisrfQorKwor K0FTRjo6QXR0cmlidXRlOjpBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZ2YWx1ZSkKKyt7CisrICBk ID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7CisrICBkLT50eXBlID0gVW5pY29kZVR5cGU7CisrICBk LT5zdHJpbmdWYWx1ZSA9IHZhbHVlOworK30KKysKKytBU0Y6OkF0dHJpYnV0ZTo6QXR0cmlidXRl KGNvbnN0IEJ5dGVWZWN0b3IgJnZhbHVlKQorK3sKKysgIGQgPSBuZXcgQXR0cmlidXRlUHJpdmF0 ZTsKKysgIGQtPnR5cGUgPSBCeXRlc1R5cGU7CisrICBkLT5ieXRlVmVjdG9yVmFsdWUgPSB2YWx1 ZTsKKyt9CisrCisrQVNGOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSh1bnNpZ25lZCBpbnQgdmFsdWUp CisreworKyAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworKyAgZC0+dHlwZSA9IERXb3JkVHlw ZTsKKysgIGQtPmludFZhbHVlID0gdmFsdWU7CisrfQorKworK0FTRjo6QXR0cmlidXRlOjpBdHRy aWJ1dGUodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQorK3sKKysgIGQgPSBuZXcgQXR0cmlidXRl UHJpdmF0ZTsKKysgIGQtPnR5cGUgPSBRV29yZFR5cGU7CisrICBkLT5sb25nTG9uZ1ZhbHVlID0g dmFsdWU7CisrfQorKworK0FTRjo6QXR0cmlidXRlOjpBdHRyaWJ1dGUodW5zaWduZWQgc2hvcnQg dmFsdWUpCisreworKyAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworKyAgZC0+dHlwZSA9IFdv cmRUeXBlOworKyAgZC0+c2hvcnRWYWx1ZSA9IHZhbHVlOworK30KKysKKytBU0Y6OkF0dHJpYnV0 ZTo6QXR0cmlidXRlKGJvb2wgdmFsdWUpCisreworKyAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRl OworKyAgZC0+dHlwZSA9IEJvb2xUeXBlOworKyAgZC0+Ym9vbFZhbHVlID0gdmFsdWU7CisrfQor KworK0FTRjo6QXR0cmlidXRlOjpBdHRyaWJ1dGVUeXBlcworK0FTRjo6QXR0cmlidXRlOjp0eXBl KCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+dHlwZTsKKyt9CisrCisrU3RyaW5nCisrQVNGOjpB dHRyaWJ1dGU6OnRvU3RyaW5nKCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+c3RyaW5nVmFsdWU7 CisrfQorKworK0J5dGVWZWN0b3IKKytBU0Y6OkF0dHJpYnV0ZTo6dG9CeXRlVmVjdG9yKCkgY29u c3QKKyt7CisrICByZXR1cm4gZC0+Ynl0ZVZlY3RvclZhbHVlOworK30KKysKKyt1bnNpZ25lZCBz aG9ydAorK0FTRjo6QXR0cmlidXRlOjp0b0Jvb2woKSBjb25zdAorK3sKKysgIHJldHVybiBkLT5z aG9ydFZhbHVlOworK30KKysKKyt1bnNpZ25lZCBzaG9ydAorK0FTRjo6QXR0cmlidXRlOjp0b1VT aG9ydCgpIGNvbnN0CisreworKyAgcmV0dXJuIGQtPnNob3J0VmFsdWU7CisrfQorKworK3Vuc2ln bmVkIGludAorK0FTRjo6QXR0cmlidXRlOjp0b1VJbnQoKSBjb25zdAorK3sKKysgIHJldHVybiBk LT5pbnRWYWx1ZTsKKyt9CisrCisrdW5zaWduZWQgbG9uZyBsb25nCisrQVNGOjpBdHRyaWJ1dGU6 OnRvVUxvbmdMb25nKCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+bG9uZ0xvbmdWYWx1ZTsKKyt9 CisrCisrU3RyaW5nCisrQVNGOjpBdHRyaWJ1dGU6OnBhcnNlKEFTRjo6RmlsZSAmZiwgaW50IGtp bmQpCisreworKyAgaW50IHNpemUsIG5hbWVMZW5ndGg7CisrICBTdHJpbmcgbmFtZTsKKysKKysg IC8vIGV4dGVuZGVkIGNvbnRlbnQgZGVzY3JpcHRvcgorKyAgaWYoa2luZCA9PSAwKSB7CisrICAg IG5hbWVMZW5ndGggPSBmLnJlYWRXT1JEKCk7CisrICAgIG5hbWUgPSBmLnJlYWRTdHJpbmcobmFt ZUxlbmd0aCk7CisrICAgIGQtPnR5cGUgPSBBU0Y6OkF0dHJpYnV0ZTo6QXR0cmlidXRlVHlwZXMo Zi5yZWFkV09SRCgpKTsKKysgICAgc2l6ZSA9IGYucmVhZFdPUkQoKTsKKysgIH0KKysgIC8vIG1l dGFkYXRhICYgbWV0YWRhdGEgbGlicmFyeQorKyAgZWxzZSB7CisrICAgIGludCB0ZW1wID0gZi5y ZWFkV09SRCgpOworKyAgICAvLyBtZXRhZGF0YSBsaWJyYXJ5CisrICAgIGlmKGtpbmQgPT0gMikg eworKyAgICAgIGQtPmxhbmd1YWdlID0gdGVtcDsKKysgICAgfQorKyAgICBkLT5zdHJlYW0gPSBm LnJlYWRXT1JEKCk7CisrICAgIG5hbWVMZW5ndGggPSBmLnJlYWRXT1JEKCk7CisrICAgIGQtPnR5 cGUgPSBBU0Y6OkF0dHJpYnV0ZTo6QXR0cmlidXRlVHlwZXMoZi5yZWFkV09SRCgpKTsKKysgICAg c2l6ZSA9IGYucmVhZERXT1JEKCk7CisrICAgIG5hbWUgPSBmLnJlYWRTdHJpbmcobmFtZUxlbmd0 aCk7CisrICB9CisrCisrICBzd2l0Y2goZC0+dHlwZSkgeworKyAgY2FzZSBXb3JkVHlwZToKKysg ICAgZC0+c2hvcnRWYWx1ZSA9IGYucmVhZFdPUkQoKTsKKysgICAgYnJlYWs7CisrCisrICBjYXNl IEJvb2xUeXBlOgorKyAgICBpZihraW5kID09IDApIHsKKysgICAgICBkLT5ib29sVmFsdWUgPSBm LnJlYWREV09SRCgpID09IDE7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgZC0+Ym9vbFZh bHVlID0gZi5yZWFkV09SRCgpID09IDE7CisrICAgIH0KKysgICAgYnJlYWs7CisrCisrICBjYXNl IERXb3JkVHlwZToKKysgICAgZC0+aW50VmFsdWUgPSBmLnJlYWREV09SRCgpOworKyAgICBicmVh azsKKysKKysgIGNhc2UgUVdvcmRUeXBlOgorKyAgICBkLT5sb25nTG9uZ1ZhbHVlID0gZi5yZWFk UVdPUkQoKTsKKysgICAgYnJlYWs7CisrCisrICBjYXNlIFVuaWNvZGVUeXBlOgorKyAgICBkLT5z dHJpbmdWYWx1ZSA9IGYucmVhZFN0cmluZyhzaXplKTsKKysgICAgYnJlYWs7CisrCisrICBjYXNl IEJ5dGVzVHlwZToKKysgIGNhc2UgR3VpZFR5cGU6CisrICAgIGQtPmJ5dGVWZWN0b3JWYWx1ZSA9 IGYucmVhZEJsb2NrKHNpemUpOworKyAgICBicmVhazsKKysgIH0KKysKKysgIHJldHVybiBuYW1l OworK30KKysKKytCeXRlVmVjdG9yCisrQVNGOjpBdHRyaWJ1dGU6OnJlbmRlcihjb25zdCBTdHJp bmcgJm5hbWUsIGludCBraW5kKSBjb25zdAorK3sKKysgIEJ5dGVWZWN0b3IgZGF0YTsKKysKKysg IHN3aXRjaCAoZC0+dHlwZSkgeworKyAgY2FzZSBXb3JkVHlwZToKKysgICAgZGF0YS5hcHBlbmQo Qnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KGQtPnNob3J0VmFsdWUsIGZhbHNlKSk7CisrICAgIGJyZWFr OworKworKyAgY2FzZSBCb29sVHlwZToKKysgICAgaWYoa2luZCA9PSAwKSB7CisrICAgICAgZGF0 YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVVJbnQoZC0+Ym9vbFZhbHVlID8gMSA6IDAsIGZhbHNl KSk7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6 ZnJvbVNob3J0KGQtPmJvb2xWYWx1ZSA/IDEgOiAwLCBmYWxzZSkpOworKyAgICB9CisrICAgIGJy ZWFrOworKworKyAgY2FzZSBEV29yZFR5cGU6CisrICAgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6 OmZyb21VSW50KGQtPmludFZhbHVlLCBmYWxzZSkpOworKyAgICBicmVhazsKKysKKysgIGNhc2Ug UVdvcmRUeXBlOgorKyAgICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tTG9uZ0xvbmcoZC0+ bG9uZ0xvbmdWYWx1ZSwgZmFsc2UpKTsKKysgICAgYnJlYWs7CisrCisrICBjYXNlIFVuaWNvZGVU eXBlOgorKyAgICBkYXRhLmFwcGVuZChGaWxlOjpyZW5kZXJTdHJpbmcoZC0+c3RyaW5nVmFsdWUp KTsKKysgICAgYnJlYWs7CisrCisrICBjYXNlIEJ5dGVzVHlwZToKKysgIGNhc2UgR3VpZFR5cGU6 CisrICAgIGRhdGEuYXBwZW5kKGQtPmJ5dGVWZWN0b3JWYWx1ZSk7CisrICAgIGJyZWFrOworKyAg fQorKworKyAgaWYoa2luZCA9PSAwKSB7CisrICAgIGRhdGEgPSBGaWxlOjpyZW5kZXJTdHJpbmco bmFtZSwgdHJ1ZSkgKworKyAgICAgICAgICAgQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KChpbnQpZC0+ dHlwZSwgZmFsc2UpICsKKysgICAgICAgICAgIEJ5dGVWZWN0b3I6OmZyb21TaG9ydChkYXRhLnNp emUoKSwgZmFsc2UpICsKKysgICAgICAgICAgIGRhdGE7CisrICB9CisrICBlbHNlIHsKKysgICAg Qnl0ZVZlY3RvciBuYW1lRGF0YSA9IEZpbGU6OnJlbmRlclN0cmluZyhuYW1lKTsKKysgICAgZGF0 YSA9IEJ5dGVWZWN0b3I6OmZyb21TaG9ydChraW5kID09IDIgPyBkLT5sYW5ndWFnZSA6IDAsIGZh bHNlKSArCisrICAgICAgICAgICBCeXRlVmVjdG9yOjpmcm9tU2hvcnQoZC0+c3RyZWFtLCBmYWxz ZSkgKworKyAgICAgICAgICAgQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KG5hbWVEYXRhLnNpemUoKSwg ZmFsc2UpICsKKysgICAgICAgICAgIEJ5dGVWZWN0b3I6OmZyb21TaG9ydCgoaW50KWQtPnR5cGUs IGZhbHNlKSArCisrICAgICAgICAgICBCeXRlVmVjdG9yOjpmcm9tVUludChkYXRhLnNpemUoKSwg ZmFsc2UpICsKKysgICAgICAgICAgIG5hbWVEYXRhICsKKysgICAgICAgICAgIGRhdGE7CisrICB9 CisrCisrICByZXR1cm4gZGF0YTsKKyt9CisrCisraW50CisrQVNGOjpBdHRyaWJ1dGU6Omxhbmd1 YWdlKCkgY29uc3QKKyt7CisrICByZXR1cm4gZC0+bGFuZ3VhZ2U7CisrfQorKworK3ZvaWQKKytB U0Y6OkF0dHJpYnV0ZTo6c2V0TGFuZ3VhZ2UoaW50IHZhbHVlKQorK3sKKysgIGQtPmxhbmd1YWdl ID0gdmFsdWU7CisrfQorKworK2ludAorK0FTRjo6QXR0cmlidXRlOjpzdHJlYW0oKSBjb25zdAor K3sKKysgIHJldHVybiBkLT5zdHJlYW07CisrfQorKworK3ZvaWQKKytBU0Y6OkF0dHJpYnV0ZTo6 c2V0U3RyZWFtKGludCB2YWx1ZSkKKyt7CisrICBkLT5zdHJlYW0gPSB2YWx1ZTsKKyt9CisKK1By b3BlcnR5IGNoYW5nZXMgb246IGFtYXJvay9zcmMvbWV0YWRhdGEvYXNmL2FzZmF0dHJpYnV0ZS5j cHAKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KK05hbWU6IHN2bjplb2wtc3R5bGUKKyAgICsgbmF0aXZlCisKK0luZGV4 OiBhbWFyb2svc3JjL21ldGFkYXRhL21wNC9tcDRmaWxlLmNwcAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFt YXJvay9zcmMvbWV0YWRhdGEvbXA0L21wNGZpbGUuY3BwCShyZXZpc2lvbiA3MDUyMzEpCisrKysg YW1hcm9rL3NyYy9tZXRhZGF0YS9tcDQvbXA0ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKK0BAIC0x NTYsMTAgKzE1Niw3IEBACisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgaWYoIU1QNENsb3NlKGhh bmRsZSkpCistICAgIHsKKy0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2xvc2UgZmFpbGVkXG4i KTsKKy0gICAgfQorKyAgICBNUDRDbG9zZShoYW5kbGUpOworIAorICAgICBtcDRmaWxlID0gTVA0 UmVhZChuYW1lKCkpOworICAgICBpZihtcDRmaWxlID09IE1QNF9JTlZBTElEX0ZJTEVfSEFORExF KQorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3RhZ2xpYl93bWFmaWxldHlwZXJlc29s dmVyLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS90YWdsaWJfd21h ZmlsZXR5cGVyZXNvbHZlci5oCShyZXZpc2lvbiA3MDUyMzEpCisrKysgYW1hcm9rL3NyYy9tZXRh ZGF0YS93bWEvdGFnbGliX3dtYWZpbGV0eXBlcmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQorQEAg LTEsMzkgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gICAgY29weXJpZ2h0ICAgICAg ICAgICAgOiAoQykgMjAwNSBieSBNYXJ0aW4gQXVtdWVsbGVyCistICAgIGVtYWlsICAgICAgICAg ICAgICAgIDogYXVtdWVsbEByZXNlcnYuYXQKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBpdCAgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAgKgorLSAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0ICAgKgorLSAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VICAgICAq CistICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgICAgICAqCistICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAgICAgICoKKy0g KiAgIE1BICAwMjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vLyAoYykgMjAw NSBNYXJ0aW4gQXVtdWVsbGVyIDxhdW11ZWxsQHJlc2Vydi5hdD4KKy0vLyBTZWUgQ09QWUlORyBm aWxlIGZvciBsaWNlbnNpbmcgaW5mb3JtYXRpb24KKy0KKy0jaWZuZGVmIFRBR0xJQl9XTUFGSUxF VFlQRVJFU09MVkVSX0gKKy0jZGVmaW5lIFRBR0xJQl9XTUFGSUxFVFlQRVJFU09MVkVSX0gKKy0K Ky0jaW5jbHVkZSA8dGFnbGliL3RmaWxlLmg+CistI2luY2x1ZGUgPHRhZ2xpYi9maWxlcmVmLmg+ CistCistCistY2xhc3MgV01BRmlsZVR5cGVSZXNvbHZlciA6IHB1YmxpYyBUYWdMaWI6OkZpbGVS ZWY6OkZpbGVUeXBlUmVzb2x2ZXIKKy17CistICAgIFRhZ0xpYjo6RmlsZSAqY3JlYXRlRmlsZShj b25zdCBjaGFyICpmaWxlTmFtZSwKKy0gICAgICAgICAgICBib29sIHJlYWRBdWRpb1Byb3BlcnRp ZXMsCistICAgICAgICAgICAgVGFnTGliOjpBdWRpb1Byb3BlcnRpZXM6OlJlYWRTdHlsZSBhdWRp b1Byb3BlcnRpZXNTdHlsZSkgY29uc3Q7CistfTsKKy0KKy0jZW5kaWYKK0luZGV4OiBhbWFyb2sv c3JjL21ldGFkYXRhL3dtYS93bWF0YWcuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9t ZXRhZGF0YS93bWEvd21hdGFnLmNwcAkocmV2aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMv bWV0YWRhdGEvd21hL3dtYXRhZy5jcHAJKHdvcmtpbmcgY29weSkKK0BAIC0xLDIxMCArMCwwIEBA CistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorLSAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChDKSAy MDA1IGJ5IEx1a2FzIExhbGluc2t5CistICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5z a3lAZ21haWwuY29tCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCistICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKy0gKiAgIDIu MSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAg ICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoK Ky0gKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgICAgICAgICAgICAqCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAqICAgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgorLSAq ICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAgICAgICAqCistICogICBNQSAgMDIxMTAt MTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistI2luY2x1ZGUgPHdtYXRhZy5oPgorLQor LXVzaW5nIG5hbWVzcGFjZSBUYWdMaWI7CistCistY2xhc3MgV01BOjpUYWc6OlRhZ1ByaXZhdGUK Ky17CistcHVibGljOgorLSAgU3RyaW5nIHRpdGxlOworLSAgU3RyaW5nIGFydGlzdDsKKy0gIFN0 cmluZyBjb3B5cmlnaHQ7CistICBTdHJpbmcgY29tbWVudDsKKy0gIFN0cmluZyByYXRpbmc7Cist ICBBdHRyaWJ1dGVNYXAgYXR0cmlidXRlTWFwOworLX07CistCistV01BOjpUYWc6OlRhZygpCist OiBUYWdMaWI6OlRhZygpCisteworLSAgZCA9IG5ldyBUYWdQcml2YXRlOworLX0KKy0KKy1XTUE6 OlRhZzo6flRhZygpCisteworLSAgaWYoZCkKKy0gICAgZGVsZXRlIGQ7ICAKKy19CistCistU3Ry aW5nCistV01BOjpUYWc6OnRpdGxlKCkgY29uc3QKKy17CistICByZXR1cm4gZC0+dGl0bGU7ICAK Ky19CistCistU3RyaW5nCistV01BOjpUYWc6OmFydGlzdCgpIGNvbnN0CisteworLSAgcmV0dXJu IGQtPmFydGlzdDsgIAorLX0KKy0KKy1TdHJpbmcKKy1XTUE6OlRhZzo6YWxidW0oKSBjb25zdAor LXsKKy0gIGlmKGQtPmF0dHJpYnV0ZU1hcC5jb250YWlucygiV00vQWxidW1UaXRsZSIpKQorLSAg ICByZXR1cm4gZC0+YXR0cmlidXRlTWFwWyJXTS9BbGJ1bVRpdGxlIl0udG9TdHJpbmcoKTsKKy0g IHJldHVybiBTdHJpbmc6Om51bGw7CistfQorLQorLVN0cmluZworLVdNQTo6VGFnOjpjb3B5cmln aHQoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT5jb3B5cmlnaHQ7CistfQorLQorLVN0cmluZwor LVdNQTo6VGFnOjpjb21tZW50KCkgY29uc3QKKy17CistICByZXR1cm4gZC0+Y29tbWVudDsKKy19 CistCistU3RyaW5nCistV01BOjpUYWc6OnJhdGluZygpIGNvbnN0CisteworLSAgcmV0dXJuIGQt PnJhdGluZzsKKy19CistCistdW5zaWduZWQgaW50CistV01BOjpUYWc6OnllYXIoKSBjb25zdAor LXsKKy0gIGlmKGQtPmF0dHJpYnV0ZU1hcC5jb250YWlucygiV00vWWVhciIpKQorLSAgICByZXR1 cm4gZC0+YXR0cmlidXRlTWFwWyJXTS9ZZWFyIl0udG9JbnQoKTsKKy0gIHJldHVybiAwOworLX0K Ky0KKy11bnNpZ25lZCBpbnQKKy1XTUE6OlRhZzo6dHJhY2soKSBjb25zdAorLXsKKy0gIGlmKGQt PmF0dHJpYnV0ZU1hcC5jb250YWlucygiV00vVHJhY2tOdW1iZXIiKSkKKy0gICAgcmV0dXJuIGQt PmF0dHJpYnV0ZU1hcFsiV00vVHJhY2tOdW1iZXIiXS50b0ludCgpOworLSAgaWYoZC0+YXR0cmli dXRlTWFwLmNvbnRhaW5zKCJXTS9UcmFjayIpKQorLSAgICByZXR1cm4gZC0+YXR0cmlidXRlTWFw WyJXTS9UcmFjayJdLnRvSW50KCk7CistICByZXR1cm4gMDsKKy19CistCistU3RyaW5nCistV01B OjpUYWc6OmdlbnJlKCkgY29uc3QKKy17CistICBpZihkLT5hdHRyaWJ1dGVNYXAuY29udGFpbnMo IldNL0dlbnJlIikpCistICAgIHJldHVybiBkLT5hdHRyaWJ1dGVNYXBbIldNL0dlbnJlIl0udG9T dHJpbmcoKTsKKy0gIHJldHVybiBTdHJpbmc6Om51bGw7CistfQorLQorLXZvaWQgCistV01BOjpU YWc6OnNldFRpdGxlKGNvbnN0IFN0cmluZyAmdmFsdWUpCisteworLSAgZC0+dGl0bGUgPSB2YWx1 ZTsKKy19CistCistdm9pZCAKKy1XTUE6OlRhZzo6c2V0QXJ0aXN0KGNvbnN0IFN0cmluZyAmdmFs dWUpCisteworLSAgZC0+YXJ0aXN0ID0gdmFsdWU7ICAKKy19CistCistdm9pZCAKKy1XTUE6OlRh Zzo6c2V0Q29weXJpZ2h0KGNvbnN0IFN0cmluZyAmdmFsdWUpCisteworLSAgZC0+Y29weXJpZ2h0 ID0gdmFsdWU7ICAKKy19CistCistdm9pZCAKKy1XTUE6OlRhZzo6c2V0Q29tbWVudChjb25zdCBT dHJpbmcgJnZhbHVlKQorLXsKKy0gIGQtPmNvbW1lbnQgPSB2YWx1ZTsKKy19CistCistdm9pZCAK Ky1XTUE6OlRhZzo6c2V0UmF0aW5nKGNvbnN0IFN0cmluZyAmdmFsdWUpCisteworLSAgZC0+cmF0 aW5nID0gdmFsdWU7CistfQorLQorLXZvaWQgCistV01BOjpUYWc6OnNldEFsYnVtKGNvbnN0IFN0 cmluZyAmdmFsdWUpCisteworLSAgc2V0QXR0cmlidXRlKCJXTS9BbGJ1bVRpdGxlIiwgdmFsdWUp OworLX0KKy0KKy12b2lkIAorLVdNQTo6VGFnOjpzZXRHZW5yZShjb25zdCBTdHJpbmcgJnZhbHVl KQorLXsKKy0gIHNldEF0dHJpYnV0ZSgiV00vR2VucmUiLCB2YWx1ZSk7CistfQorLQorLXZvaWQg CistV01BOjpUYWc6OnNldFllYXIodWludCB2YWx1ZSkKKy17CistICBzZXRBdHRyaWJ1dGUoIldN L1llYXIiLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworLX0KKy0KKy12b2lkIAorLVdNQTo6VGFn OjpzZXRUcmFjayh1aW50IHZhbHVlKQorLXsKKy0gIHNldEF0dHJpYnV0ZSgiV00vVHJhY2tOdW1i ZXIiLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworLX0KKy0KKy1jb25zdCBXTUE6OkF0dHJpYnV0 ZU1hcCYgV01BOjpUYWc6OmF0dHJpYnV0ZU1hcCgpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPmF0 dHJpYnV0ZU1hcDsKKy19CistCistdm9pZCBXTUE6OlRhZzo6cmVtb3ZlSXRlbShjb25zdCBCeXRl VmVjdG9yICZrZXkpCisteworLSAgQXR0cmlidXRlTWFwOjpJdGVyYXRvciBpdCA9IGQtPmF0dHJp YnV0ZU1hcC5maW5kKGtleSk7CistICBpZihpdCAhPSBkLT5hdHRyaWJ1dGVNYXAuZW5kKCkpCist ICAgIGQtPmF0dHJpYnV0ZU1hcC5lcmFzZShpdCk7CistfSAKKy0KKy12b2lkIFdNQTo6VGFnOjpz ZXRBdHRyaWJ1dGUoY29uc3QgQnl0ZVZlY3RvciAma2V5LCBjb25zdCBTdHJpbmcgJnZhbHVlKQor LXsKKy0gIHNldEF0dHJpYnV0ZShrZXksIFdNQTo6QXR0cmlidXRlKGtleSwgdmFsdWUpKTsKKy19 CistCistdm9pZCBXTUE6OlRhZzo6c2V0QXR0cmlidXRlKGNvbnN0IEJ5dGVWZWN0b3IgJmtleSwg Y29uc3QgQXR0cmlidXRlICZhdHRyaWJ1dGUpCisteworLSAgcmVtb3ZlSXRlbShrZXkpOworLSAg ZC0+YXR0cmlidXRlTWFwLmluc2VydChrZXksIGF0dHJpYnV0ZSk7CistfQorLQorLWJvb2wgV01B OjpUYWc6OmlzRW1wdHkoKSBjb25zdCB7CistICByZXR1cm4gVGFnTGliOjpUYWc6OmlzRW1wdHko KSAmJgorLSAgICAgICAgIGNvcHlyaWdodCgpLmlzRW1wdHkoKSAmJgorLSAgICAgICAgIHJhdGlu ZygpLmlzRW1wdHkoKSAmJgorLSAgICAgICAgIGQtPmF0dHJpYnV0ZU1hcC5pc0VtcHR5KCk7Cist fQorLQorLXZvaWQgV01BOjpUYWc6OmR1cGxpY2F0ZShjb25zdCBUYWcgKnNvdXJjZSwgVGFnICp0 YXJnZXQsIGJvb2wgb3ZlcndyaXRlKSB7CistICBUYWdMaWI6OlRhZzo6ZHVwbGljYXRlKHNvdXJj ZSwgdGFyZ2V0LCBvdmVyd3JpdGUpOworLSAgaWYob3ZlcndyaXRlKSB7CistICAgIHRhcmdldC0+ c2V0Q29weXJpZ2h0KHNvdXJjZS0+Y29weXJpZ2h0KCkpOworLSAgICB0YXJnZXQtPnNldFJhdGlu Zyhzb3VyY2UtPnJhdGluZygpKTsKKy0gIH0KKy0gIGVsc2UgeworLSAgICBpZiAodGFyZ2V0LT5j b3B5cmlnaHQoKS5pc0VtcHR5KCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0gICAgICB0YXJnZXQtPnNldENvcHlyaWdodChzb3VyY2UtPmNvcHlyaWdodCgp KTsKKy0gICAgaWYgKHRhcmdldC0+cmF0aW5nKCkuaXNFbXB0eSgpKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistICAgICAgdGFyZ2V0LT5zZXRSYXRpbmcoc291 cmNlLT5yYXRpbmcoKSk7CistICB9CistfQorLQorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEv d21hL3dtYXByb3BlcnRpZXMuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0 YS93bWEvd21hcHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3Jj L21ldGFkYXRhL3dtYS93bWFwcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQorQEAgLTEsODMg KzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gICAgY29weXJpZ2h0ICAgICAgICAgICAg OiAoQykgMjAwNSBieSBMdWthcyBMYWxpbnNreQorLSAgICBlbWFpbCAgICAgICAgICAgICAgICA6 IGxhbGluc2t5QGdtYWlsLmNvbQorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKy0gKiAgIGl0ICB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAqCist ICogICAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAg ICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQgICAqCistICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKy0gKiAg IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAg ICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAg ICoKKy0gKiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUgICAqCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sICAgICAgICAgICAgKgorLSAqICAgTUEg IDAyMTEwLTEzMDEgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNpbmNsdWRlIDx0c3RyaW5n Lmg+CistI2luY2x1ZGUgPHdtYXByb3BlcnRpZXMuaD4KKy0gIAorLXVzaW5nIG5hbWVzcGFjZSBU YWdMaWI7CistCistY2xhc3MgV01BOjpQcm9wZXJ0aWVzOjpQcm9wZXJ0aWVzUHJpdmF0ZQorLXsK Ky1wdWJsaWM6CistICBQcm9wZXJ0aWVzUHJpdmF0ZSgpOiBsZW5ndGgoMCksIGJpdHJhdGUoMCks IHNhbXBsZVJhdGUoMCksIGNoYW5uZWxzKDApIHt9CistICBpbnQgbGVuZ3RoOworLSAgaW50IGJp dHJhdGU7CistICBpbnQgc2FtcGxlUmF0ZTsKKy0gIGludCBjaGFubmVsczsKKy19OworLQorLS8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCistLy8gcHVibGljIG1lbWJlcnMKKy0vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworLQorLVdNQTo6UHJvcGVydGllczo6UHJvcGVydGllcygpIDogQXVkaW9Qcm9w ZXJ0aWVzKEF1ZGlvUHJvcGVydGllczo6QXZlcmFnZSkKKy17CistICBkID0gbmV3IFByb3BlcnRp ZXNQcml2YXRlOworLX0KKy0KKy1XTUE6OlByb3BlcnRpZXM6On5Qcm9wZXJ0aWVzKCkKKy17Cist ICBpZihkKQorLSAgICBkZWxldGUgZDsgIAorLX0KKy0KKy1pbnQgV01BOjpQcm9wZXJ0aWVzOjps ZW5ndGgoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT5sZW5ndGg7CistfQorLQorLWludCBXTUE6 OlByb3BlcnRpZXM6OmJpdHJhdGUoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT5iaXRyYXRlOwor LX0KKy0KKy1pbnQgV01BOjpQcm9wZXJ0aWVzOjpzYW1wbGVSYXRlKCkgY29uc3QKKy17CistICBy ZXR1cm4gZC0+c2FtcGxlUmF0ZTsKKy19CistCistaW50IFdNQTo6UHJvcGVydGllczo6Y2hhbm5l bHMoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT5jaGFubmVsczsKKy19IAorLQorLS8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCistLy8gcHJpdmF0ZSBtZW1iZXJzCistLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KKy0KKy12b2lkIFdNQTo6UHJvcGVydGllczo6c2V0KGludCBsZW5ndGgsIGludCBiaXRy YXRlLCBpbnQgc2FtcGxlUmF0ZSwgaW50IGNoYW5uZWxzKQorLXsKKy0gIGQtPmxlbmd0aCA9IGxl bmd0aDsKKy0gIGQtPmJpdHJhdGUgPSBiaXRyYXRlOworLSAgZC0+c2FtcGxlUmF0ZSA9IHNhbXBs ZVJhdGU7CistICBkLT5jaGFubmVscyA9IGNoYW5uZWxzOworLX0KKy0KK0luZGV4OiBhbWFyb2sv c3JjL21ldGFkYXRhL3dtYS93bWFmaWxlLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMv bWV0YWRhdGEvd21hL3dtYWZpbGUuY3BwCShyZXZpc2lvbiA3MDUyMzEpCisrKysgYW1hcm9rL3Ny Yy9tZXRhZGF0YS93bWEvd21hZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKK0BAIC0xLDM4OCArMCww IEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorLSAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChD KSAyMDA1IGJ5IEx1a2FzIExhbGluc2t5CistICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFs aW5za3lAZ21haWwuY29tCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCistICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKy0gKiAg IDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAg ICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAg ICoKKy0gKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgICAgICAgICAgICAqCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAqICAgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAg ICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgor LSAqICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAgICAgICAqCistICogICBNQSAgMDIx MTAtMTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistI2luY2x1ZGUgPHRzdHJpbmcuaD4K Ky0jaW5jbHVkZSA8d21hZmlsZS5oPgorLSNpbmNsdWRlIDx3bWF0YWcuaD4KKy0jaW5jbHVkZSA8 d21hcHJvcGVydGllcy5oPgorLQorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0KKy11c2luZyBuYW1l c3BhY2UgVGFnTGliOworLQorLWNsYXNzIFdNQTo6RmlsZTo6RmlsZVByaXZhdGUKKy17CistcHVi bGljOgorLSAgRmlsZVByaXZhdGUoKTogc2l6ZSgwKSwgb2Zmc2V0MSgwKSwgb2Zmc2V0MigwKSwg c2l6ZTEoMCksIHNpemUyKDApLAorLSAgICBudW1PYmplY3RzKDApLCB0YWcoMCksIHByb3BlcnRp ZXMoMCkge30KKy0gIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOworLSAgdW5zaWduZWQgbG9uZyBv ZmZzZXQxLCBvZmZzZXQyLCBzaXplMSwgc2l6ZTIsIG51bU9iamVjdHM7CistICBXTUE6OlRhZyAq dGFnOyAKKy0gIFdNQTo6UHJvcGVydGllcyAqcHJvcGVydGllczsgCistfTsKKy0KKy0vLyBHVUlE cworLQorLXN0cnVjdCBXTUE6OkdVSUQgCisteworLSAgV01BOjpEV09SRCB2MTsKKy0gIFdNQTo6 V09SRCB2MjsKKy0gIFdNQTo6V09SRCB2MzsKKy0gIFdNQTo6QllURSB2NFs4XTsKKy0gIGJvb2wg b3BlcmF0b3I9PShjb25zdCBHVUlEICZnKSBjb25zdCB7IHJldHVybiBtZW1jbXAodGhpcywgJmcs IHNpemVvZihXTUE6OkdVSUQpKSA9PSAwOyB9CistICBib29sIG9wZXJhdG9yIT0oY29uc3QgR1VJ RCAmZykgY29uc3QgeyByZXR1cm4gbWVtY21wKHRoaXMsICZnLCBzaXplb2YoV01BOjpHVUlEKSkg IT0gMDsgfQorLSAgc3RhdGljIEdVSUQgaGVhZGVyOworLSAgc3RhdGljIEdVSUQgZmlsZVByb3Bl cnRpZXM7CistICBzdGF0aWMgR1VJRCBzdHJlYW1Qcm9wZXJ0aWVzOworLSAgc3RhdGljIEdVSUQg Y29udGVudERlc2NyaXB0aW9uOworLSAgc3RhdGljIEdVSUQgZXh0ZW5kZWRDb250ZW50RGVzY3Jp cHRpb247CistICBzdGF0aWMgR1VJRCBhdWRpb01lZGlhOworLX07IAorLQorLVdNQTo6R1VJRCBX TUE6OkdVSUQ6OmhlYWRlciA9IHsKKy0gIDB4NzVCMjI2MzAsIDB4NjY4RSwgMHgxMUNGLCB7IDB4 QTYsIDB4RDksIDB4MDAsIDB4QUEsIDB4MDAsIDB4NjIsIDB4Q0UsIDB4NkMgfQorLX07IAorLQor LVdNQTo6R1VJRCBXTUE6OkdVSUQ6OmZpbGVQcm9wZXJ0aWVzID0geworLSAgMHg4Q0FCRENBMSwg MHhBOTQ3LCAweDExQ0YsIHsgMHg4RSwgMHhFNCwgMHgwMCwgMHhDMCwgMHgwQywgMHgyMCwgMHg1 MywgMHg2NSB9LAorLX07IAorLQorLVdNQTo6R1VJRCBXTUE6OkdVSUQ6OnN0cmVhbVByb3BlcnRp ZXMgPSB7CistICAweEI3REMwNzkxLCAweEE5QjcsIDB4MTFDRiwgeyAweDhFLCAweEU2LCAweDAw LCAweEMwLCAweDBDLCAweDIwLCAweDUzLCAweDY1IH0sCistfTsKKy0KKy1XTUE6OkdVSUQgV01B OjpHVUlEOjpjb250ZW50RGVzY3JpcHRpb24gPSB7CistICAweDc1YjIyNjMzLCAweDY2OGUsIDB4 MTFjZiwgeyAweGE2LCAweGQ5LCAweDAwLCAweGFhLCAweDAwLCAweDYyLCAweGNlLCAweDZjIH0s CistfTsgCistCistV01BOjpHVUlEIFdNQTo6R1VJRDo6ZXh0ZW5kZWRDb250ZW50RGVzY3JpcHRp b24gPSB7CistICAweEQyRDBBNDQwLCAweEUzMDcsIDB4MTFEMiwgeyAweDk3LCAweEYwLCAweDAw LCAweEEwLCAweEM5LCAweDVFLCAweEE4LCAweDUwIH0sCistfTsgCistCistV01BOjpHVUlEIFdN QTo6R1VJRDo6YXVkaW9NZWRpYSA9IHsKKy0gIDB4Rjg2OTlFNDAsIDB4NUI0RCwgMHgxMUNGLCB7 IDB4QTgsIDB4RkQsIDB4MDAsIDB4ODAsIDB4NUYsIDB4NUMsIDB4NDQsIDB4MkIgfSwKKy19OyAK Ky0KKy0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLS8vIHB1YmxpYyBtZW1iZXJzCistLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy0KKy1XTUE6OkZpbGU6OkZpbGUoY29uc3QgY2hhciAqZmlsZSwg Ym9vbCByZWFkUHJvcGVydGllcywgUHJvcGVydGllczo6UmVhZFN0eWxlIHByb3BlcnRpZXNTdHls ZSkgCistICA6IFRhZ0xpYjo6RmlsZShmaWxlKQorLXsKKy0gIGQgPSBuZXcgRmlsZVByaXZhdGU7 CistICByZWFkKHJlYWRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzU3R5bGUpOworLX0KKy0KKy1XTUE6 OkZpbGU6On5GaWxlKCkKKy17CistICBpZihkKSB7CistICAgIGlmIChkLT50YWcpIAorLSAgICAg IGRlbGV0ZSBkLT50YWc7CistICAgIGlmIChkLT5wcm9wZXJ0aWVzKSAKKy0gICAgICBkZWxldGUg ZC0+cHJvcGVydGllczsKKy0gICAgZGVsZXRlIGQ7ICAgCistICB9CistfQorLQorLVRhZ0xpYjo6 VGFnICpXTUE6OkZpbGU6OnRhZygpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPnRhZzsKKy19IAor LQorLVdNQTo6VGFnICpXTUE6OkZpbGU6OldNQVRhZygpIGNvbnN0CisteworLSAgcmV0dXJuIGQt PnRhZzsKKy19IAorLQorLVdNQTo6UHJvcGVydGllcyAqV01BOjpGaWxlOjphdWRpb1Byb3BlcnRp ZXMoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT5wcm9wZXJ0aWVzOworLX0gCistCistdm9pZCBX TUE6OkZpbGU6OnJlYWQoYm9vbCByZWFkUHJvcGVydGllcywgUHJvcGVydGllczo6UmVhZFN0eWxl IC8qIHByb3BlcnRpZXNTdHlsZSAqLykKKy17CistICBXTUE6OkdVSUQgZ3VpZDsKKy0KKy0gIHJl YWRHVUlEKGd1aWQpOworLSAgaWYoZ3VpZCAhPSBHVUlEOjpoZWFkZXIpIHsKKy0gICAgcmV0dXJu OworLSAgfQorLQorLSAgaW50IGxlbmd0aCA9IDA7CistICBpbnQgYml0cmF0ZSA9IDA7CistICBp bnQgc2FtcGxlUmF0ZSA9IDA7CistICBpbnQgY2hhbm5lbHMgPSAwOworLSAgCistICBkLT50YWcg PSBuZXcgV01BOjpUYWcoKTsKKy0gIGlmKCFkLT50YWcpCistICAgIHJldHVybjsKKy0gIAorLSAg ZC0+c2l6ZSA9IHJlYWRRV09SRCgpOworLSAgZC0+bnVtT2JqZWN0cyA9IHJlYWREV09SRCgpOyAK Ky0gIHNlZWsoMiwgQ3VycmVudCk7CistICAgIAorLSAgZm9yKGludCBpID0gMDsgaSA8IChpbnQp ZC0+bnVtT2JqZWN0czsgaSsrKSB7CistCistICAgIHJlYWRHVUlEKGd1aWQpOworLSAgICBsb25n IG9iamVjdFNpemUgPSAobG9uZylyZWFkUVdPUkQoKTsKKy0gICAgICAKKy0gICAgaWYocmVhZFBy b3BlcnRpZXMgJiYgZ3VpZCA9PSBHVUlEOjpmaWxlUHJvcGVydGllcykgeworLQorLSAgICAgIHNl ZWsoMTYrOCs4KzgsIEN1cnJlbnQpOworLSAgICAgIGxlbmd0aCA9IChpbnQpKHJlYWRRV09SRCgp IC8gMTAwMDAwMDBMKTsKKy0gICAgICBzZWVrKDgrOCs0KzQrNCs0LCBDdXJyZW50KTsKKy0gICAg ICAKKy0gICAgfQorLQorLSAgICBlbHNlIGlmKHJlYWRQcm9wZXJ0aWVzICYmIGd1aWQgPT0gR1VJ RDo6c3RyZWFtUHJvcGVydGllcykgeworLSAgICAgIAorLSAgICAgIGxvbmcgcG9zID0gdGVsbCgp OworLSAgICAgICAgCistICAgICAgcmVhZEdVSUQoZ3VpZCk7CistICAgICAgaWYoZ3VpZCAhPSBH VUlEOjphdWRpb01lZGlhKSB7CistICAgICAgICByZXR1cm47IAorLSAgICAgIH0KKy0gICAgICAg IAorLSAgICAgIHNlZWsoMTYrOCs0KzQrMis0KzIsIEN1cnJlbnQpOworLSAgICAgIGNoYW5uZWxz ID0gcmVhZFdPUkQoKTsKKy0gICAgICBzYW1wbGVSYXRlID0gcmVhZERXT1JEKCk7CistICAgICAg Yml0cmF0ZSA9IHJlYWREV09SRCgpICogOCAvIDEwMDA7CistICAgICAgICAKKy0gICAgICBzZWVr KHBvcyArIChsb25nKW9iamVjdFNpemUgLSAyNCk7CistICAgIH0KKy0gICAgICAKKy0gICAgZWxz ZSBpZihndWlkID09IEdVSUQ6OmV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uKSB7CistCistICAg ICAgZC0+b2Zmc2V0MiA9IHRlbGwoKSAtIDE2IC0gODsKKy0gICAgICBkLT5zaXplMiA9IChsb25n KW9iamVjdFNpemU7CistCistICAgICAgaW50IG51bURlc2NyaXB0b3JzID0gcmVhZFdPUkQoKTsK Ky0gICAgICAgIAorLSAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBudW1EZXNjcmlwdG9yczsgaisr KSB7CistICAgICAgICBXTUE6OkF0dHJpYnV0ZSBhdHRyKCp0aGlzKTsKKy0gICAgICAgIGQtPnRh Zy0+c2V0QXR0cmlidXRlKGF0dHIubmFtZSgpLnRvQ1N0cmluZyhmYWxzZSksIGF0dHIpOworLSAg ICAgIH0KKy0gICAgICAKKy0gICAgfQorLSAgICAgIAorLSAgICBlbHNlIGlmKGd1aWQgPT0gR1VJ RDo6Y29udGVudERlc2NyaXB0aW9uKSB7CistCistICAgICAgZC0+b2Zmc2V0MSA9IHRlbGwoKSAt IDE2IC0gODsKKy0gICAgICBkLT5zaXplMSA9IChsb25nKW9iamVjdFNpemU7CistCistICAgICAg aW50IHRpdGxlTGVuZ3RoID0gcmVhZFdPUkQoKTsKKy0gICAgICBpbnQgYXJ0aXN0TGVuZ3RoID0g cmVhZFdPUkQoKTsKKy0gICAgICBpbnQgY29weXJpZ2h0TGVuZ3RoID0gcmVhZFdPUkQoKTsKKy0g ICAgICBpbnQgY29tbWVudExlbmd0aCA9IHJlYWRXT1JEKCk7CistICAgICAgaW50IHJhdGluZ0xl bmd0aCA9IHJlYWRXT1JEKCk7CistCistICAgICAgU3RyaW5nIHZhbHVlOworLSAgICAgIAorLSAg ICAgIHJlYWRTdHJpbmcodGl0bGVMZW5ndGgsIHZhbHVlKTsKKy0gICAgICBkLT50YWctPnNldFRp dGxlKHZhbHVlKTsKKy0gICAgICAKKy0gICAgICByZWFkU3RyaW5nKGFydGlzdExlbmd0aCwgdmFs dWUpOworLSAgICAgIGQtPnRhZy0+c2V0QXJ0aXN0KHZhbHVlKTsKKy0gICAgICAKKy0gICAgICBy ZWFkU3RyaW5nKGNvcHlyaWdodExlbmd0aCwgdmFsdWUpOworLSAgICAgIGQtPnRhZy0+c2V0Q29w eXJpZ2h0KHZhbHVlKTsKKy0gICAgICAKKy0gICAgICByZWFkU3RyaW5nKGNvbW1lbnRMZW5ndGgs IHZhbHVlKTsKKy0gICAgICBkLT50YWctPnNldENvbW1lbnQodmFsdWUpOworLSAgICAgIAorLSAg ICAgIHJlYWRTdHJpbmcocmF0aW5nTGVuZ3RoLCB2YWx1ZSk7CistICAgICAgZC0+dGFnLT5zZXRS YXRpbmcodmFsdWUpOworLSAgICB9CistICAgICAgCistICAgIGVsc2UgeworLSAgICAgIHNlZWso KGxvbmcpb2JqZWN0U2l6ZSAtIDI0LCBDdXJyZW50KTsKKy0gICAgfQorLSAgICAKKy0gIH0KKy0g IAorLSAgaWYocmVhZFByb3BlcnRpZXMpIHsKKy0gICAgZC0+cHJvcGVydGllcyA9IG5ldyBXTUE6 OlByb3BlcnRpZXMoKTsKKy0gICAgaWYoZC0+cHJvcGVydGllcykgCistICAgICAgZC0+cHJvcGVy dGllcy0+c2V0KGxlbmd0aCwgYml0cmF0ZSwgc2FtcGxlUmF0ZSwgY2hhbm5lbHMpOworLSAgfQor LSAgCistfQorLQorLWJvb2wgV01BOjpGaWxlOjpzYXZlKCkKKy17CistICBpZihyZWFkT25seSgp KSB7CistICAgIHJldHVybiBmYWxzZTsKKy0gIH0KKy0KKy0gIGlmKGQtPm9mZnNldDEgPT0gMCkg eworLSAgICBkLT5vZmZzZXQxID0gMTYgKyA4ICsgNCArIDI7CistICAgIGQtPm51bU9iamVjdHMr KzsKKy0gIH0KKy0KKy0gIGlmKGQtPm9mZnNldDIgPT0gMCkgeworLSAgICBkLT5vZmZzZXQyID0g MTYgKyA4ICsgNCArIDI7CistICAgIGQtPm51bU9iamVjdHMrKzsKKy0gIH0KKy0KKy0gIEJ5dGVW ZWN0b3IgY2h1bmsxID0gcmVuZGVyQ29udGVudERlc2NyaXB0aW9uKCk7CistICBCeXRlVmVjdG9y IGNodW5rMiA9IHJlbmRlckV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uKCk7CistCistICBpZihk LT5vZmZzZXQxID4gZC0+b2Zmc2V0MikgeworLSAgICBpbnNlcnQoY2h1bmsxLCBkLT5vZmZzZXQx LCBkLT5zaXplMSk7CistICAgIGluc2VydChjaHVuazIsIGQtPm9mZnNldDIsIGQtPnNpemUyKTsK Ky0gIH0KKy0gIGVsc2UgeworLSAgICBpbnNlcnQoY2h1bmsyLCBkLT5vZmZzZXQyLCBkLT5zaXpl Mik7CistICAgIGluc2VydChjaHVuazEsIGQtPm9mZnNldDEsIGQtPnNpemUxKTsKKy0gIH0KKy0K Ky0gIGluc2VydChCeXRlVmVjdG9yOjpmcm9tTG9uZ0xvbmcoZC0+c2l6ZSArIAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShjaHVuazEuc2l6ZSgpIC0gZC0+c2l6ZTEp ICsgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGNodW5rMi5zaXpl KCkgLSBkLT5zaXplMiksIGZhbHNlKSArCistICAgICAgICAgQnl0ZVZlY3Rvcjo6ZnJvbVVJbnQo ZC0+bnVtT2JqZWN0cywgZmFsc2UpLCAxNiwgOCArIDQpOworLQorLSAgcmV0dXJuIHRydWU7Cist fQorLQorLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCistLy8gcHJvdGVjdGVkIG1lbWJlcnMKKy0v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLQorLWludCBXTUE6OkZpbGU6OnJlYWRCWVRFKCkKKy17 CistICBCeXRlVmVjdG9yIHYgPSByZWFkQmxvY2soMSk7CistICByZXR1cm4gdlswXTsKKy19Cist CistaW50IFdNQTo6RmlsZTo6cmVhZFdPUkQoKQorLXsKKy0gIEJ5dGVWZWN0b3IgdiA9IHJlYWRC bG9jaygyKTsKKy0gIHJldHVybiB2LnRvU2hvcnQoZmFsc2UpOworLX0KKy0KKy11bnNpZ25lZCBp bnQgV01BOjpGaWxlOjpyZWFkRFdPUkQoKQorLXsKKy0gIEJ5dGVWZWN0b3IgdiA9IHJlYWRCbG9j ayg0KTsKKy0gIHJldHVybiB2LnRvVUludChmYWxzZSk7CistfQorLQorLWxvbmcgbG9uZyBXTUE6 OkZpbGU6OnJlYWRRV09SRCgpCisteworLSAgQnl0ZVZlY3RvciB2ID0gcmVhZEJsb2NrKDgpOwor LSAgcmV0dXJuIHYudG9Mb25nTG9uZyhmYWxzZSk7CistfQorLQorLXZvaWQgV01BOjpGaWxlOjpy ZWFkR1VJRChHVUlEICZnKQorLXsKKy0gIGcudjEgPSByZWFkRFdPUkQoKTsKKy0gIGcudjIgPSBy ZWFkV09SRCgpOworLSAgZy52MyA9IHJlYWRXT1JEKCk7CistICBmb3IoaW50IGkgPSAwOyBpIDwg ODsgaSsrKQorLSAgICBnLnY0W2ldID0gcmVhZEJZVEUoKTsgCistfQorLQorLXZvaWQgV01BOjpG aWxlOjpyZWFkU3RyaW5nKGludCBsZW4sIFN0cmluZyAmcykKKy17CistICBCeXRlVmVjdG9yIHYg PSByZWFkQmxvY2sobGVuKTsKKy0gIGlmKGxlbiA8IDIgfHwgdltsZW4tMV0gIT0gMCB8fCB2W2xl bi0yXSAhPSAwKQorLSAgICB2LmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQoMCkpOworLSAg cyA9IFN0cmluZyh2LCBTdHJpbmc6OlVURjE2TEUpOworLX0KKy0KKy1CeXRlVmVjdG9yIFdNQTo6 RmlsZTo6cmVuZGVyQ29udGVudERlc2NyaXB0aW9uKCkKKy17CistICBTdHJpbmcgczsgICAgCist ICAgIAorLSAgcyA9IGQtPnRhZy0+dGl0bGUoKTsgIAorLSAgQnl0ZVZlY3RvciB2MSA9IHMuZGF0 YShTdHJpbmc6OlVURjE2TEUpOworLSAgaWYocy5zaXplKCkpIHsKKy0gICAgdjEuYXBwZW5kKChj aGFyKTApOworLSAgICB2MS5hcHBlbmQoKGNoYXIpMCk7CistICB9CistICAKKy0gIHMgPSBkLT50 YWctPmFydGlzdCgpOyAgCistICBCeXRlVmVjdG9yIHYyID0gcy5kYXRhKFN0cmluZzo6VVRGMTZM RSk7CistICBpZihzLnNpemUoKSkgeworLSAgICB2Mi5hcHBlbmQoKGNoYXIpMCk7CistICAgIHYy LmFwcGVuZCgoY2hhcikwKTsKKy0gIH0KKy0gIAorLSAgcyA9IGQtPnRhZy0+Y29weXJpZ2h0KCk7 ICAKKy0gIEJ5dGVWZWN0b3IgdjMgPSBzLmRhdGEoU3RyaW5nOjpVVEYxNkxFKTsKKy0gIGlmKHMu c2l6ZSgpKSB7CistICAgIHYzLmFwcGVuZCgoY2hhcikwKTsKKy0gICAgdjMuYXBwZW5kKChjaGFy KTApOworLSAgfSAKKy0gIAorLSAgcyA9IGQtPnRhZy0+Y29tbWVudCgpOyAgCistICBCeXRlVmVj dG9yIHY0ID0gcy5kYXRhKFN0cmluZzo6VVRGMTZMRSk7CistICBpZihzLnNpemUoKSkgeworLSAg ICB2NC5hcHBlbmQoKGNoYXIpMCk7CistICAgIHY0LmFwcGVuZCgoY2hhcikwKTsKKy0gIH0KKy0g IAorLSAgcyA9IGQtPnRhZy0+cmF0aW5nKCk7ICAKKy0gIEJ5dGVWZWN0b3IgdjUgPSBzLmRhdGEo U3RyaW5nOjpVVEYxNkxFKTsKKy0gIGlmKHMuc2l6ZSgpKSB7CistICAgIHY1LmFwcGVuZCgoY2hh cikwKTsKKy0gICAgdjUuYXBwZW5kKChjaGFyKTApOworLSAgfQorLQorLSAgQnl0ZVZlY3RvciBk YXRhOworLQorLSAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHYxLnNpemUoKSwg ZmFsc2UpKTsKKy0gIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2Mi5zaXplKCks IGZhbHNlKSk7CistICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQodjMuc2l6ZSgp LCBmYWxzZSkpOworLSAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHY0LnNpemUo KSwgZmFsc2UpKTsKKy0gIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCh2NS5zaXpl KCksIGZhbHNlKSk7CistCistICBkYXRhLmFwcGVuZCh2MSk7CistICBkYXRhLmFwcGVuZCh2Mik7 CistICBkYXRhLmFwcGVuZCh2Myk7CistICBkYXRhLmFwcGVuZCh2NCk7CistICBkYXRhLmFwcGVu ZCh2NSk7CistCistICBkYXRhID0gQnl0ZVZlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo YXIgKj4oJkdVSUQ6OmNvbnRlbnREZXNjcmlwdGlvbiksIHNpemVvZihHVUlEKSkKKy0gICAgKyBC eXRlVmVjdG9yOjpmcm9tTG9uZ0xvbmcoZGF0YS5zaXplKCkgKyAxNiArIDgsIGZhbHNlKQorLSAg ICArIGRhdGE7CistCistICByZXR1cm4gZGF0YTsKKy19CistCistQnl0ZVZlY3RvciBXTUE6OkZp bGU6OnJlbmRlckV4dGVuZGVkQ29udGVudERlc2NyaXB0aW9uKCkKKy17CistICBCeXRlVmVjdG9y IGRhdGE7CistCistICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQoZC0+dGFnLT5h dHRyaWJ1dGVNYXAoKS5zaXplKCksIGZhbHNlKSk7CistICAKKy0gIFdNQTo6QXR0cmlidXRlTWFw OjpDb25zdEl0ZXJhdG9yIGl0ID0gZC0+dGFnLT5hdHRyaWJ1dGVNYXAoKS5iZWdpbigpOworLSAg Zm9yKDsgaXQgIT0gZC0+dGFnLT5hdHRyaWJ1dGVNYXAoKS5lbmQoKTsgaXQrKykgCistICAgIGRh dGEuYXBwZW5kKGl0LT5zZWNvbmQucmVuZGVyKCkpOworLSAgCistICBkYXRhID0gQnl0ZVZlY3Rv cihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oJkdVSUQ6OmV4dGVuZGVkQ29udGVudERl c2NyaXB0aW9uKSwgc2l6ZW9mKEdVSUQpKQorLSAgICArIEJ5dGVWZWN0b3I6OmZyb21Mb25nTG9u ZyhkYXRhLnNpemUoKSArIDE2ICsgOCwgZmFsc2UpCistICAgICsgZGF0YTsKKy0KKy0gIHJldHVy biBkYXRhOworLX0KKy0KKy0KK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS93bWF0YWcu aAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYXRhZy5oCShyZXZp c2lvbiA3MDUyMzEpCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hdGFnLmgJKHdvcmtp bmcgY29weSkKK0BAIC0xLDE4OCArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAgICBj b3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1IGJ5IEx1a2FzIExhbGluc2t5CistICAgIGVt YWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21haWwuY29tCistICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogICBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorLSAq ICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gICoKKy0gKiAgIDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoKKy0gKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAqCistICogICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVSAgICAgKgorLSAqICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljICAgICAgKgorLSAqICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAg ICAgICAgICAqCistICogICBNQSAgMDIxMTAtMTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCist CistI2lmbmRlZiBUQUdMSUJfV01BVEFHX0gKKy0jZGVmaW5lIFRBR0xJQl9XTUFUQUdfSAorLQor LSNpbmNsdWRlIDx0bWFwLmg+CistI2luY2x1ZGUgPHRhZy5oPgorLSNpbmNsdWRlICJ3bWFmaWxl LmgiCistI2luY2x1ZGUgIndtYWF0dHJpYnV0ZS5oIgorLQorLW5hbWVzcGFjZSBUYWdMaWIgewor LQorLSAgbmFtZXNwYWNlIFdNQSB7CistICAKKy0gICAgdHlwZWRlZiBNYXA8Y29uc3QgQnl0ZVZl Y3RvciwgQXR0cmlidXRlPiBBdHRyaWJ1dGVNYXA7CistICAgICAgCistICAgIGNsYXNzIFRhZyA6 IHB1YmxpYyBUYWdMaWI6OlRhZyB7CistICAgIAorLSAgICAgIGZyaWVuZCBjbGFzcyBGaWxlOwor LSAgICAgIAorLSAgICBwdWJsaWM6CistICAgIAorLSAgICAgIFRhZygpOworLQorLSAgICAgIHZp cnR1YWwgflRhZygpOworLQorLSAgICAgIC8qIQorLSAgICAgICAqIFJldHVybnMgdGhlIHRyYWNr IG5hbWUuCistICAgICAgICovCistICAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsK Ky0KKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSBhcnRpc3QgbmFtZS4KKy0gICAg ICAgKi8KKy0gICAgICB2aXJ0dWFsIFN0cmluZyBhcnRpc3QoKSBjb25zdDsKKy0KKy0gICAgICAv KiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSBhbGJ1bSBuYW1lOyBpZiBubyBhbGJ1bSBuYW1lIGlz IHByZXNlbnQgaW4gdGhlIHRhZworLSAgICAgICAqIFN0cmluZzo6bnVsbCB3aWxsIGJlIHJldHVy bmVkLgorLSAgICAgICAqLworLSAgICAgIHZpcnR1YWwgU3RyaW5nIGFsYnVtKCkgY29uc3Q7Cist CistICAgICAgLyohCistICAgICAgICogUmV0dXJucyB0aGUgdHJhY2sgY29tbWVudC4KKy0gICAg ICAgKi8KKy0gICAgICB2aXJ0dWFsIFN0cmluZyBjb21tZW50KCkgY29uc3Q7CistCistICAgICAg LyohCistICAgICAgICogUmV0dXJucyB0aGUgZ2VucmUgbmFtZTsgaWYgbm8gZ2VucmUgaXMgcHJl c2VudCBpbiB0aGUgdGFnIFN0cmluZzo6bnVsbAorLSAgICAgICAqIHdpbGwgYmUgcmV0dXJuZWQu CistICAgICAgICovCistICAgICAgdmlydHVhbCBTdHJpbmcgZ2VucmUoKSBjb25zdDsKKy0KKy0g ICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSByYXRpbmcuCistICAgICAgICovCistICAg ICAgdmlydHVhbCBTdHJpbmcgcmF0aW5nKCkgY29uc3Q7CistCistICAgICAgLyohCistICAgICAg ICogUmV0dXJucyB0aGUgZ2VucmUgbmFtZTsgaWYgbm8gZ2VucmUgaXMgcHJlc2VudCBpbiB0aGUg dGFnIFN0cmluZzo6bnVsbAorLSAgICAgICAqIHdpbGwgYmUgcmV0dXJuZWQuCistICAgICAgICov CistICAgICAgdmlydHVhbCBTdHJpbmcgY29weXJpZ2h0KCkgY29uc3Q7CistCistICAgICAgLyoh CistICAgICAgICogUmV0dXJucyB0aGUgeWVhcjsgaWYgdGhlcmUgaXMgbm8geWVhciBzZXQsIHRo aXMgd2lsbCByZXR1cm4gMC4KKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIHVpbnQgeWVhcigp IGNvbnN0OworLQorLSAgICAgIC8qIQorLSAgICAgICAqIFJldHVybnMgdGhlIHRyYWNrIG51bWJl cjsgaWYgdGhlcmUgaXMgbm8gdHJhY2sgbnVtYmVyIHNldCwgdGhpcyB3aWxsCistICAgICAgICog cmV0dXJuIDAuCistICAgICAgICovCistICAgICAgdmlydHVhbCB1aW50IHRyYWNrKCkgY29uc3Q7 CistCistICAgICAgLyohCistICAgICAgICogU2V0cyB0aGUgdGl0bGUgdG8gXGEgcy4KKy0gICAg ICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nICZzKTsKKy0K Ky0gICAgICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSBhcnRpc3QgdG8gXGEgcy4KKy0gICAgICAg Ki8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0QXJ0aXN0KGNvbnN0IFN0cmluZyAmcyk7CistCist ICAgICAgLyohCistICAgICAgICogU2V0cyB0aGUgYWxidW0gdG8gXGEgcy4gIElmIFxhIHMgaXMg U3RyaW5nOjpudWxsIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlCistICAgICAgICogY2xlYXJlZC4K Ky0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0QWxidW0oY29uc3QgU3RyaW5nICZz KTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSBjb21tZW50IHRvIFxhIHMuCist ICAgICAgICovCistICAgICAgdmlydHVhbCB2b2lkIHNldENvbW1lbnQoY29uc3QgU3RyaW5nICZz KTsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBTZXRzIHRoZSByYXRpbmcgdG8gXGEgcy4gCist ICAgICAgICovCistICAgICAgdmlydHVhbCB2b2lkIHNldFJhdGluZyhjb25zdCBTdHJpbmcgJnMp OworLQorLSAgICAgIC8qIQorLSAgICAgICAqIFNldHMgdGhlIGNvcHlyaWdodCB0byBcYSBzLiAK Ky0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29weXJpZ2h0KGNvbnN0IFN0cmlu ZyAmcyk7CistCistICAgICAgLyohCistICAgICAgICogU2V0cyB0aGUgZ2VucmUgdG8gXGEgcy4g CistICAgICAgICovCistICAgICAgdmlydHVhbCB2b2lkIHNldEdlbnJlKGNvbnN0IFN0cmluZyAm cyk7CistCistICAgICAgLyohCistICAgICAgICogU2V0cyB0aGUgeWVhciB0byBcYSBpLiAgSWYg XGEgcyBpcyAwIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIGNsZWFyZWQuCistICAgICAgICovCist ICAgICAgdmlydHVhbCB2b2lkIHNldFllYXIodWludCBpKTsKKy0KKy0gICAgICAvKiEKKy0gICAg ICAgKiBTZXRzIHRoZSB0cmFjayB0byBcYSBpLiAgSWYgXGEgcyBpcyAwIHRoZW4gdGhpcyB2YWx1 ZSB3aWxsIGJlIGNsZWFyZWQuCistICAgICAgICovCistICAgICAgdmlydHVhbCB2b2lkIHNldFRy YWNrKHVpbnQgaSk7CistCistICAgICAgLyohCistICAgICAgICogUmV0dXJucyB0cnVlIGlmIHRo ZSB0YWcgZG9lcyBub3QgY29udGFpbiBhbnkgZGF0YS4gIFRoaXMgc2hvdWxkIGJlCistICAgICAg ICogcmVpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzIHRoYXQgcHJvdmlkZSBtb3JlIHRoYW4gdGhl IGJhc2ljIHRhZ2dpbmcKKy0gICAgICAgKiBhYmlsaXRpZXMgaW4gdGhpcyBjbGFzcy4KKy0gICAg ICAgKi8KKy0gICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworLQorLSAgICAgIC8q IQorLSAgICAgICAqIENvcGllcyB0aGUgZ2VuZXJpYyBkYXRhIGZyb20gb25lIHRhZyB0byBhbm90 aGVyLgorLSAgICAgICAqCistICAgICAgICogSWYgXGEgb3ZlcndyaXRlIGlzIHRydWUgdGhlbiB0 aGUgdmFsdWVzIHdpbGwgYmUgdW5jb25kaXRpb25hbGx5IGNvcGllZC4KKy0gICAgICAgKiBJZiBm YWxzZSBvbmx5IGVtcHR5IHZhbHVlcyB3aWxsIGJlIG92ZXJ3cml0dGVuLgorLSAgICAgICAqLwor LSAgICAgIHN0YXRpYyB2b2lkIGR1cGxpY2F0ZShjb25zdCBUYWcgKnNvdXJjZSwgVGFnICp0YXJn ZXQsIGJvb2wgb3ZlcndyaXRlID0gdHJ1ZSk7CistCistICAgICAgLyohCistICAgICAgICogUmV0 dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgaXRlbSBsaXN0IG1hcC4gIFRoaXMgaXMgYW4gSXRlbUxp c3RNYXAgb2YKKy0gICAgICAgKiBhbGwgb2YgdGhlIGl0ZW1zIGluIHRoZSB0YWcuCistICAgICAg ICoKKy0gICAgICAgKiBUaGlzIGlzIHRoZSBtb3N0IHBvd2VyZnVsbCBzdHJ1Y3R1cmUgZm9yIGFj Y2Vzc2luZyB0aGUgaXRlbXMgb2YgdGhlIHRhZy4KKy0gICAgICAgKgorLSAgICAgICAqIFx3YXJu aW5nIFlvdSBzaG91bGQgbm90IG1vZGlmeSB0aGlzIGRhdGEgc3RydWN0dXJlIGRpcmVjdGx5LCBp bnN0ZWFkCistICAgICAgICogdXNlIHNldEl0ZW0oKSBhbmQgcmVtb3ZlSXRlbSgpLgorLSAgICAg ICAqLyAKKy0gICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVNYXAoKSBjb25zdDsK Ky0gICAgICAKKy0gICAgICAvKiEKKy0gICAgICAgKiBSZW1vdmVzIHRoZSBcYSBrZXkgYXR0cmli dXRlIGZyb20gdGhlIHRhZworLSAgICAgICAqLworLSAgICAgIHZvaWQgcmVtb3ZlSXRlbShjb25z dCBCeXRlVmVjdG9yICZrZXkpOyAgICAgICAKKy0gICAgICAKKy0gICAgICB2b2lkIHNldEF0dHJp YnV0ZShjb25zdCBCeXRlVmVjdG9yICZrZXksIGNvbnN0IFN0cmluZyAmdmFsdWUpOworLSAgICAg IAorLSAgICAgIC8qIQorLSAgICAgICAqIFNldHMgdGhlIFxhIGtleSBhdHRyaWJ1dGUgdG8gdGhl IHZhbHVlIG9mIFxhIGF0dHJpYnV0ZS4gSWYgYW4gYXR0cmlidXRlCistICAgICAgICogd2l0aCB0 aGUgXGEga2V5IGlzIGFscmVhZHkgcHJlc2VudCwgaXQgd2lsbCBiZSByZXBsYWNlZC4KKy0gICAg ICAgKi8KKy0gICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBCeXRlVmVjdG9yICZrZXksIGNv bnN0IEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKKy0KKy0gICAgcHJpdmF0ZToKKy0gICAgICAKKy0g ICAgICBjbGFzcyBUYWdQcml2YXRlOworLSAgICAgIFRhZ1ByaXZhdGUgKmQ7CistICAgICAgCist ICAgIH07CistICB9CistfQorLSNlbmRpZgorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvd21h L3dtYXByb3BlcnRpZXMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvd21h L3dtYXByb3BlcnRpZXMuaAkocmV2aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0YWRh dGEvd21hL3dtYXByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQorQEAgLTEsNzEgKzAsMCBAQAor LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKy0gICAgY29weXJpZ2h0ICAgICAgICAgICAgOiAoQykgMjAw NSBieSBMdWthcyBMYWxpbnNreQorLSAgICBlbWFpbCAgICAgICAgICAgICAgICA6IGxhbGluc2t5 QGdtYWlsLmNvbQorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKy0gKiAgIGl0ICB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uICAqCistICogICAyLjEg YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAg ICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgICAqCist ICogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mICAgICAgICAgICAgKgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgICAgICoKKy0gKiAgIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAg ICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICoKKy0gKiAg IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUgICAqCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sICAgICAgICAgICAgKgorLSAqICAgTUEgIDAyMTEwLTEz MDEgIFVTQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNpZm5kZWYgVEFHTElCX1dNQVBST1BFUlRJ RVNfSAorLSNkZWZpbmUgVEFHTElCX1dNQVBST1BFUlRJRVNfSAorLQorLSNpbmNsdWRlIDxhdWRp b3Byb3BlcnRpZXMuaD4KKy0jaW5jbHVkZSA8dHN0cmluZy5oPgorLQorLW5hbWVzcGFjZSBUYWdM aWIgeworLSAgICAKKy0gIG5hbWVzcGFjZSBXTUEgeworLSAgICAgICAgCistICAgIGNsYXNzIEZp bGU7ICAKKy0gICAgICAKKy0gICAgY2xhc3MgUHJvcGVydGllcyA6IHB1YmxpYyBBdWRpb1Byb3Bl cnRpZXMKKy0gICAgeworLSAgICAgICAgCistICAgICAgZnJpZW5kIGNsYXNzIFdNQTo6RmlsZTsK Ky0gICAgICAKKy0gICAgcHVibGljOgorLSAgICAKKy0gICAgICAvKiEKKy0gICAgICAgKiBDcmVh dGUgYW4gaW5zdGFuY2Ugb2YgV01BOjpQcm9wZXJ0aWVzLgorLSAgICAgICAqLworLSAgICAgIFBy b3BlcnRpZXMoKTsKKy0gICAgICAKKy0gICAgICAvKiEKKy0gICAgICAgKiBEZXN0cm95cyB0aGlz IFdNQTo6UHJvcGVydGllcyBpbnN0YW5jZS4KKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIH5Q cm9wZXJ0aWVzKCk7CistCistICAgICAgLy8gUmVpbXBsZW1lbnRhdGlvbnMuCistCistICAgICAg dmlydHVhbCBpbnQgbGVuZ3RoKCkgY29uc3Q7CistICAgICAgdmlydHVhbCBpbnQgYml0cmF0ZSgp IGNvbnN0OworLSAgICAgIHZpcnR1YWwgaW50IHNhbXBsZVJhdGUoKSBjb25zdDsKKy0gICAgICB2 aXJ0dWFsIGludCBjaGFubmVscygpIGNvbnN0OworLQorLSAgICAgIHByaXZhdGU6CistICAgIAor LSAgICAgIGNsYXNzIFByb3BlcnRpZXNQcml2YXRlOworLSAgICAgIFByb3BlcnRpZXNQcml2YXRl ICpkOworLSAgICAgIAorLSAgICAgIHZvaWQgc2V0KGludCBsZW5ndGgsIGludCBiaXRyYXRlLCBp bnQgc2FtcGxlUmF0ZSwgaW50IGNoYW5uZWxzKTsKKy0gICAgICAKKy0gICAgfTsKKy0KKy0gIH0K Ky0KKy19CistCistI2VuZGlmIAorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL01ha2Vm aWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvTWFrZWZpbGUu YW0JKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS9NYWtlZmls ZS5hbQkod29ya2luZyBjb3B5KQorQEAgLTEsMjAgKzAsMCBAQAorLVNVQkRJUlMgPQorLQorLUlO Q0xVREVTICAgICAgICAgICA9ICQoYWxsX2luY2x1ZGVzKSAkKHRhZ2xpYl9pbmNsdWRlcykKKy1N RVRBU09VUkNFUyAgICAgICAgPSBBVVRPCistbGlidGFnd21hX2xhX0xERkxBR1MgID0gJChhbGxf bGlicmFyaWVzKQorLW5vaW5zdF9MVExJQlJBUklFUyA9IGxpYnRhZ3dtYS5sYQorLQorLWxpYnRh Z3dtYV9sYV9TT1VSQ0VTID0gIFwKKy0gICAgICAgICAgICAgICAgICAgICB3bWFhdHRyaWJ1dGUu Y3BwIFwKKy0gICAgICAgICAgICAgICAgICAgICB3bWFwcm9wZXJ0aWVzLmNwcCBcCistICAgICAg ICAgICAgICAgICAgICAgd21hdGFnLmNwcCBcCistICAgICAgICAgICAgICAgICAgICAgd21hZmls ZS5jcHAgXAorLSAgICAgICAgICAgICAgICAgICAgIHRhZ2xpYl93bWFmaWxldHlwZXJlc29sdmVy LmNwcAorLQorLW5vaW5zdF9IRUFERVJTID0gXAorLSAgICAgICAgICAgICAgICAgICAgIHdtYWF0 dHJpYnV0ZS5oIFwKKy0gICAgICAgICAgICAgICAgICAgICB3bWFwcm9wZXJ0aWVzLmggXAorLSAg ICAgICAgICAgICAgICAgICAgIHdtYXRhZy5oIFwKKy0gICAgICAgICAgICAgICAgICAgICB3bWFm aWxlLmggXAorLSAgICAgICAgICAgICAgICAgICAgIHRhZ2xpYl93bWFmaWxldHlwZXJlc29sdmVy LmgKK0luZGV4OiBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS93bWFhdHRyaWJ1dGUuY3BwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gYW1hcm9rL3NyYy9tZXRhZGF0YS93bWEvd21hYXR0cmlidXRlLmNwcAkocmV2 aXNpb24gNzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYWF0dHJpYnV0ZS5j cHAJKHdvcmtpbmcgY29weSkKK0BAIC0xLDIzMSArMCwwIEBACistLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorLSAgICBjb3B5cmlnaHQgICAgICAgICAgICA6IChDKSAyMDA1IGJ5IEx1a2FzIExhbGluc2t5 CistICAgIGVtYWlsICAgICAgICAgICAgICAgIDogbGFsaW5za3lAZ21haWwuY29tCistICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogICBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoKKy0gKiAgIDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAqCistICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKgorLSAqICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICoKKy0gKiAgIFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAq CistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAqICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgKgorLSAqICAgTGljZW5zZSBhbG9uZyB3aXRo IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICoKKy0g KiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv c3RvbiwgICAgICAgICAgICAqCistICogICBNQSAgMDIxMTAtMTMwMSAgVVNBICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCistCistI2luY2x1ZGUgPHdtYWF0dHJpYnV0ZS5oPgorLSNpbmNsdWRlIDx3bWFmaWxl Lmg+CistCistdXNpbmcgbmFtZXNwYWNlIFRhZ0xpYjsKKy0KKy1jbGFzcyBXTUE6OkF0dHJpYnV0 ZTo6QXR0cmlidXRlUHJpdmF0ZQorLXsKKy1wdWJsaWM6CistICBBdHRyaWJ1dGVUeXBlcyB0eXBl OyAgICAKKy0gIFN0cmluZyBuYW1lOworLSAgU3RyaW5nIHZhbHVlX3N0cmluZzsKKy0gIEJ5dGVW ZWN0b3IgdmFsdWVfYnl0ZXM7CistICB1bmlvbiB7CistICAgIGludCB2YWx1ZV9pbnQ7CistICAg IGxvbmcgbG9uZyB2YWx1ZV9sb25nbG9uZzsKKy0gIH07CistfTsKKy0KKy0vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworLS8vIHB1YmxpYyBtZW1iZXJzCistLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K Ky0KKy1XTUE6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKCkKKy17CistICBkID0gbmV3IEF0dHJpYnV0 ZVByaXZhdGU7CistICBkLT5uYW1lID0gU3RyaW5nOjpudWxsOworLSAgZC0+dHlwZSA9IFVuaWNv ZGVUeXBlOworLX0KKy0KKy1XTUE6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKFdNQTo6RmlsZSAmZmls ZSkKKy17CistICBkID0gbmV3IEF0dHJpYnV0ZVByaXZhdGU7CistICBwYXJzZShmaWxlKTsKKy19 CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJm5hbWUsIGNvbnN0 IFN0cmluZyAmdmFsdWUpCisteworLSAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworLSAgZC0+ bmFtZSA9IG5hbWU7CistICBkLT50eXBlID0gVW5pY29kZVR5cGU7CistICBkLT52YWx1ZV9zdHJp bmcgPSB2YWx1ZTsKKy19CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBTdHJp bmcgJm5hbWUsIGNvbnN0IEJ5dGVWZWN0b3IgJnZhbHVlKQorLXsKKy0gIGQgPSBuZXcgQXR0cmli dXRlUHJpdmF0ZTsKKy0gIGQtPm5hbWUgPSBuYW1lOworLSAgZC0+dHlwZSA9IEJ5dGVzVHlwZTsK Ky0gIGQtPnZhbHVlX2J5dGVzID0gdmFsdWU7CistfQorLQorLVdNQTo6QXR0cmlidXRlOjpBdHRy aWJ1dGUoY29uc3QgU3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgdmFsdWUpCisteworLSAgZCA9 IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworLSAgZC0+bmFtZSA9IG5hbWU7CistICBkLT50eXBlID0g RFdvcmRUeXBlOworLSAgZC0+dmFsdWVfaW50ID0gdmFsdWU7CistfQorLQorLVdNQTo6QXR0cmli dXRlOjpBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgdmFs dWUpCisteworLSAgZCA9IG5ldyBBdHRyaWJ1dGVQcml2YXRlOworLSAgZC0+bmFtZSA9IG5hbWU7 CistICBkLT50eXBlID0gUVdvcmRUeXBlOworLSAgZC0+dmFsdWVfbG9uZ2xvbmcgPSB2YWx1ZTsK Ky19CistCistV01BOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJm5hbWUsIHVu c2lnbmVkIHNob3J0IHZhbHVlKQorLXsKKy0gIGQgPSBuZXcgQXR0cmlidXRlUHJpdmF0ZTsKKy0g IGQtPm5hbWUgPSBuYW1lOworLSAgZC0+dHlwZSA9IFdvcmRUeXBlOworLSAgZC0+dmFsdWVfaW50 ID0gdmFsdWU7CistfQorLQorLVdNQTo6QXR0cmlidXRlOjpBdHRyaWJ1dGUoY29uc3QgU3RyaW5n ICZuYW1lLCBib29sIHZhbHVlKQorLXsKKy0gIGQgPSBuZXcgQXR0cmlidXRlUHJpdmF0ZTsKKy0g IGQtPm5hbWUgPSBuYW1lOworLSAgZC0+dHlwZSA9IEJvb2xUeXBlOworLSAgZC0+dmFsdWVfaW50 ID0gdmFsdWU7CistfQorLQorLVdNQTo6QXR0cmlidXRlOjpBdHRyaWJ1dGUoY29uc3QgQXR0cmli dXRlICZhdHRyKQorLXsKKy0gIGQgPSBuZXcgQXR0cmlidXRlUHJpdmF0ZSgqYXR0ci5kKTsKKy19 IAorLQorLVdNQTo6QXR0cmlidXRlOjp+QXR0cmlidXRlKCkKKy17CistICBpZihkKSAKKy0gICAg ZGVsZXRlIGQ7CistfQorLQorLVN0cmluZyBXTUE6OkF0dHJpYnV0ZTo6bmFtZSgpIGNvbnN0Cist eworLSAgcmV0dXJuIGQtPm5hbWU7CistfQorLQorLVdNQTo6QXR0cmlidXRlOjpBdHRyaWJ1dGVU eXBlcyBXTUE6OkF0dHJpYnV0ZTo6dHlwZSgpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPnR5cGU7 CistfQorLQorLVN0cmluZyBXTUE6OkF0dHJpYnV0ZTo6dG9TdHJpbmcoKSBjb25zdAorLXsKKy0g IHJldHVybiBkLT52YWx1ZV9zdHJpbmc7CistfQorLQorLUJ5dGVWZWN0b3IgV01BOjpBdHRyaWJ1 dGU6OnRvQnl0ZVZlY3RvcigpIGNvbnN0CisteworLSAgcmV0dXJuIGQtPnZhbHVlX2J5dGVzOwor LX0KKy0KKy1pbnQgV01BOjpBdHRyaWJ1dGU6OnRvSW50KCkgY29uc3QKKy17CistICBpZiAoZC0+ dHlwZSA9PSBVbmljb2RlVHlwZSkKKy0gICAgcmV0dXJuIGQtPnZhbHVlX3N0cmluZy50b0ludCgp OworLSAgZWxzZQorLSAgICByZXR1cm4gZC0+dmFsdWVfaW50OworLX0KKy0KKy1sb25nIGxvbmcg V01BOjpBdHRyaWJ1dGU6OnRvTG9uZ0xvbmcoKSBjb25zdAorLXsKKy0gIHJldHVybiBkLT52YWx1 ZV9sb25nbG9uZzsKKy19CistCistYm9vbCBXTUE6OkF0dHJpYnV0ZTo6cGFyc2UoV01BOjpGaWxl ICZmKQorLXsKKy0gIGludCBzaXplID0gZi5yZWFkV09SRCgpOworLSAgZi5yZWFkU3RyaW5nKHNp emUsIGQtPm5hbWUpOworLSAgCistICBkLT50eXBlID0gKFdNQTo6QXR0cmlidXRlOjpBdHRyaWJ1 dGVUeXBlcylmLnJlYWRXT1JEKCk7CistICBzaXplID0gZi5yZWFkV09SRCgpOworLQorLSAgc3dp dGNoKGQtPnR5cGUpIHsKKy0gIGNhc2UgV29yZFR5cGU6CistICAgIGQtPnZhbHVlX2ludCA9IGYu cmVhZFdPUkQoKTsKKy0gICAgYnJlYWs7CistICAgIAorLSAgY2FzZSBCb29sVHlwZToKKy0gIGNh c2UgRFdvcmRUeXBlOgorLSAgICBkLT52YWx1ZV9pbnQgPSBmLnJlYWREV09SRCgpOworLSAgICBi cmVhazsKKy0gICAgCistICBjYXNlIFFXb3JkVHlwZTogIAorLSAgICBkLT52YWx1ZV9sb25nbG9u ZyA9IGYucmVhZFFXT1JEKCk7CistICAgIGJyZWFrOworLSAgICAKKy0gIGNhc2UgVW5pY29kZVR5 cGU6ICAKKy0gICAgZi5yZWFkU3RyaW5nKHNpemUsIGQtPnZhbHVlX3N0cmluZyk7CistICAgIGJy ZWFrOworLSAgICAKKy0gIGNhc2UgQnl0ZXNUeXBlOiAgCistICAgIGQtPnZhbHVlX2J5dGVzID0g Zi5yZWFkQmxvY2soc2l6ZSk7CistICAgIGJyZWFrOworLSAgICAKKy0gIGRlZmF1bHQ6CistICAg IHJldHVybiBmYWxzZTsgCistICB9CistICAKKy0gIHJldHVybiB0cnVlOworLX0KKy0KKy1CeXRl VmVjdG9yIFdNQTo6QXR0cmlidXRlOjpyZW5kZXIoKSBjb25zdAorLXsKKy0gIEJ5dGVWZWN0b3Ig ZGF0YTsKKy0KKy0gIEJ5dGVWZWN0b3IgdiA9IGQtPm5hbWUuZGF0YShTdHJpbmc6OlVURjE2TEUp OworLSAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHYuc2l6ZSgpICsgMiwgZmFs c2UpKTsKKy0gIGRhdGEuYXBwZW5kKHYgKyBCeXRlVmVjdG9yOjpmcm9tU2hvcnQoMCwgZmFsc2Up KTsKKy0gIAorLSAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KChpbnQpZC0+dHlw ZSwgZmFsc2UpKTsKKy0gICAgCistICBzd2l0Y2ggKGQtPnR5cGUpIHsKKy0gIGNhc2UgV29yZFR5 cGU6CistICAgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21TaG9ydCgyLCBmYWxzZSkpOwor LSAgICBkYXRhLmFwcGVuZChCeXRlVmVjdG9yOjpmcm9tU2hvcnQoZC0+dmFsdWVfaW50LCBmYWxz ZSkpOworLSAgICBicmVhazsKKy0gICAgICAKKy0gIGNhc2UgQm9vbFR5cGU6CistICBjYXNlIERX b3JkVHlwZToKKy0gICAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KDQsIGZhbHNl KSk7CistICAgIGRhdGEuYXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21VSW50KGQtPnZhbHVlX2ludCwg ZmFsc2UpKTsKKy0gICAgYnJlYWs7CistICAgICAgCistICBjYXNlIFFXb3JkVHlwZToKKy0gICAg ZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KDgsIGZhbHNlKSk7CistICAgIGRhdGEu YXBwZW5kKEJ5dGVWZWN0b3I6OmZyb21Mb25nTG9uZyhkLT52YWx1ZV9sb25nbG9uZywgZmFsc2Up KTsKKy0gICAgYnJlYWs7CistICAgICAgCistICBjYXNlIFVuaWNvZGVUeXBlOgorLSAgICB2ID0g ZC0+dmFsdWVfc3RyaW5nLmRhdGEoU3RyaW5nOjpVVEYxNkxFKTsKKy0gICAgZGF0YS5hcHBlbmQo Qnl0ZVZlY3Rvcjo6ZnJvbVNob3J0KHYuc2l6ZSgpICsgMiwgZmFsc2UpKTsKKy0gICAgZGF0YS5h cHBlbmQodiArIEJ5dGVWZWN0b3I6OmZyb21TaG9ydCgwLCBmYWxzZSkpOworLSAgICBicmVhazsK Ky0gICAgCistICBjYXNlIEJ5dGVzVHlwZToKKy0gICAgZGF0YS5hcHBlbmQoQnl0ZVZlY3Rvcjo6 ZnJvbVNob3J0KGQtPnZhbHVlX2J5dGVzLnNpemUoKSwgZmFsc2UpKTsKKy0gICAgZGF0YS5hcHBl bmQoZC0+dmFsdWVfYnl0ZXMpOworLSAgICBicmVhazsKKy0gICAgCistICBkZWZhdWx0OiAgCist ICAgIHJldHVybiBCeXRlVmVjdG9yOjpudWxsOyAKKy0gIH0KKy0gIAorLSAgcmV0dXJuIGRhdGE7 CistfQorLQorLQorSW5kZXg6IGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYWZpbGUuaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYWZpbGUuaAkocmV2aXNpb24g NzA1MjMxKQorKysrIGFtYXJvay9zcmMvbWV0YWRhdGEvd21hL3dtYWZpbGUuaAkod29ya2luZyBj b3B5KQorQEAgLTEsMTAwICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICAgIGNvcHly aWdodCAgICAgICAgICAgIDogKEMpIDIwMDUgYnkgTHVrYXMgTGFsaW5za3kKKy0gICAgZW1haWwg ICAgICAgICAgICAgICAgOiBsYWxpbnNreUBnbWFpbC5jb20KKy0gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCistICogICBp dCAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAgKgorLSAqICAgMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CistICogICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0ICAgKgorLSAqICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKy0gKiAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VICAgICAqCistICogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0g KiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgICAgICAqCistICogICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgKgorLSAqICAgRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCAgICAgICAg ICAgICoKKy0gKiAgIE1BICAwMjExMC0xMzAxICBVU0EgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0j aWZuZGVmIFRBR0xJQl9XTUFGSUxFX0gKKy0jZGVmaW5lIFRBR0xJQl9XTUFGSUxFX0gKKy0KKy0j aW5jbHVkZSA8dGZpbGUuaD4KKy0jaW5jbHVkZSA8dGFnLmg+CistI2luY2x1ZGUgIndtYXByb3Bl cnRpZXMuaCIKKy0jaW5jbHVkZSAid21hdGFnLmgiCistCistbmFtZXNwYWNlIFRhZ0xpYiB7Cist CistICBuYW1lc3BhY2UgV01BIHsKKy0gIAorLSAgICBzdHJ1Y3QgR1VJRDsKKy0gICAgCistICAg IHR5cGVkZWYgdW5zaWduZWQgY2hhciBCWVRFOworLSAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0 IFdPUkQ7CistICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IERXT1JEOworLSAgICB0eXBlZGVmIHVu c2lnbmVkIGxvbmcgbG9uZyBRV09SRDsKKy0gICAgCistICAgIGNsYXNzIEZpbGUgOiBwdWJsaWMg VGFnTGliOjpGaWxlCistICAgIHsKKy0gICAgICAgIAorLSAgICAgIGZyaWVuZCBjbGFzcyBBdHRy aWJ1dGU7CistCistICAgIHB1YmxpYzoKKy0KKy0gICAgICBGaWxlKGNvbnN0IGNoYXIgKmZpbGUs IGJvb2wgcmVhZFByb3BlcnRpZXMgPSB0cnVlLCBQcm9wZXJ0aWVzOjpSZWFkU3R5bGUgcHJvcGVy dGllc1N0eWxlID0gUHJvcGVydGllczo6QXZlcmFnZSk7CistICAgICAgCistICAgICAgdmlydHVh bCB+RmlsZSgpOworLSAgICAKKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRoZSBUYWdM aWI6OlRhZyBmb3IgdGhpcyBmaWxlLiAKKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIFRhZ0xp Yjo6VGFnICp0YWcoKSBjb25zdDsKKy0KKy0gICAgICAvKiEKKy0gICAgICAgKiBSZXR1cm5zIHRo ZSBXTUE6OlRhZyBmb3IgdGhpcyBmaWxlLiAKKy0gICAgICAgKi8KKy0gICAgICB2aXJ0dWFsIFRh ZyAqV01BVGFnKCkgY29uc3Q7CistCistICAgICAgLyohCistICAgICAgICogUmV0dXJucyB0aGUg V01BOjpQcm9wZXJ0aWVzIGZvciB0aGlzIGZpbGUuIAorLSAgICAgICAqLworLSAgICAgIHZpcnR1 YWwgUHJvcGVydGllcyAqYXVkaW9Qcm9wZXJ0aWVzKCkgY29uc3Q7CistCistCistICAgICAgLyoh CistICAgICAgICogU2F2ZSB0aGUgZmlsZS4gCistICAgICAgICoKKy0gICAgICAgKiBUaGlzIHJl dHVybnMgdHJ1ZSBpZiB0aGUgc2F2ZSB3YXMgc3VjY2Vzc2Z1bC4KKy0gICAgICAgKi8KKy0gICAg ICB2aXJ0dWFsIGJvb2wgc2F2ZSgpOworLSAgICAKKy0gICAgcHJvdGVjdGVkOgorLQorLSAgICAg IGludCByZWFkQllURSgpOworLSAgICAgIGludCByZWFkV09SRCgpOworLSAgICAgIHVuc2lnbmVk IGludCByZWFkRFdPUkQoKTsKKy0gICAgICBsb25nIGxvbmcgcmVhZFFXT1JEKCk7CistICAgICAg dm9pZCByZWFkR1VJRChHVUlEICZnKTsKKy0gICAgICB2b2lkIHJlYWRTdHJpbmcoaW50IGxlbiwg U3RyaW5nICZzKTsKKy0KKy0gICAgICBCeXRlVmVjdG9yIHJlbmRlckNvbnRlbnREZXNjcmlwdGlv bigpOworLSAgICAgIEJ5dGVWZWN0b3IgcmVuZGVyRXh0ZW5kZWRDb250ZW50RGVzY3JpcHRpb24o KTsKKy0gICAgICAKKy0gICAgICB2b2lkIHJlYWQoYm9vbCByZWFkUHJvcGVydGllcywgUHJvcGVy dGllczo6UmVhZFN0eWxlIHByb3BlcnRpZXNTdHlsZSk7CistCistICAgIHByaXZhdGU6CistICAg ICAgCistICAgICAgY2xhc3MgRmlsZVByaXZhdGU7CistICAgICAgRmlsZVByaXZhdGUgKmQ7Cist ICAgICAgCistICAgIH07CistICAKKy0gIH0KKy0KKy19ICAKKy0KKy0jZW5kaWYKK0luZGV4OiBh bWFyb2svc3JjL21ldGFkYXRhL3dtYS90YWdsaWJfd21hZmlsZXR5cGVyZXNvbHZlci5jcHAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL3dtYS90YWdsaWJfd21hZmlsZXR5cGVy ZXNvbHZlci5jcHAJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3JjL21ldGFkYXRhL3dt YS90YWdsaWJfd21hZmlsZXR5cGVyZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKK0BAIC0xLDQ3 ICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICAgIGNvcHlyaWdodCAgICAgICAgICAg IDogKEMpIDIwMDUgYnkgTWFydGluIEF1bXVlbGxlcgorLSAgICBlbWFpbCAgICAgICAgICAgICAg ICA6IGF1bXVlbGxAcmVzZXJ2LmF0CistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCistICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoK Ky0gKiAgIDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4g ICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCAgICoKKy0gKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAqCistICogICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAq ICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAg ICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAg ICAgKgorLSAqICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAgICAgICAqCistICogICBN QSAgMDIxMTAtMTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLy8gKGMpIDIwMDUgTWFy dGluIEF1bXVlbGxlciA8YXVtdWVsbEByZXNlcnYuYXQ+CistLy8gU2VlIENPUFlJTkcgZmlsZSBm b3IgbGljZW5zaW5nIGluZm9ybWF0aW9uCistCistI2luY2x1ZGUgInRhZ2xpYl93bWFmaWxldHlw ZXJlc29sdmVyLmgiCistI2luY2x1ZGUgIndtYWZpbGUuaCIKKy0KKy0jaW5jbHVkZSA8c3RyaW5n Lmg+CistCistVGFnTGliOjpGaWxlICpXTUFGaWxlVHlwZVJlc29sdmVyOjpjcmVhdGVGaWxlKGNv bnN0IGNoYXIgKmZpbGVOYW1lLAorLSAgICAgICAgYm9vbCByZWFkUHJvcGVydGllcywKKy0gICAg ICAgIFRhZ0xpYjo6QXVkaW9Qcm9wZXJ0aWVzOjpSZWFkU3R5bGUgcHJvcGVydGllc1N0eWxlKSBj b25zdAorLXsKKy0gICAgY29uc3QgY2hhciAqZXh0ID0gc3RycmNocihmaWxlTmFtZSwgJy4nKTsK Ky0gICAgaWYoZXh0ICYmICghc3RyY2FzZWNtcChleHQsICIud21hIikgfHwgIXN0cmNhc2VjbXAo ZXh0LCAiLmFzZiIpKSkKKy0gICAgeworLSAgICAgICAgVGFnTGliOjpXTUE6OkZpbGUgKmYgPSBu ZXcgVGFnTGliOjpXTUE6OkZpbGUoZmlsZU5hbWUsIHJlYWRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVz U3R5bGUpOworLSAgICAgICAgaWYoZi0+aXNWYWxpZCgpKQorLSAgICAgICAgICAgIHJldHVybiBm OworLSAgICAgICAgZWxzZQorLSAgICAgICAgeworLSAgICAgICAgICAgIGRlbGV0ZSBmOworLSAg ICAgICAgfQorLSAgICB9CistCistICAgIHJldHVybiAwOworLX0KK0luZGV4OiBhbWFyb2svc3Jj L21ldGFkYXRhL3dtYS93bWFhdHRyaWJ1dGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFtYXJvay9zcmMv bWV0YWRhdGEvd21hL3dtYWF0dHJpYnV0ZS5oCShyZXZpc2lvbiA3MDUyMzEpCisrKysgYW1hcm9r L3NyYy9tZXRhZGF0YS93bWEvd21hYXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKK0BAIC0xLDEy NSArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAgICBjb3B5cmlnaHQgICAgICAgICAg ICA6IChDKSAyMDA1IGJ5IEx1a2FzIExhbGluc2t5CistICAgIGVtYWlsICAgICAgICAgICAgICAg IDogbGFsaW5za3lAZ21haWwuY29tCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCistICogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorLSAqICAgaXQgIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gICoK Ky0gKiAgIDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4g ICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCAgICoKKy0gKiAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAqCistICogICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICAgKgorLSAq ICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAg ICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAg ICAgKgorLSAqICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICoKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgICAgICAgICAgICAqCistICogICBN QSAgMDIxMTAtMTMwMSAgVVNBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistI2lmbmRlZiBUQUdMSUJf V01BQVRUUklCVVRFX0gKKy0jZGVmaW5lIFRBR0xJQl9XTUFBVFRSSUJVVEVfSAorLQorLSNpbmNs dWRlIDx0c3RyaW5nLmg+CistI2luY2x1ZGUgPHRieXRldmVjdG9yLmg+CistCistbmFtZXNwYWNl IFRhZ0xpYiB7CistCistICBuYW1lc3BhY2UgV01BIHsKKy0gCistICAgIGNsYXNzIEZpbGU7ICAK Ky0gICAgICAKKy0gICAgY2xhc3MgQXR0cmlidXRlIHsKKy0KKy0gICAgICBmcmllbmQgY2xhc3Mg RmlsZTsgIAorLSAgICAgICAgCistICAgIHB1YmxpYzoKKy0KKy0gICAgICAvKiEKKy0gICAgICAg KiBFbnVtIG9mIHR5cGVzIGFuIEF0dHJpYnV0ZSBjYW4gaGF2ZS4KKy0gICAgICAgKi8KKy0gICAg ICBlbnVtIEF0dHJpYnV0ZVR5cGVzIHsKKy0gICAgICAgIFVuaWNvZGVUeXBlID0gMCwKKy0gICAg ICAgIEJ5dGVzVHlwZSAgID0gMSwKKy0gICAgICAgIEJvb2xUeXBlICAgID0gMiwKKy0gICAgICAg IERXb3JkVHlwZSAgID0gMywKKy0gICAgICAgIFFXb3JkVHlwZSAgID0gNCwKKy0gICAgICAgIFdv cmRUeXBlICAgID0gNQorLSAgICAgIH07CistCistICAgICAgLyohCistICAgICAgICogQ29uc3Ry dWN0cyBhbiBlbXB0eSBhdHRyaWJ1dGUuCistICAgICAgICovICAgICAgIAorLSAgICAgIEF0dHJp YnV0ZSgpOworLSAgICAgIAorLSAgICAgIC8qIQorLSAgICAgICAqIENvbnN0cnVjdHMgYW4gYXR0 cmlidXRlIHdpdGggXGEga2V5IGFuZCBcYSB2YWx1ZS4KKy0gICAgICAgKi8gICAgICAgCistICAg ICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyAma2V5LCBjb25zdCBTdHJpbmcgJnZhbHVlKTsKKy0g ICAgICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZrZXksIGNvbnN0IEJ5dGVWZWN0b3IgJnZhbHVl KTsKKy0gICAgICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nICZrZXksIHVuc2lnbmVkIGludCB2YWx1 ZSk7CistICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyAma2V5LCB1bnNpZ25lZCBsb25nIGxv bmcgdmFsdWUpOworLSAgICAgIEF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJmtleSwgdW5zaWduZWQg c2hvcnQgdmFsdWUpOworLSAgICAgIEF0dHJpYnV0ZShjb25zdCBTdHJpbmcgJmtleSwgYm9vbCB2 YWx1ZSk7CistICAgICAgCistICAgICAgLyohCistICAgICAgICogQ29uc3RydWN0IGFuIGF0dHJp YnV0ZSBhcyBhIGNvcHkgb2YgXGEgaXRlbS4KKy0gICAgICAgKi8KKy0gICAgICBBdHRyaWJ1dGUo Y29uc3QgQXR0cmlidXRlICZpdGVtKTsgICAgICAgCistICAgICAgCistICAgICAgLyohCistICAg ICAgICogRGVzdHJveXMgdGhlIGF0dHJpYnV0ZS4KKy0gICAgICAgKi8gCistICAgICAgdmlydHVh bCB+QXR0cmlidXRlKCk7CistCistICAgICAgLyohCistICAgICAgICogUmV0dXJucyB0aGUgbmFt ZS4KKy0gICAgICAgKi8KKy0gICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OworLSAgICAgIAorLSAg ICAgIC8qIQorLSAgICAgICAqIFJldHVybnMgdHlwZSBvZiB0aGUgdmFsdWUuCistICAgICAgICov CistICAgICAgQXR0cmlidXRlVHlwZXMgdHlwZSgpIGNvbnN0OworLSAgICAgIAorLSAgICAgIC8q IQorLSAgICAgICAqIFJldHVybnMgdGhlIHZhbHVlIGFzIGEgU3RyaW5nLgorLSAgICAgICAqLwor LSAgICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworLSAgICAgIAorLSAgICAgIC8qIQorLSAg ICAgICAqIFJldHVybnMgdGhlIHZhbHVlIGFzIGEgQnl0ZVZlY3Rvci4KKy0gICAgICAgKi8KKy0g ICAgICBCeXRlVmVjdG9yIHRvQnl0ZVZlY3RvcigpIGNvbnN0OworLSAgICAgIAorLSAgICAgIC8q IQorLSAgICAgICAqIFJldHVybnMgdGhlIHZhbHVlIGFzIGFuIGludGVnZXIuCistICAgICAgICov CistICAgICAgaW50IHRvSW50KCkgY29uc3Q7CistICAgICAgCistICAgICAgLyohCistICAgICAg ICogUmV0dXJucyB0aGUgdmFsdWUgYXMgYSBsb25nIGxvbmcuCistICAgICAgICovCistICAgICAg bG9uZyBsb25nIHRvTG9uZ0xvbmcoKSBjb25zdDsKKy0gICAgICAKKy0gICAgICBCeXRlVmVjdG9y IHJlbmRlcigpIGNvbnN0OworLSAgICAgIAorLSAgICBwcm90ZWN0ZWQ6CistICAgIAorLSAgICAg IEF0dHJpYnV0ZShXTUE6OkZpbGUgJmZpbGUpOworLSAgICAgIGJvb2wgcGFyc2UoV01BOjpGaWxl ICZmaWxlKTsKKy0gICAgICAKKy0gICAgcHJpdmF0ZToKKy0gICAgICAKKy0gICAgICBjbGFzcyBB dHRyaWJ1dGVQcml2YXRlOworLSAgICAgIEF0dHJpYnV0ZVByaXZhdGUgKmQ7CistICAgIAorLSAg ICB9OworLSAgCistICB9CistICAKKy19CistCistI2VuZGlmCisKK1Byb3BlcnR5IGNoYW5nZXMg b246IGFtYXJvay9zcmMvbWV0YWRhdGEvd21hCitfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitOYW1lOiBzdm46aWdub3Jl CisgICAtIC5saWJzCisuZGVwcworTWFrZWZpbGUKK01ha2VmaWxlLmluCisKKworSW5kZXg6IGFt YXJvay9zcmMvbWV0YWRhdGEvdHBsdWdpbnMuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW1hcm9rL3Ny Yy9tZXRhZGF0YS90cGx1Z2lucy5jcHAJKHJldmlzaW9uIDcwNTIzMSkKKysrKyBhbWFyb2svc3Jj L21ldGFkYXRhL3RwbHVnaW5zLmNwcAkod29ya2luZyBjb3B5KQorQEAgLTQyLDggKzQyLDggQEAK KyAjaW5jbHVkZSAid2F2cGFjay93dmZpbGUuaCIKKyAjaW5jbHVkZSAic3BlZXgvdGFnbGliX3Nw ZWV4ZmlsZXR5cGVyZXNvbHZlci5oIgorICNpbmNsdWRlICJzcGVleC9zcGVleGZpbGUuaCIKKy0j aW5jbHVkZSAid21hL3RhZ2xpYl93bWFmaWxldHlwZXJlc29sdmVyLmgiCistI2luY2x1ZGUgIndt YS93bWFmaWxlLmgiCisrI2luY2x1ZGUgImFzZi90YWdsaWJfYXNmZmlsZXR5cGVyZXNvbHZlci5o IgorKyNpbmNsdWRlICJhc2YvYXNmZmlsZS5oIgorICNpbmNsdWRlICJybWZmL3RhZ2xpYl9yZWFs bWVkaWFmaWxldHlwZXJlc29sdmVyLmgiCisgI2luY2x1ZGUgInJtZmYvdGFnbGliX3JlYWxtZWRp YWZpbGUuaCIKKyAjaW5jbHVkZSAiYXVkaWJsZS90YWdsaWJfYXVkaWJsZWZpbGV0eXBlcmVzb2x2 ZXIuaCIKK0BAIC05NSw3ICs5NSw3IEBACisgICAgICAgICAgICAgfHwgbWltZXR5cGUtPmlzKCAi dmlkZW8veC1tc3ZpZGVvIiApCisgICAgICAgICAgICAgfHwgbWltZXR5cGUtPmlzKCAidmlkZW8v eC1tcy13bXYiICkgKQorICAgICB7CistICAgICAgICByZXR1cm4gbmV3IFRhZ0xpYjo6V01BOjpG aWxlKGZpbGVOYW1lLCByZWFkUHJvcGVydGllcywgcHJvcGVydGllc1N0eWxlKTsKKysgICAgICAg IHJldHVybiBuZXcgVGFnTGliOjpBU0Y6OkZpbGUoZmlsZU5hbWUsIHJlYWRQcm9wZXJ0aWVzLCBw cm9wZXJ0aWVzU3R5bGUpOworICAgICB9CisgICAgIGVsc2UgaWYoIG1pbWV0eXBlLT5pcyggImF1 ZGlvL3ZuZC5ybi1yZWFsYXVkaW8iICkKKyAgICAgICAgICAgICB8fCBtaW1ldHlwZS0+aXMoICJh dWRpby94LXBuLXJlYWxhdWRpbyIgKQorQEAgLTEzMCw3ICsxMzAsNyBAQAorIHsKKyAgICAgLy9U YWdMaWI6OkZpbGVSZWY6OmFkZEZpbGVUeXBlUmVzb2x2ZXIobmV3IE1pbWVUeXBlRmlsZVR5cGVS ZXNvbHZlcik7CisgICAgIFRhZ0xpYjo6RmlsZVJlZjo6YWRkRmlsZVR5cGVSZXNvbHZlcihuZXcg TVA0RmlsZVR5cGVSZXNvbHZlcik7CistICAgIFRhZ0xpYjo6RmlsZVJlZjo6YWRkRmlsZVR5cGVS ZXNvbHZlcihuZXcgV01BRmlsZVR5cGVSZXNvbHZlcik7CisrICAgIFRhZ0xpYjo6RmlsZVJlZjo6 YWRkRmlsZVR5cGVSZXNvbHZlcihuZXcgQVNGRmlsZVR5cGVSZXNvbHZlcik7CisgICAgIFRhZ0xp Yjo6RmlsZVJlZjo6YWRkRmlsZVR5cGVSZXNvbHZlcihuZXcgUmVhbE1lZGlhRmlsZVR5cGVSZXNv bHZlcik7CisgICAgIFRhZ0xpYjo6RmlsZVJlZjo6YWRkRmlsZVR5cGVSZXNvbHZlcihuZXcgQXVk aWJsZUZpbGVUeXBlUmVzb2x2ZXIpOworICAgICBUYWdMaWI6OkZpbGVSZWY6OmFkZEZpbGVUeXBl UmVzb2x2ZXIobmV3IEFBQ0ZpbGVUeXBlUmVzb2x2ZXIpOworSW5kZXg6IGFtYXJvay9zcmMvbWV0 YWRhdGEvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbWFyb2svc3JjL21ldGFkYXRhL01h a2VmaWxlLmFtCShyZXZpc2lvbiA3MDUyMzEpCisrKysgYW1hcm9rL3NyYy9tZXRhZGF0YS9NYWtl ZmlsZS5hbQkod29ya2luZyBjb3B5KQorQEAgLTYsNyArNiw3IEBACisgTVA0X0xEQUREID0gbTRh L2xpYnRhZ200YS5sYQorIGVuZGlmCisgCistU1VCRElSUyA9IHNwZWV4IHdhdnBhY2sgdHJ1ZWF1 ZGlvIHdtYSBhdWRpYmxlIHJtZmYgJChNUDRfU1VCRElSKSBhYWMgd2F2CisrU1VCRElSUyA9IHNw ZWV4IHdhdnBhY2sgdHJ1ZWF1ZGlvIGFzZiBhdWRpYmxlIHJtZmYgJChNUDRfU1VCRElSKSBhYWMg d2F2CisgCisgCisgSU5DTFVERVMgICAgICAgICAgID0gLUkkKHRvcF9zcmNkaXIpL2FtYXJvay9z cmMgJChhbGxfaW5jbHVkZXMpICQodGFnbGliX2luY2x1ZGVzKQorQEAgLTI0LDcgKzI0LDcgQEAK KyAgICAgICAgICAgICAgICAgICAgICBzcGVleC9saWJ0YWdzcGVleC5sYSBcCisgICAgICAgICAg ICAgICAgICAgICAgdHJ1ZWF1ZGlvL2xpYnRhZ3RydWVhdWRpby5sYSBcCisgICAgICAgICAgICAg ICAgICAgICAgd2F2cGFjay9saWJ0YWd3YXZwYWNrLmxhIFwKKy0gICAgICAgICAgICAgICAgICAg ICB3bWEvbGlidGFnd21hLmxhIFwKKysgICAgICAgICAgICAgICAgICAgICBhc2YvbGlidGFnYXNm LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICB3YXYvbGlidGFnd2F2LmxhIFwKKyAgICAgICAg ICAgICAgICAgICAgICBybWZmL2xpYnRhZ3JlYWxtZWRpYS5sYSBcCisgICAgICAgICAgICAgICAg ICAgICAgJChNUDRfTERBREQpIFwKCmRpZmYgLS1naXQgYS9hbWFyb2suc3BlYyBiL2FtYXJvay5z cGVjCmluZGV4IGU0NzY0MWQuLjY2YjViYTMgMTAwNjQ0Ci0tLSBhL2FtYXJvay5zcGVjCisrKyBi L2FtYXJvay5zcGVjCkBAIC0xLDEwICsxLDEyIEBACiAjIFRPRE86CiAjIFJpbyBLYXJtYSBzdXBw b3J0IDogbGlia2FybWEKIAorJWRlZmluZSBfd2l0aF9tcDR2MiAtLXdpdGgtbXA0djIKKwogTmFt ZTogICAgICAgYW1hcm9rCiBTdW1tYXJ5OiAgICBNZWRpYSBwbGF5ZXIKIFZlcnNpb246ICAgIDEu NC43Ci1SZWxlYXNlOiAgICAxMSV7P2Rpc3R9CitSZWxlYXNlOiAgICAxMiV7P2Rpc3R9CiAKIEdy b3VwOiAJICAgIEFwcGxpY2F0aW9ucy9NdWx0aW1lZGlhCiBMaWNlbnNlOiAgICBHUEx2MisKQEAg LTIxLDggKzIzLDEyIEBAIFBhdGNoMjogICAgIGFtYXJvay0xLjQuNy14ZGcucGF0Y2gKICMgaHR0 cDovL2J1Z3Mua2RlLm9yZy8xNDgzMTcgLSBkeW5hbWljIG1vZGUgZmxvb2RzIHBsYXlsaXN0IC4u LgogIyBodHRwOi8vd2Vic3ZuLmtkZS5vcmcvYnJhbmNoZXMvc3RhYmxlL2V4dHJhZ2Vhci9tdWx0 aW1lZGlhL2FtYXJvay9zcmMvcGxheWxpc3QuY3BwP3IxPTcwNTQ5NCZyMj03MDU0OTMmcGF0aHJl dj03MDU0OTQmdmlldz1wYXRjaAogUGF0Y2gzOiAgICAgYW1hcm9rLTEuNC43LTE0ODMxNy5wYXRj aCAKKyMgZml4IGFzZi93bWEgc3VwcG9ydCAod2l0aCByZWNlbnQgdGFnbGliKQorIyBzdm4gZGlm ZiBhbWFyb2svc3JjL21ldGFkYXRhIC0tcmV2aXNpb24gNzA1MjMxCitQYXRjaDQ6ICAgICBhbWFy b2stYXNmLnBhdGNoCiBCdWlsZFJvb3Q6ICAgICAgJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNp b259LSV7cmVsZWFzZX0tcm9vdC0lKCV7X19pZF91fSAtbikKIAorQnVpbGRSZXF1aXJlczogIGF1 dG9tYWtlIGxpYnRvb2wKIEJ1aWxkUmVxdWlyZXM6ICBhbHNhLWxpYi1kZXZlbAogQnVpbGRSZXF1 aXJlczogIGRlc2t0b3AtZmlsZS11dGlscwogQnVpbGRSZXF1aXJlczogIGVzb3VuZC1kZXZlbApA QCAtNDAsNiArNDYsNyBAQCBCdWlsZFJlcXVpcmVzOiAgdGFnbGliLWRldmVsCiBCdWlsZFJlcXVp cmVzOiAgbGliaWZwLWRldmVsCiAjIElwb2QKIEJ1aWxkUmVxdWlyZXM6ICBsaWJncG9kLWRldmVs Cislez9fd2l0aF9tcDR2MjpCdWlsZFJlcXVpcmVzOiBsaWJtcDR2Mi1kZXZlbH0KICMgTVRQIHBs YXllcnMKIEJ1aWxkUmVxdWlyZXM6ICBsaWJtdHAtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICBsaWJt dXNpY2JyYWluei1kZXZlbApAQCAtOTksMTIgKzEwNiwxNiBAQCB1c2UgYW55IG9mIHhtbXMnIHZp c3VhbGlzYXRpb24gcGx1Z2lucyB3aXRoIEFtYXJvay4KIAogCiAlcHJlcAotJXNldHVwIC1xCisl c2V0dXAgLXEgCisKICVwYXRjaDAgLXAwIC1iIC4xNDcxMjYKICVwYXRjaDEgLXAxIC1iIC51dGY4 CiAlcGF0Y2gyIC1wMSAtYiAueGRnCiAlcGF0Y2gzIC1wNCAtYiAuMTQ4MzE3CislcGF0Y2g0IC1w MCAtYiAuYXNmCiAKKyMgZm9yIHBhdGNoNAorbWFrZSAtZiBhZG1pbi9NYWtlZmlsZS5jb21tb24g CiAKIAogJWJ1aWxkCkBAIC0xMjAsNyArMTMxLDggQEAgdW5zZXQgUVRESVIgJiYgLiAle19zeXNj b25mZGlyfS9wcm9maWxlLmQvcXQuc2gKICVpZm5hcmNoIHBwYzY0IHg4Nl82NCBzMzkwIHMzOTB4 IGlhNjQgc3BhcmMgc3BhcmM2NCBhbHBoYQogICAgICAtLXdpdGgtaGVsaXg9JXtfbGliZGlyfS9o ZWxpeCBcCiAlZW5kaWYKLSAgICAgJXs/X3dpdGhfZ3N0cmVhbWVyfQorICAgICAlez9fd2l0aF9n c3RyZWFtZXJ9IFwKKyAgICAgJXs/X3dpdGhfbGl2bTR2Mn0KIAogIyAgICAgLS1lbmFibGUtZmlu YWwgXAogIyAgICAgLS13aXRoLW5tbSBcCkBAIC0xNDgsMTIgKzE2MCwxNCBAQCBkZXNrdG9wLWZp bGUtaW5zdGFsbCAgLS12ZW5kb3IgIiIgXAogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfbGliZGly fS8qLmxhCiAKIAotJWZpbmRfbGFuZyAle25hbWV9CislZmluZF9sYW5nICV7bmFtZX0gCiAjIEhU TUwKIGZvciBsYW5nX2RpciBpbiAkUlBNX0JVSUxEX1JPT1Qle19kb2NkaXJ9L0hUTUwvKiA7IGRv Ci0gIGxhbmc9JChiYXNlbmFtZSAkbGFuZ19kaXIpCi0gIFsgIiRsYW5nIiA9PSAiZW4iIF0gJiYg ZD1lbi8le25hbWV9IHx8IGQ9JGxhbmcKLSAgZWNobyAiJWxhbmcoJGxhbmcpICVkb2MgJXtfZG9j ZGlyfS9IVE1MLyRkIiA+PiAle25hbWV9LmxhbmcKKyAgaWYgWyAtZCAkbGFuZ19kaXIgXTsgdGhl bgorICAgIGxhbmc9JChiYXNlbmFtZSAkbGFuZ19kaXIpCisgICAgWyAiJGxhbmciID09ICJlbiIg XSAmJiBkPWVuLyV7bmFtZX0gfHwgZD0kbGFuZworICAgIGVjaG8gIiVsYW5nKCRsYW5nKSAlZG9j ICV7X2RvY2Rpcn0vSFRNTC8kZCIgPj4gJXtuYW1lfS5sYW5nCisgIGZpCiBkb25lCiAKIApAQCAt MjQ4LDE0ICsyNjIsMTYgQEAgcm0gLWZyICRSUE1fQlVJTERfUk9PVAogJXtfZGF0YWRpcn0vc2Vy dmljZXMvYW1hcm9rX2hlbGl4ZW5naW5lX3BsdWdpbi5kZXNrdG9wCiAlZW5kaWYKIAotCiAlZmls ZXMgdmlzdWFsaXNhdGlvbgogJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICV7X2JpbmRpcn0vYW1h cm9rX2xpYnZpc3VhbAogCiAKLQogJWNoYW5nZWxvZworKiBUaHUgTm92IDI5IDIwMDcgUmV4IERp ZXRlciA8cmRpZXRlcltBVF1mZWRvcmFwcm9qZWN0Lm9yZz4gMS40LjctMTIKKy0gLS13aXRoLW1w NHYyIChyaCMzNDYwMTEpCistIGZpeCBhc2Yvd21hIHN1cHBvcnQgKHJoIzM0NjAxMSxrZGUjMTUx NzMzKQorCiAqIFdlZCBOb3YgMjEgMjAwNyBSZXggRGlldGVyIDxyZGlldGVyW0FUXWZlZG9yYXBy b2plY3Qub3JnPiAxLjQuNy0xMQogLSBkeW5hbWljIG1vZGUgZmxvb2RzIHBsYXlsaXN0IC4uLiAo a2RlICMxNDgzMTcpCiAK