X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=wlxqm3Aje68i81qW/7YyRUaNnoH1Yv0IiaUGteKpgu0=; b=LsGm+ypnHrH83BFzadlPZQ2YIfTPmJqY9EXI2KhfLGQlqQlU7Fp7yz0oxSJy3tfP9H Ey76PUOQGCUgnZWshP5Lw2/PYqIRgVpXh8+NTL+gk+avQZ2i6MiSA+sy+ET0Wg8Ck984 kmmQVCwX1nxYgt5YykqTfcfT7vz2vxCqv/qTJnVY/CvfHRoP+JGKyWBTgTt6qaEw0PYW /0vkvZS+4/6sMi5TW+I6nD5quNvLJJdqWsDaMhlAyAndLJr7YrKmKly+9vqqNR1dWxFY SpRcAhGDmXzbJLON0hHZA5cJZXjxIER/gh7p9OuTPdsPR2gs7EF+BvlmInOR5jhn9ihL ryOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wlxqm3Aje68i81qW/7YyRUaNnoH1Yv0IiaUGteKpgu0=; b=U/jQ5X2kPoWYHQi4029xQf4HQnP05XI1IaPj0mlaXvQluxGXf/+Biup7L49DztfXt+ fPghSNTDl0TKznLXeFtTscuV1+VX7qVmTRZGVOCkQ/sujOQlEvUk8SMbtHvPoDkn63cC BMqxzK84lGC7gcLwboZFaun8FZXdQQ+zdDsMnPfOUlGLEePoRnvvBovC5cHdUvOYFBB2 vnWLwU5ThszXEVG12cezq9y+vTo/kxbflVMRx8JyTiK2ZU/lkzgUCCJHx1zgetDWoHxY AlP/PfFKwj8l2sEHLhpyjHjuVr7U/kgiMen89pFN+6sLQVWaFios2z6w/VZr2Am4ibGB t6yQ== X-Gm-Message-State: AFeK/H05EI+OF72Y5fBxon6/EdYzjFqfrHMmqyiydnu6GxU3Onz2NlEv4O/DnyhPDQFW3JVjpp59ri0DHuDcxA== X-Received: by 10.223.149.66 with SMTP id 60mr17819766wrs.29.1489864392784; Sat, 18 Mar 2017 12:13:12 -0700 (PDT) MIME-Version: 1.0 From: "Luis de Arquer (ldearquer AT gmail DOT com) [via geda-user AT delorie DOT com]" Date: Sat, 18 Mar 2017 20:13:11 +0100 Message-ID: Subject: [geda-user] Rubberband keeping lines direction To: geda-user Content-Type: multipart/mixed; boundary=94eb2c0defcee56dbe054b061541 Reply-To: geda-user AT delorie DOT com --94eb2c0defcee56dbe054b061541 Content-Type: text/plain; charset=UTF-8 The rubberband "Keep-direction" mod is very much finished! It can already be used as is, even though it may interfere legacy rubberband mode. Though there are still a couple of corner cases where it can still get more annoying than helpful, it works fine otherwise. I am attaching the full patch to the latest git HEAD. If you can give it a go, please do, feedback is appreciated. Luis --94eb2c0defcee56dbe054b061541 Content-Type: text/x-patch; charset=UTF-8; name="rubberband.patch" Content-Disposition: attachment; filename="rubberband.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 ZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQppbmRleCAwNThj MTBmLi5kODhmYjY2IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrIGIvc3JjL01ha2Vm aWxlLmFtCkBAIC02NCw2ICs2NCw4IEBAIFBDQl9TUkNTID0gXAogCWVkaWZfcGFyc2UuaCBcCiAJ ZXJyb3IuYyBcCiAJZXJyb3IuaCBcCisJZmdlb21ldHJ5LmMgXAorCWZnZW9tZXRyeS5oIFwKIAlm aWxlLmMgXAogCWZpbGUuaCBcCiAJZmluZC5jIFwKZGlmZiAtLWdpdCBhL3NyYy9jcmVhdGUuYyBi L3NyYy9jcmVhdGUuYwppbmRleCBkNDFiNDU2Li43MTkxNmRhIDEwMDY0NAotLS0gYS9zcmMvY3Jl YXRlLmMKKysrIGIvc3JjL2NyZWF0ZS5jCkBAIC0xMDIwLDYgKzEwMjAsOSBAQCBDcmVhdGVOZXdS dWJiZXJiYW5kRW50cnkgKExheWVyVHlwZSAqTGF5ZXIsCiAgIHB0ci0+TGF5ZXIgPSBMYXllcjsK ICAgcHRyLT5MaW5lID0gTGluZTsKICAgcHRyLT5Nb3ZlZFBvaW50ID0gTW92ZWRQb2ludDsKKyAg cHRyLT5EWCA9IDA7CisgIHB0ci0+RFkgPSAwOworICBwdHItPmRlbHRhX2lzX3ZhbGlkID0gMDsK ICAgcmV0dXJuIChwdHIpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvY3Jvc3NoYWlyLmMgYi9zcmMv Y3Jvc3NoYWlyLmMKaW5kZXggYzhjZTY1My4uOWJiOWI3NyAxMDA2NDQKLS0tIGEvc3JjL2Nyb3Nz aGFpci5jCisrKyBiL3NyYy9jcm9zc2hhaXIuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg Im15bWVtLmgiCiAjaW5jbHVkZSAic2VhcmNoLmgiCiAjaW5jbHVkZSAicG9seWdvbi5oIgorI2lu Y2x1ZGUgImZnZW9tZXRyeS5oIgogCiAjaWZkZWYgSEFWRV9MSUJETUFMTE9DCiAjaW5jbHVkZSA8 ZG1hbGxvYy5oPgpAQCAtNDQ3LDkgKzQ0OCwyMCBAQCBYT1JEcmF3TW92ZU9yQ29weU9iamVjdCAo aGlkR0MgZ2MpCiAgICAgICB7CiAJTGluZVR5cGUgKmxpbmUgPSAoTGluZVR5cGUgKikgQ3Jvc3No YWlyLkF0dGFjaGVkT2JqZWN0LlB0cjI7CiAKLQlYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywgbGlu ZS0+UG9pbnQxLlggKyBkeCwgbGluZS0+UG9pbnQxLlkgKyBkeSwKKwlpID0gQ3Jvc3NoYWlyLkF0 dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROOworCXB0ciA9IENyb3NzaGFpci5BdHRhY2hlZE9iamVj dC5SdWJiZXJiYW5kOworCWlmIChpID09IDIgJiYgcHRyLT5kZWx0YV9pc192YWxpZCkKKwl7CisJ CVhPUkRyYXdBdHRhY2hlZExpbmUgKGdjLCBsaW5lLT5Qb2ludDEuWCArIHB0clswXS5EWCwgbGlu ZS0+UG9pbnQxLlkgKyBwdHJbMF0uRFksCisJICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUt PlBvaW50Mi5YICsgcHRyWzFdLkRYLCBsaW5lLT5Qb2ludDIuWSArIHB0clsxXS5EWSwKKwkgICAg ICAgICAgICAgICAgICAgICBsaW5lLT5UaGlja25lc3MpOworCX0KKwllbHNlCisJeworCQlYT1JE cmF3QXR0YWNoZWRMaW5lIChnYywgbGluZS0+UG9pbnQxLlggKyBkeCwgbGluZS0+UG9pbnQxLlkg KyBkeSwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS0+UG9pbnQyLlggKyBkeCwgbGlu ZS0+UG9pbnQyLlkgKyBkeSwKIAkgICAgICAgICAgICAgICAgICAgICBsaW5lLT5UaGlja25lc3Mp OworCX0KIAlicmVhazsKICAgICAgIH0KIApAQCAtNTY5LDkgKzU4MSwxOCBAQCBYT1JEcmF3TW92 ZU9yQ29weU9iamVjdCAoaGlkR0MgZ2MpCiAJICAgICAgcG9pbnQxID0gJnB0ci0+TGluZS0+UG9p bnQxOwogCSAgICAgIHBvaW50MiA9ICZwdHItPkxpbmUtPlBvaW50MjsKIAkgICAgfQotCSAgWE9S RHJhd0F0dGFjaGVkTGluZSAoZ2MsIHBvaW50MS0+WCwgcG9pbnQxLT5ZLAotCSAgICAgICAgICAg ICAgICAgICAgICAgcG9pbnQyLT5YICsgZHgsIHBvaW50Mi0+WSArIGR5LAotCSAgICAgICAgICAg ICAgICAgICAgICAgcHRyLT5MaW5lLT5UaGlja25lc3MpOworCSAgICBpZiAocHRyLT5EWCA9PSAt MSkKKyAgICAgIHsKKwkgICAgICBYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywgcG9pbnQxLT5YLCBw b2ludDEtPlksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50Mi0+WCArIGR4LCBw b2ludDItPlkgKyBkeSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyLT5MaW5lLT5U aGlja25lc3MpOworCSAgICB9CisJICAgIGVsc2UKKwkgICAgeworCSAgICAgIFhPUkRyYXdBdHRh Y2hlZExpbmUgKGdjLCBwb2ludDEtPlgsIHBvaW50MS0+WSwKKwkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcG9pbnQyLT5YICsgcHRyLT5EWCwgcG9pbnQyLT5ZICsgcHRyLT5EWSwKKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHRyLT5MaW5lLT5UaGlja25lc3MpOworCSAgICB9CiAJ fQogICAgICAgZWxzZSBpZiAocHRyLT5Nb3ZlZFBvaW50ID09ICZwdHItPkxpbmUtPlBvaW50MSkK IAlYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywKQEAgLTEwMjEsNiArMTA0Miw5NCBAQCBGaXRDcm9z c2hhaXJJbnRvR3JpZCAoQ29vcmQgWCwgQ29vcmQgWSkKIAkgIGVsc2UKIAkgICAgbmVhcmVzdF9n cmlkX3ggPSBNYXJrZWQuWDsKIAl9CisJICAgIC8qIE1vdmUga2VlcGluZyBydWJiZXJiYW5kIGxp bmVzIGRpcmVjdGlvbiAqLworICAgICAgaWYgKCBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuVHlw ZSA9PSBMSU5FX1RZUEUgJiYKKyAgICAgICAgICAgIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5S dWJiZXJiYW5kTiA9PSAyKQorICAgICAgeworICAgICAgICBMaW5lVHlwZSAqbGluZSA9IChMaW5l VHlwZSopIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5QdHIyOworICAgICAgICBMaW5lVHlwZSAq cnViMSA9IChMaW5lVHlwZSopIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kWzBd LkxpbmU7CisgICAgICAgIExpbmVUeXBlICpydWIyID0gKExpbmVUeXBlKikgQ3Jvc3NoYWlyLkF0 dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmRbMV0uTGluZTsKKworICAgICAgICAvKiBDcmVhdGUgZmxv YXQgcG9pbnQtdmVjdG9yIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgbGluZXMgKi8KKyAgICAgICAg ZmxpbmUgZm1haW4sIGZydWIxLCBmcnViMjsKKyAgICAgICAgZm1haW4gPSBmbGluZV9jcmVhdGVf ZnJvbV9wb2ludHMgKCZsaW5lLT5Qb2ludDEsICZsaW5lLT5Qb2ludDIpOworICAgICAgICBpZiAo Q3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmRbMF0uTW92ZWRQb2ludCA9PSAmcnVi MS0+UG9pbnQxKQorICAgICAgICAgIGZydWIxID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgm cnViMS0+UG9pbnQxLCAmcnViMS0+UG9pbnQyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGZy dWIxID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgmcnViMS0+UG9pbnQyLCAmcnViMS0+UG9p bnQxKTsKKyAgICAgICAgCisgICAgICAgIGlmIChDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnVi YmVyYmFuZFsxXS5Nb3ZlZFBvaW50ID09ICZydWIyLT5Qb2ludDEpCisgICAgICAgICAgZnJ1YjIg PSBmbGluZV9jcmVhdGVfZnJvbV9wb2ludHMgKCZydWIyLT5Qb2ludDEsICZydWIyLT5Qb2ludDIp OworICAgICAgICBlbHNlCisgICAgICAgICAgZnJ1YjIgPSBmbGluZV9jcmVhdGVfZnJvbV9wb2lu dHMgKCZydWIyLT5Qb2ludDIsICZydWIyLT5Qb2ludDEpOworICAgICAgICAKKyAgICAgICAgLyog SWYgdGhleSBhcmUgdmFsaWQgKG5vbi1udWxsIGRpcmVjdGlvbnMpIHdlIGNhcnJ5IG9uICovCisg ICAgICAgIGlmIChmbGluZV9pc192YWxpZChmbWFpbikgJiYgZmxpbmVfaXNfdmFsaWQoZnJ1YjEp ICYmIGZsaW5lX2lzX3ZhbGlkKGZydWIyKSkKKyAgICAgICAgeworICAgICAgICAgIGZ2ZWN0b3Ig Zm1vdmU7CisgICAgICAgICAgCisgICAgICAgICAgZnZlY3RvciBmaW50ZXJzZWN0aW9uID0gZmxp bmVfaW50ZXJzZWN0aW9uKGZydWIxLCBmcnViMik7CisgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgIGlmICghZnZlY3Rvcl9pc19udWxsKGZpbnRlcnNlY3Rpb24pKQorICAgICAgICAgIHsK KyAgICAgICAgICAJLyogTW92ZW1lbnQgZGlyZWN0aW9uIGRlZmluZWQgYXMgZnJvbSBtaWQgbGlu ZSB0byBpbnRlcnNlY3Rpb24gcG9pbnQgKi8KKyAgICAgICAgICAJZnZlY3RvciBmbWlkOworICAg ICAgICAgIAlmbWlkLnggPSAoKGRvdWJsZSlsaW5lLT5Qb2ludDIuWCArIGxpbmUtPlBvaW50MS5Y KSAvIDIuMDsKKyAgICAgICAgICAJZm1pZC55ID0gKChkb3VibGUpbGluZS0+UG9pbnQyLlkgKyBs aW5lLT5Qb2ludDEuWSkgLyAyLjA7CisgICAgICAgICAgCWZtb3ZlLnggPSBmaW50ZXJzZWN0aW9u LnggLSBmbWlkLng7CisgICAgICAgICAgCWZtb3ZlLnkgPSBmaW50ZXJzZWN0aW9uLnkgLSBmbWlk Lnk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAg ICAvKiBObyBpbnRlcnNlY3Rpb24uIFJ1YmJlcmJhbmQgbGluZXMgYXJlIHBhcmFsbGVsICovCisg ICAgICAgICAgICBmbW92ZS54ID0gZnJ1YjEuZGlyZWN0aW9uLng7CisgICAgICAgICAgICBmbW92 ZS55ID0gZnJ1YjEuZGlyZWN0aW9uLnk7CisgICAgICAgICAgfSAgICAgICAJCisgICAgICAgIAkg ICAgICAgIAkKKyAgICAgICAgCWlmICghZnZlY3Rvcl9pc19udWxsKGZtb3ZlKSkKKyAgICAgICAg CXsKKyAgICAgICAgICAgIGZ2ZWN0b3Jfbm9ybWFsaXplKCZmbW92ZSk7CisKKyAgICAgICAgICAg IC8qIEN1cnNvciBkZWx0YSB2ZWN0b3IgKi8KKyAgICAgICAgICAgIGZ2ZWN0b3IgZmN1cnNvcl9k ZWx0YTsKKyAgICAgICAgICAgIGZjdXJzb3JfZGVsdGEueCA9IENyb3NzaGFpci5YIC0gTWFya2Vk Llg7CisgICAgICAgICAgICBmY3Vyc29yX2RlbHRhLnkgPSBDcm9zc2hhaXIuWSAtIE1hcmtlZC5Z OworCisgICAgICAgICAgICAvKiBDdXJzb3IgZGVsdGEgcHJvamVjdGlvbiBvbiBtb3ZlbWVudCBk aXJlY3Rpb24gKi8KKyAgICAgICAgICAgIGRvdWJsZSBhbW91bnRfbW92ZWQgPSBmdmVjdG9yX2Rv dChmbW92ZSwgZmN1cnNvcl9kZWx0YSk7CisKKyAgICAgICAgICAgIC8qIFNjYWxlIGZtb3ZlIGJ5 IGNhbGN1bGF0ZWQgYW1vdW50ICovCisgICAgICAgICAgICBmdmVjdG9yIGZtb3ZlX3RvdGFsOwor ICAgICAgICAgICAgZm1vdmVfdG90YWwueCA9IGZtb3ZlLnggKiBhbW91bnRfbW92ZWQ7CisgICAg ICAgICAgICBmbW92ZV90b3RhbC55ID0gZm1vdmUueSAqIGFtb3VudF9tb3ZlZDsKKworICAgICAg ICAgICAgLyogVXBkYXRlIHZhbHVlcyBmb3IgbmVhcmVzdF9ncmlkIGFuZCBSdWJiZXJiYW5kIGxp bmVzICovCisgICAgICAgICAgICBuZWFyZXN0X2dyaWRfeCA9IE1hcmtlZC5YICsgZm1vdmVfdG90 YWwueDsKKyAgICAgICAgICAgIG5lYXJlc3RfZ3JpZF95ID0gTWFya2VkLlkgKyBmbW92ZV90b3Rh bC55OworCisgICAgICAgICAgICAvKiBNb3ZlIHJ1YmJlcmJhbmQ6IGZtb3ZlX3RvdGFswrdub3Jt YWwgPSBmbW92ZV9ydWJiZXJiYW5kwrdub3JtYWwKKyAgICAgICAgICAgICAqIHdoZXJlIG5vcm1h bCBpcyB0aGUgbW92aW5nIGxpbmUgbm9ybWFsCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg IGZ2ZWN0b3IgZm5vcm1hbDsKKyAgICAgICAgICAgIGZub3JtYWwueCA9IGZtYWluLmRpcmVjdGlv bi55OworICAgICAgICAgICAgZm5vcm1hbC55ID0gLWZtYWluLmRpcmVjdGlvbi54OworICAgICAg ICAgICAgaWYgKGZ2ZWN0b3JfZG90KGZub3JtYWwsIGZtb3ZlKSA8IDApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIGZub3JtYWwueCA9IC1mbm9ybWFsLng7CisgICAgICAgICAgICAgIGZu b3JtYWwueSA9IC1mbm9ybWFsLnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUg cnViMV9tb3ZlID0gYW1vdW50X21vdmVkICogZnZlY3Rvcl9kb3QoZm1vdmUsIGZub3JtYWwpIC8g ZnZlY3Rvcl9kb3QoZnJ1YjEuZGlyZWN0aW9uLCBmbm9ybWFsKTsKKyAgICAgICAgICAgIENyb3Nz aGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kWzBdLkRYID0gcnViMV9tb3ZlKmZydWIxLmRp cmVjdGlvbi54OworICAgICAgICAgICAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJh bmRbMF0uRFkgPSBydWIxX21vdmUqZnJ1YjEuZGlyZWN0aW9uLnk7CisgICAgICAgICAgICBDcm9z c2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZFswXS5kZWx0YV9pc192YWxpZCA9IDE7Cisg ICAgICAgICAgICAKKyAgICAgICAgICAgIGRvdWJsZSBydWIyX21vdmUgPSBhbW91bnRfbW92ZWQg KiBmdmVjdG9yX2RvdChmbW92ZSwgZm5vcm1hbCkgLyBmdmVjdG9yX2RvdChmcnViMi5kaXJlY3Rp b24sIGZub3JtYWwpOworICAgICAgICAgICAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJl cmJhbmRbMV0uRFggPSBydWIyX21vdmUqZnJ1YjIuZGlyZWN0aW9uLng7CisgICAgICAgICAgICBD cm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZFsxXS5EWSA9IHJ1YjJfbW92ZSpmcnVi Mi5kaXJlY3Rpb24ueTsKKyAgICAgICAgICAgIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJi ZXJiYW5kWzFdLmRlbHRhX2lzX3ZhbGlkID0gMTsKKyAgICAgICAgCX0KKwkgICAgICB9CisgICAg ICB9CiAKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9mZ2VvbWV0cnkuYyBiL3NyYy9mZ2VvbWV0 cnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWY3YjZkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2ZnZW9tZXRyeS5jCkBAIC0wLDAgKzEsMTYyIEBACisvKiEKKyAqIFxm aWxlIHNyYy9mZ2VvbWV0cnkuYworICoKKyAqIFxicmllZiBGbG9hdGluZyBwb2ludCBnZW9tZXRy eSBoZWxwZXJzLgorICoKKyAqIDxocj4KKyAqCisgKiA8aDE+PGI+Q29weXJpZ2h0LjwvYj48L2gx PlxuCisgKgorICogUENCLCBpbnRlcmFjdGl2ZSBwcmludGVkIGNpcmN1aXQgYm9hcmQgZGVzaWdu CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEx1aXMgZGUgQXJxdWVyIDxsZGVhcnF1ZXJAZ21h aWwuY29tPgorICoKKyAqIFNvbWUgY29kZSBiYXNlZCBvbiBwb2x5Z29uMS5jOgorICogQ29weXJp Z2h0IChDKSAyMDA2IGhhcnJ5IGVhdG9uCisgKgorICogYmFzZWQgb246CisgKgorICogcG9seV9C b29sZWFuOiBhIHBvbHlnb24gY2xpcCBsaWJyYXJ5CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3 ICBBbGV4ZXkgTmlraXRpbiwgTWljaGFlbCBMZW9ub3YKKyAqCisgKiAoYWxzbyB0aGUgYXV0aG9y cyBvZiB0aGUgcGFwZXIgZGVzY3JpYmluZyB0aGUgYWN0dWFsIGFsZ29yaXRobSkKKyAqCisgKiBs ZW9ub3ZAcHJvcHJvLmlpcy5uc2suc3UKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAq LworCisjaW5jbHVkZSAiZmdlb21ldHJ5LmgiCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg PHN0ZGlvLmg+CisKKyNkZWZpbmUgTUlOX0NPTVBPTkVOVAkwLjAwMDAwMQorCitpbnQgZnZlY3Rv cl9pc19udWxsIChmdmVjdG9yIHYpCit7CisJcmV0dXJuIGZhYnModi54KSA8IE1JTl9DT01QT05F TlQgJiYgZmFicyh2LnkpIDwgTUlOX0NPTVBPTkVOVDsKK30KKworZG91YmxlIGZ2ZWN0b3JfZG90 IChmdmVjdG9yIHYxLCBmdmVjdG9yIHYyKQoreworCXJldHVybiB2MS54ICogdjIueCArIHYxLnkg KiB2Mi55OworfQorCisKK3ZvaWQgZnZlY3Rvcl9ub3JtYWxpemUgKGZ2ZWN0b3IgKnYpCit7CisJ ZG91YmxlIG1vZHVsZSA9IHNxcnQodi0+eCAqIHYtPnggKyB2LT55ICogdi0+eSk7CisJCisJdi0+ eCAvPSBtb2R1bGU7CisJdi0+eSAvPSBtb2R1bGU7Cit9CisKK2ludCBmbGluZV9pc192YWxpZChm bGluZSBsKQoreworCXJldHVybiAhZnZlY3Rvcl9pc19udWxsKGwuZGlyZWN0aW9uKTsKK30KKwor ZmxpbmUgZmxpbmVfY3JlYXRlKExpbmVUeXBlICpsaW5lKQoreworCWZsaW5lIHJldDsKKwkKKwly ZXQucG9pbnQueCA9IGxpbmUtPlBvaW50MS5YOworCXJldC5wb2ludC55ID0gbGluZS0+UG9pbnQx Llk7CisJcmV0LmRpcmVjdGlvbi54ID0gbGluZS0+UG9pbnQyLlggLSBsaW5lLT5Qb2ludDEuWDsK KwlyZXQuZGlyZWN0aW9uLnkgPSBsaW5lLT5Qb2ludDIuWSAtIGxpbmUtPlBvaW50MS5ZOworCQor CWlmICghZnZlY3Rvcl9pc19udWxsIChyZXQuZGlyZWN0aW9uKSkKKwkJZnZlY3Rvcl9ub3JtYWxp emUoICZyZXQuZGlyZWN0aW9uICk7CisJCisJcmV0dXJuIHJldDsKK30KKworCitmbGluZSBmbGlu ZV9jcmVhdGVfZnJvbV9wb2ludHMoUG9pbnRUeXBlICpiYXNlX3BvaW50LCBQb2ludFR5cGUgKm90 aGVyX3BvaW50KQoreworCWZsaW5lIHJldDsKKwkKKwlyZXQucG9pbnQueCA9IGJhc2VfcG9pbnQt Plg7CisJcmV0LnBvaW50LnkgPSBiYXNlX3BvaW50LT5ZOworCXJldC5kaXJlY3Rpb24ueCA9IG90 aGVyX3BvaW50LT5YIC0gYmFzZV9wb2ludC0+WDsKKwlyZXQuZGlyZWN0aW9uLnkgPSBvdGhlcl9w b2ludC0+WSAtIGJhc2VfcG9pbnQtPlk7CisJCisJaWYgKCFmdmVjdG9yX2lzX251bGwgKHJldC5k aXJlY3Rpb24pKQorCQlmdmVjdG9yX25vcm1hbGl6ZSggJnJldC5kaXJlY3Rpb24gKTsKKwkKKwly ZXR1cm4gcmV0OworfQorCisKK2Z2ZWN0b3IgZmxpbmVfaW50ZXJzZWN0aW9uKGZsaW5lIGwxLCBm bGluZSBsMikKK3sKKwlmdmVjdG9yIHJldDsKKwlyZXQueCA9IDA7CisJcmV0LnkgPSAwOworCisJ ZG91YmxlIGxpbmVzX2RvdCA9IGZ2ZWN0b3JfZG90IChsMS5kaXJlY3Rpb24sIGwyLmRpcmVjdGlv bik7CisJaWYgKGZhYnMobGluZXNfZG90KSA+IDAuOTkwICkKKwl7CisJCS8qIENvbnNpZGVyIHRo ZW0gcGFyYWxsZWwuIFJldHVybiBudWxsIHBvaW50ICh2ZWN0b3IpICovCisJCXJldHVybiByZXQ7 CisJfQorCQorCS8qCisJICogKioqIEZyb20gcG9seWdvbjEuYyAqKioKKwkgKiBXZSBoYXZlIHRo ZSBsaW5lczoKKwkgKiBsMTogcDEgKyBzKmQxCisJICogbDI6IHAyICsgdCpkMgorCSAqIEFuZCB3 ZSB3YW50IHRvIGtub3cgdGhlIGludGVyc2VjdGlvbiBwb2ludC4KKwkgKiBDYWxjdWxhdGUgdDoK KwkgKiBwMSArIHMqZDEgPSBwMiArIHQqZDIKKwkgKiB3aGljaCBpcyBzaW1pbGFyIHRvIHRoZSB0 d28gZXF1YXRpb25zOgorCSAqIHAxeCArIHMgKiBkMXggPSBwMnggKyB0ICogZDJ4CisJICogcDF5 ICsgcyAqIGQxeSA9IHAyeSArIHQgKiBkMnkKKwkgKiBNdWx0aXBseWluZyB0aGVzZSBieSBkMXkg cmVzcC4gZDF4IGdpdmVzOgorCSAqIGQxeSAqIHAxeCArIHMgKiBkMXggKiBkMXkgPSBkMXkgKiBw MnggKyB0ICogZDF5ICogZDJ4CisJICogZDF4ICogcDF5ICsgcyAqIGQxeCAqIGQxeSA9IGQxeCAq IHAyeSArIHQgKiBkMXggKiBkMnkKKwkgKiBTdWJ0cmFjdGluZyB0aGVzZSBnaXZlczoKKwkgKiBk MXkgKiBwMXggLSBkMXggKiBwMXkgPSBkMXkgKiBwMnggLSBkMXggKiBwMnkgKyB0ICogKCBkMXkg KiBkMnggLSBkMXggKiBkMnkgKQorCSAqIFNvIHQgY2FuIGJlIGlzb2xhdGVkOgorCSAqIHQgPSAo ZDF5ICogKCBwMXggLSBwMnggKSArIGQxeCAqICggLSBwMXkgKyBwMnkgKSkgLyAoIGQxeSAqIGQy eCAtIGQxeCAqIGQyeSApCisJICogYW5kIHMgY2FuIGJlIGZvdW5kIHNpbWlsYXJseQorCSAqIHMg PSAoZDJ5ICogKCBwMnggLSBwMXggKSArIGQyeCAqICggcDF5IC0gcDJ5ICkpIC8gKCBkMnkgKiBk MXggLSBkMnggKiBkMXkpCisJICovCisJCisJZG91YmxlIHQsczsKKwlkb3VibGUgcDF4LCBwMXks IGQxeCwgZDF5OworCWRvdWJsZSBwMngsIHAyeSwgZDJ4LCBkMnk7CisJCisJcDF4ID0gbDEucG9p bnQueDsKKwlwMXkgPSBsMS5wb2ludC55OworCWQxeCA9IGwxLmRpcmVjdGlvbi54OworCWQxeSA9 IGwxLmRpcmVjdGlvbi55OworCQorCXAyeCA9IGwyLnBvaW50Lng7CisJcDJ5ID0gbDIucG9pbnQu eTsKKwlkMnggPSBsMi5kaXJlY3Rpb24ueDsKKwlkMnkgPSBsMi5kaXJlY3Rpb24ueTsKKwkKKwl0 ID0gKGQxeSAqICggcDF4IC0gcDJ4ICkgKyBkMXggKiAoIC0gcDF5ICsgcDJ5ICkpIC8gKCBkMXkg KiBkMnggLSBkMXggKiBkMnkgKTsKKwlzID0gKGQyeSAqICggcDJ4IC0gcDF4ICkgKyBkMnggKiAo IHAxeSAtIHAyeSApKSAvICggZDJ5ICogZDF4IC0gZDJ4ICogZDF5ICk7CisKKwlyZXQueCA9IHAy eCArIHQgKiBkMng7CisJcmV0LnkgPSBwMnkgKyB0ICogZDJ5OworCQorCXJldHVybiByZXQ7Cit9 CisKKwpkaWZmIC0tZ2l0IGEvc3JjL2ZnZW9tZXRyeS5oIGIvc3JjL2ZnZW9tZXRyeS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZjlkZDcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvZmdlb21ldHJ5LmgKQEAgLTAsMCArMSw2OCBAQAorLyohCisgKiBcZmlsZSBzcmMvZmdl b21ldHJ5LmgKKyAqCisgKiBcYnJpZWYgRmxvYXRpbmcgcG9pbnQgZ2VvbWV0cnkgaGVscGVycy4K KyAqCisgKiA8aHI+CisgKgorICogPGgxPjxiPkNvcHlyaWdodC48L2I+PC9oMT5cbgorICoKKyAq IFBDQiwgaW50ZXJhY3RpdmUgcHJpbnRlZCBjaXJjdWl0IGJvYXJkIGRlc2lnbgorICoKKyAqIENv cHlyaWdodCAoQykgMjAxNyBMdWlzIGRlIEFycXVlciA8bGRlYXJxdWVyQGdtYWlsLmNvbT4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUs IENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIFBDQl9GR0VPTUVUUllf SAorI2RlZmluZSBQQ0JfRkdFT01FVFJZX0gKKworI2luY2x1ZGUgImdsb2JhbC5oIgorCit0eXBl ZGVmIHN0cnVjdAoreworCWRvdWJsZSB4OworCWRvdWJsZSB5OworfSBmdmVjdG9yOworCisKKy8q IGZsaW5lcyBzaG91bGQgYmUgY3JlYXRlZCB0aHJvdWdoIGZsaW5lX2NyZWF0ZSogZnVuY3Rpb25z LgorICogQWx0ZXJuYXRpdmVseSwgdGhleSBjYW4gYmUgY3JlYXRlZCBtYW51YWxseSBhcyBsb25n IGFzCisgKiBkaXJlY3Rpb24gaXMgbm9ybWFsaXplZAorICovCit0eXBlZGVmIHN0cnVjdAorewor CWZ2ZWN0b3IgcG9pbnQ7CisJZnZlY3RvciBkaXJlY3Rpb247Cit9IGZsaW5lOworCitpbnQgZnZl Y3Rvcl9pc19udWxsKGZ2ZWN0b3Igdik7CisKKworLyogQW55IHZlY3RvciBnaXZlbiB0byB0aGUg Zm9sbG93aW5nIGZ1bmN0aW9ucyBoYXMgdG8gYmUgbm9uLW51bGwgKi8gICAKK2RvdWJsZSBmdmVj dG9yX2RvdCAoZnZlY3RvciB2MSwgZnZlY3RvciB2Mik7Cit2b2lkIGZ2ZWN0b3Jfbm9ybWFsaXpl IChmdmVjdG9yICp2KTsKKworCitmbGluZSBmbGluZV9jcmVhdGUoTGluZVR5cGUgKmxpbmUpOwor ZmxpbmUgZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzKFBvaW50VHlwZSAqYmFzZV9wb2ludCwgUG9p bnRUeXBlICpvdGhlcl9wb2ludCk7CisKK2ludCBmbGluZV9pc192YWxpZChmbGluZSBsKTsKKwor LyogbDEuZGlyZWN0aW9uIGFuZCBsMi5kaXJlY3Rpb24gYXJlIGV4cGVjdGVkIHRvIGJlIG5vcm1h bGl6ZWQgKi8KK2Z2ZWN0b3IgZmxpbmVfaW50ZXJzZWN0aW9uKGZsaW5lIGwxLCBmbGluZSBsMik7 CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zcmMvZ2xvYmFsLmggYi9zcmMvZ2xvYmFsLmgKaW5k ZXggZmM5NTI4OC4uNWMwOGM3ZiAxMDA2NDQKLS0tIGEvc3JjL2dsb2JhbC5oCisrKyBiL3NyYy9n bG9iYWwuaApAQCAtNjUyLDYgKzY1Miw5IEBAIHR5cGVkZWYgc3RydWN0CiAgIExheWVyVHlwZSAq TGF5ZXI7IC8qITwgTGF5ZXIgdGhhdCBob2xkcyB0aGUgbGluZS4gKi8KICAgTGluZVR5cGUgKkxp bmU7IC8qITwgVGhlIGxpbmUgaXRzZWxmLiAqLwogICBQb2ludFR5cGUgKk1vdmVkUG9pbnQ7IC8q ITwgQW5kIGZpbmFsbHkgdGhlIHBvaW50LiAqLworICBDb29yZCBEWDsKKyAgQ29vcmQgRFk7Cisg IGludCBkZWx0YV9pc192YWxpZDsKIH0gUnViYmVyYmFuZFR5cGU7CiAKIC8qIQpkaWZmIC0tZ2l0 IGEvc3JjL21vdmUuYyBiL3NyYy9tb3ZlLmMKaW5kZXggZGZhZjYxMy4uMmMxODYzNSAxMDA2NDQK LS0tIGEvc3JjL21vdmUuYworKysgYi9zcmMvbW92ZS5jCkBAIC04MDUsMzUgKzgwNSw4MCBAQCBN b3ZlT2JqZWN0QW5kUnViYmVyYmFuZCAoaW50IFR5cGUsIHZvaWQgKlB0cjEsIHZvaWQgKlB0cjIs IHZvaWQgKlB0cjMsCiB7CiAgIFJ1YmJlcmJhbmRUeXBlICpwdHI7CiAgIHZvaWQgKnB0cjI7Cisg IGludCBpOwogCiAgIC8qIHNldHVwIG9mZnNldCAqLwogICBEZWx0YVggPSBEWDsKICAgRGVsdGFZ ID0gRFk7Ci0KKyAgCiAgIC8qIG1vdmUgYWxsIHRoZSBsaW5lcy4uLiBhbmQgcmVzZXQgdGhlIGNv dW50ZXIgKi8KICAgcHRyID0gQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmQ7Ci0g IHdoaWxlIChDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZE4pCisgIGkgPSBDcm9z c2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZE47CisgIHdoaWxlIChpKQogICAgIHsKICAg ICAgIC8qIGZpcnN0IGNsZWFyIGFueSBtYXJrcyB0aGF0IHdlIG1hZGUgaW4gdGhlIGxpbmUgZmxh Z3MgKi8KICAgICAgIENMRUFSX0ZMQUcgKFJVQkJFUkVOREZMQUcsIHB0ci0+TGluZSk7CiAgICAg ICAvKiBvbmx5IHVwZGF0ZSB1bmRvIGxpc3QgaWYgYW4gYWN0dWFsIG1vdmVtZW50IGhhcHBlbmVk ICovCiAgICAgICBpZiAoRFggIT0gMCB8fCBEWSAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAg QWRkT2JqZWN0VG9Nb3ZlVW5kb0xpc3QgKExJTkVQT0lOVF9UWVBFLAorICAgICAgICAgIGlmICgh cHRyLT5kZWx0YV9pc192YWxpZCkKKyAgICAgICAgICB7CisgICAgICAgICAgICBBZGRPYmplY3RU b01vdmVVbmRvTGlzdCAoTElORVBPSU5UX1RZUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHB0ci0+TGF5ZXIsIHB0ci0+TGluZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHRyLT5Nb3ZlZFBvaW50LCBEWCwgRFkpOworICAgICAgICAgIH0KKyAgICAg ICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgQWRkT2JqZWN0VG9Nb3ZlVW5kb0xp c3QgKExJTkVQT0lOVF9UWVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dHItPkxheWVyLCBwdHItPkxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0ci0+TW92ZWRQb2ludCwgcHRyLT5EWCwgcHRyLT5EWSk7CisgICAgICAgICAgICBEZWx0YVgg PSBwdHItPkRYOworICAgICAgICAgICAgRGVsdGFZID0gcHRyLT5EWTsKKyAgICAgICAgICB9CiAg ICAgICAgICAgTW92ZUxpbmVQb2ludCAocHRyLT5MYXllciwgcHRyLT5MaW5lLCBwdHItPk1vdmVk UG9pbnQpOworICAgICAgICAgIC8qIFJlc3RvcmUgRGVsdGEgKi8KKyAgICAgICAgICBEZWx0YVgg PSBEWDsKKyAgICAgICAgICBEZWx0YVkgPSBEWTsKICAgICAgICAgfQotICAgICAgQ3Jvc3NoYWly LkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROLS07CisgICAgICBpLS07CiAgICAgICBwdHIrKzsK ICAgICB9CiAKICAgaWYgKERYID09IDAgJiYgRFkgPT0gMCkKKyAgeworICAJQ3Jvc3NoYWlyLkF0 dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROID0gMDsKICAgICByZXR1cm4gKE5VTEwpOworICB9CiAK LSAgQWRkT2JqZWN0VG9Nb3ZlVW5kb0xpc3QgKFR5cGUsIFB0cjEsIFB0cjIsIFB0cjMsIERYLCBE WSk7Ci0gIHB0cjIgPSBPYmplY3RPcGVyYXRpb24gKCZNb3ZlRnVuY3Rpb25zLCBUeXBlLCBQdHIx LCBQdHIyLCBQdHIzKTsKKwlwdHIgPSBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFu ZDsKKwlpID0gQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROOworCWlmIChUeXBl ID09IExJTkVfVFlQRSAmJiBpID09IDIgJiYgcHRyLT5kZWx0YV9pc192YWxpZCkKKwl7CisJICBM aW5lVHlwZSAqbGluZSA9IChMaW5lVHlwZSopIFB0cjI7CisJCQorIAkgIC8qIE1vdmUgUG9pbnQx IGZyb20gbGluZSAqLworICAgIEFkZE9iamVjdFRvTW92ZVVuZG9MaXN0IChMSU5FUE9JTlRfVFlQ RSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdHIxLCBsaW5lLCAmbGluZS0+UG9p bnQxLCBwdHItPkRYLCBwdHItPkRZKTsKKyAJICBEZWx0YVggPSBwdHItPkRYOworIAkgIERlbHRh WSA9IHB0ci0+RFk7CisgICAgTW92ZUxpbmVQb2ludCAoUHRyMSwgbGluZSwgJmxpbmUtPlBvaW50 MSk7CisgIAkKKyAJICAvKiBNb3ZlIFBvaW50MiBmcm9tIGxpbmUgKi8KKyAJICBwdHIrKzsKKyAg ICBBZGRPYmplY3RUb01vdmVVbmRvTGlzdCAoTElORVBPSU5UX1RZUEUsIAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdHIxLCBsaW5lLCAmbGluZS0+UG9pbnQyLCBwdHItPkRYLCBw dHItPkRZKTsKKyAJICBEZWx0YVggPSBwdHItPkRYOworIAkgIERlbHRhWSA9IHB0ci0+RFk7Cisg ICAgTW92ZUxpbmVQb2ludCAoUHRyMSwgbGluZSwgJmxpbmUtPlBvaW50Mik7CisgIH0KKyAgZWxz ZQorICB7CisgIAlBZGRPYmplY3RUb01vdmVVbmRvTGlzdCAoVHlwZSwgUHRyMSwgUHRyMiwgUHRy MywgRFgsIERZKTsKKyAgCXB0cjIgPSBPYmplY3RPcGVyYXRpb24gKCZNb3ZlRnVuY3Rpb25zLCBU eXBlLCBQdHIxLCBQdHIyLCBQdHIzKTsKKyAgfQorICAKICAgSW5jcmVtZW50VW5kb1NlcmlhbE51 bWJlciAoKTsKKyAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROID0gMDsKICAg cmV0dXJuIChwdHIyKTsKIH0KIAo= --94eb2c0defcee56dbe054b061541--