From owner-freebsd-ports Fri Apr 5 6:48:36 2002 Delivered-To: freebsd-ports@freebsd.org Received: from mailout05.sul.t-online.com (mailout05.sul.t-online.com [194.25.134.82]) by hub.freebsd.org (Postfix) with ESMTP id E01BD37B405; Fri, 5 Apr 2002 06:48:00 -0800 (PST) Received: from fwd11.sul.t-online.de by mailout05.sul.t-online.com with smtp id 16tV0Q-00021n-03; Fri, 05 Apr 2002 16:47:58 +0200 Received: from twoflower (320072111332-0001@[217.80.127.124]) by fwd11.sul.t-online.com with smtp id 16tV0B-0hwnceC; Fri, 5 Apr 2002 16:47:43 +0200 Reply-To: From: Jan.Stocker@t-online.de (Jan Stocker) To: "ports@FreeBSD. ORG" Cc: , "Kris Kennaway" Subject: May someone commit this.... Date: Fri, 5 Apr 2002 16:46:16 +0200 Message-ID: <000001c1dcb0$a3f546c0$fe02010a@twoflower.liebende.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0001_01C1DCC1.677E16C0" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 Importance: Normal In-Reply-To: <20020330141044.A84409@xor.obsecurity.org> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4 X-Sender: 320072111332-0001@t-dialin.net Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C1DCC1.677E16C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi, may someone commit my patch for ports/games/nethack3-gnome, Kris doesnt answer my mails... I have attached a diff with the new version from outer dir (diff -r -P -c nethack3-gnome.orig nethack3-gnome) Bug fixed: (maybe a cvs checkin comment worth) 1. Updated to 3.4.0 2. gnome files now included from /usr/X11R6/include/gnome-1.0 3. Added "getopt.c / getopt.h / getopt1.c" (and removed kpathsea library dependency) P L E A S E may someone tell me who is reponsible for giving me cvs write access to ports (or the mentioned port)??? ------=_NextPart_000_0001_01C1DCC1.677E16C0 Content-Type: application/octet-stream; name="nethack3-gnome.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nethack3-gnome.diff" ZGlmZiAtYyAtciAtUCBuZXRoYWNrMy1nbm9tZS5vcmlnL01ha2VmaWxlIG5ldGhhY2szLWdub21l L01ha2VmaWxlCioqKiBuZXRoYWNrMy1nbm9tZS5vcmlnL01ha2VmaWxlCVdlZCBEZWMgMTIgMDU6 MjQ6MDEgMjAwMQotLS0gbmV0aGFjazMtZ25vbWUvTWFrZWZpbGUJU3VuIE1hciAzMSAxNDoyNDo0 OSAyMDAyCioqKioqKioqKioqKioqKgoqKiogNiwxNCAqKioqCiAgIwogIAogIFBPUlROQU1FPQlu ZXRoYWNrCiEgUE9SVFZFUlNJT049CTMuMy4xCiAgQ0FURUdPUklFUz0JZ2FtZXMgZ25vbWUKISBN QVNURVJfU0lURVM9CWZ0cDovL2Z0cC5uZXRoYWNrLm9yZy9wdWIvbmV0aGFjay9uaDMzMS9zcmMv IFwKICAJCSR7TUFTVEVSX1NJVEVfR05VfQogIE1BU1RFUl9TSVRFX1NVQkRJUj0JJHtQT1JUTkFN RX0KICBQS0dOQU1FU1VGRklYPQktZ25vbWUKLS0tIDYsMTQgLS0tLQogICMKICAKICBQT1JUTkFN RT0JbmV0aGFjawohIFBPUlRWRVJTSU9OPQkzLjQuMAogIENBVEVHT1JJRVM9CWdhbWVzIGdub21l CiEgTUFTVEVSX1NJVEVTPQlmdHA6Ly9mdHAubmV0aGFjay5vcmcvcHViL25ldGhhY2svbmgzNDAv c3JjLyBcCiAgCQkke01BU1RFUl9TSVRFX0dOVX0KICBNQVNURVJfU0lURV9TVUJESVI9CSR7UE9S VE5BTUV9CiAgUEtHTkFNRVNVRkZJWD0JLWdub21lCmRpZmYgLWMgLXIgLVAgbmV0aGFjazMtZ25v bWUub3JpZy9kaXN0aW5mbyBuZXRoYWNrMy1nbm9tZS9kaXN0aW5mbwoqKiogbmV0aGFjazMtZ25v bWUub3JpZy9kaXN0aW5mbwlXZWQgRGVjIDEyIDA1OjI0OjAxIDIwMDEKLS0tIG5ldGhhY2szLWdu b21lL2Rpc3RpbmZvCVN1biBNYXIgMzEgMTQ6MjU6NTAgMjAwMgoqKioqKioqKioqKioqKioKKioq IDEgKioqKgohIE1ENSAobmV0aGFjay0zMzEudGd6KSA9IGQwNjAwY2U0Njk4YzgwZTVhZDFmOTE3 ZGVkMWMzNmQyCi0tLSAxIC0tLS0KISBNRDUgKG5ldGhhY2stMzQwLnRneikgPSAwMDkzZjE0ZmJi ZTQ0OWQ1YjE4OGJmYjZhYTRlYWU0ZgpkaWZmIC1jIC1yIC1QIG5ldGhhY2szLWdub21lLm9yaWcv ZmlsZXMvcGF0Y2gtaW5jbHVkZTo6Y29uZmlnLmggbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gt aW5jbHVkZTo6Y29uZmlnLmgKKioqIG5ldGhhY2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtaW5j bHVkZTo6Y29uZmlnLmgJV2VkIERlYyAxMiAwNToyNDowMSAyMDAxCi0tLSBuZXRoYWNrMy1nbm9t ZS9maWxlcy9wYXRjaC1pbmNsdWRlOjpjb25maWcuaAlTdW4gTWFyIDMxIDE0OjQxOjM2IDIwMDIK KioqKioqKioqKioqKioqCioqKiAxLDI0ICoqKioKISAqKiogaW5jbHVkZS9jb25maWcuaC5vcmln CVNhdCBKdWwgMjIgMDM6MTM6NTEgMjAwMAohIC0tLSBpbmNsdWRlL2NvbmZpZy5oCVNhdCBEZWMg IDkgMTM6MzE6MzQgMjAwMAogICoqKioqKioqKioqKioqKgogICoqKiA0NSw1MSAqKioqCiAgICAj ZGVmaW5lIFRUWV9HUkFQSElDUwkvKiBnb29kIG9sZCB0dHkgYmFzZWQgZ3JhcGhpY3MgKi8KICAg IC8qICNkZWZpbmUgWDExX0dSQVBISUNTICovCS8qIFgxMSBpbnRlcmZhY2UgKi8KICAgIC8qICNk ZWZpbmUgUVRfR1JBUEhJQ1MgKi8JLyogUXQgaW50ZXJmYWNlICovCiAgISAvKiAjZGVmaW5lIEdO T01FX0dSQVBISUNTICovCS8qIEdub21lIGludGVyZmFjZSAqLwogICAgCiAgICAvKgotICAgICog RGVmaW5lIHRoZSBkZWZhdWx0IHdpbmRvdyBzeXN0ZW0uICBUaGlzIHNob3VsZCBiZSBvbmUgdGhh dCBpcyBjb21waWxlZAogIC0tLSA0NSw1MSAtLS0tCiAgICAjZGVmaW5lIFRUWV9HUkFQSElDUwkv KiBnb29kIG9sZCB0dHkgYmFzZWQgZ3JhcGhpY3MgKi8KICAgIC8qICNkZWZpbmUgWDExX0dSQVBI SUNTICovCS8qIFgxMSBpbnRlcmZhY2UgKi8KICAgIC8qICNkZWZpbmUgUVRfR1JBUEhJQ1MgKi8J LyogUXQgaW50ZXJmYWNlICovCiEgISAjZGVmaW5lIEdOT01FX0dSQVBISUNTIAkvKiBHbm9tZSBp bnRlcmZhY2UgKi8KICAgIAogICAgLyoKLSAgICAqIERlZmluZSB0aGUgZGVmYXVsdCB3aW5kb3cg c3lzdGVtLiAgVGhpcyBzaG91bGQgYmUgb25lIHRoYXQgaXMgY29tcGlsZWQKICAqKioqKioqKioq KioqKioKISAqKiogMTUxLDE2MSAqKioqCiAgICAKICAgICNpZmRlZiBVTklYCiAgICAvKiBwYXRo IGFuZCBmaWxlIG5hbWUgZXh0ZW5zaW9uIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtICovCi0tLSAx LDI0IC0tLS0KISAqKiogaW5jbHVkZS9jb25maWcuaC5vcmlnCVRodSBNYXIgMjEgMDA6NDI6NDMg MjAwMgohIC0tLSBpbmNsdWRlL2NvbmZpZy5oCVN1biBNYXIgMzEgMTQ6Mzg6MzIgMjAwMgogICoq KioqKioqKioqKioqKgogICoqKiA0NSw1MSAqKioqCiAgICAjZGVmaW5lIFRUWV9HUkFQSElDUwkv KiBnb29kIG9sZCB0dHkgYmFzZWQgZ3JhcGhpY3MgKi8KICAgIC8qICNkZWZpbmUgWDExX0dSQVBI SUNTICovCS8qIFgxMSBpbnRlcmZhY2UgKi8KICAgIC8qICNkZWZpbmUgUVRfR1JBUEhJQ1MgKi8J LyogUXQgaW50ZXJmYWNlICovCiAgISAvKiAjZGVmaW5lIEdOT01FX0dSQVBISUNTICovCS8qIEdu b21lIGludGVyZmFjZSAqLworICAgLyogI2RlZmluZSBNU1dJTl9HUkFQSElDUyAqLwkvKiBXaW5k b3dzIE5ULCBDRSwgR3JhcGhpY3MgKi8KICAgIAogICAgLyoKICAtLS0gNDUsNTEgLS0tLQogICAg I2RlZmluZSBUVFlfR1JBUEhJQ1MJLyogZ29vZCBvbGQgdHR5IGJhc2VkIGdyYXBoaWNzICovCiAg ICAvKiAjZGVmaW5lIFgxMV9HUkFQSElDUyAqLwkvKiBYMTEgaW50ZXJmYWNlICovCiAgICAvKiAj ZGVmaW5lIFFUX0dSQVBISUNTICovCS8qIFF0IGludGVyZmFjZSAqLwohICEgI2RlZmluZSBHTk9N RV9HUkFQSElDUyAvKiBHbm9tZSBpbnRlcmZhY2UgKi8KISAgIC8qICNkZWZpbmUgTVNXSU5fR1JB UEhJQ1MgKi8JLyogV2luZG93cyBOVCwgQ0UsIEdyYXBoaWNzICovCiAgICAKICAgIC8qCiAgKioq KioqKioqKioqKioqCiEgKioqIDE2MywxNzMgKioqKgogICAgCiAgICAjaWZkZWYgVU5JWAogICAg LyogcGF0aCBhbmQgZmlsZSBuYW1lIGV4dGVuc2lvbiBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSAq LwoqKioqKioqKioqKioqKioKKioqIDMwLDM2ICoqKioKICAgICNlbmRpZgogICAgCiAgICAjaWZu ZGVmIENPTVBSRVNTCiEgLS0tIDE1MSwxNjEgLS0tLQogICAgCiAgICAjaWZkZWYgVU5JWAogICAg LyogcGF0aCBhbmQgZmlsZSBuYW1lIGV4dGVuc2lvbiBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSAq LwotLS0gMzAsMzYgLS0tLQogICAgI2VuZGlmCiAgICAKICAgICNpZm5kZWYgQ09NUFJFU1MKISAt LS0gMTYzLDE3MyAtLS0tCiAgICAKICAgICNpZmRlZiBVTklYCiAgICAvKiBwYXRoIGFuZCBmaWxl IG5hbWUgZXh0ZW5zaW9uIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtICovCioqKioqKioqKioqKioq KgoqKiogNDMsNjEgKioqKgogICAgCiAgICAjaWZuZGVmIENPTVBSRVNTCiAgKioqKioqKioqKioq KioqCiEgKioqIDE4NiwxOTIgKioqKgohICAgICogb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIGN1 cnJlbnQgZGlyZWN0b3J5LgohICAgICovCiEgICAjIGlmbmRlZiBIQUNLRElSCiEgISAjICBkZWZp bmUgSEFDS0RJUiAiL3Vzci9nYW1lcy9saWIvbmV0aGFja2RpciIJLyogbmV0aGFjayBkaXJlY3Rv cnkgKi8KICAgICMgZW5kaWYKICAgIAohICAgLyoKISAtLS0gMTg2LDE5MiAtLS0tCiEgICAgKiBv dGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiEgICAgKi8KISAgICMg aWZuZGVmIEhBQ0tESVIKISAhICMgIGRlZmluZSBIQUNLRElSICIvdXNyL2xvY2FsL3NoYXJlL25l dGhhY2siCS8qIG5ldGhhY2sgZGlyZWN0b3J5ICovCiAgICAjIGVuZGlmCiAgICAKLSAgIC8qCi0t LSA0Myw2MSAtLS0tCiAgICAKICAgICNpZm5kZWYgQ09NUFJFU1MKICAqKioqKioqKioqKioqKioK ISAqKiogMjAxLDIwNyAqKioqCiEgICAjICBpZmRlZiBfX0FQUExFX18KISAgICMgICAgZGVmaW5l IEhBQ0tESVIgIm5ldGhhY2tkaXIiCS8qIG5ldGhhY2sgZGlyZWN0b3J5ICovCiEgICAjICBlbHNl CiEgISAjICAgIGRlZmluZSBIQUNLRElSICIvdXNyL2dhbWVzL2xpYi9uZXRoYWNrZGlyIgohICAg IyAgZW5kaWYKICAgICMgZW5kaWYKICAgIAohIC0tLSAyMDEsMjA3IC0tLS0KISAgICMgIGlmZGVm IF9fQVBQTEVfXwohICAgIyAgICBkZWZpbmUgSEFDS0RJUiAibmV0aGFja2RpciIJLyogbmV0aGFj ayBkaXJlY3RvcnkgKi8KISAgICMgIGVsc2UKISAhICMgICAgZGVmaW5lIEhBQ0tESVIgIi91c3Iv bG9jYWwvc2hhcmUvbmV0aGFjayIKISAgICMgIGVuZGlmCiAgICAjIGVuZGlmCiAgICAKZGlmZiAt YyAtciAtUCBuZXRoYWNrMy1nbm9tZS5vcmlnL2ZpbGVzL3BhdGNoLXN5czo6dW5peDo6TWFrZWZp bGUuc3JjIG5ldGhhY2szLWdub21lL2ZpbGVzL3BhdGNoLXN5czo6dW5peDo6TWFrZWZpbGUuc3Jj CioqKiBuZXRoYWNrMy1nbm9tZS5vcmlnL2ZpbGVzL3BhdGNoLXN5czo6dW5peDo6TWFrZWZpbGUu c3JjCVdlZCBEZWMgMTIgMDU6MjQ6MDEgMjAwMQotLS0gbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0 Y2gtc3lzOjp1bml4OjpNYWtlZmlsZS5zcmMJU2F0IE1hciAzMCAyMjowNDozMiAyMDAyCioqKioq KioqKioqKioqKgoqKiogMSw1ICoqKioKICAqKiogc3lzL3VuaXgvTWFrZWZpbGUuc3JjLm9yaWcJ U2F0IEF1ZyAgNSAxMjo1Mjo1NyAyMDAwCiEgLS0tIHN5cy91bml4L01ha2VmaWxlLnNyYwlTYXQg RGVjICA5IDEzOjA5OjQ0IDIwMDAKICAqKioqKioqKioqKioqKioKICAqKiogMTM5LDE0NSAqKioq CiAgICAjIGRpcmVjdG9yaWVzLiAgVGhlIG9uZXMgZ2l2ZW4gYmVsb3cgaXMgdGhlIHVzdWFsIHNw b3QgZm9yIGxpbnV4IHN5c3RlbXMuCi0tLSAxLDUgLS0tLQogICoqKiBzeXMvdW5peC9NYWtlZmls ZS5zcmMub3JpZwlTYXQgQXVnICA1IDEyOjUyOjU3IDIwMDAKISAtLS0gc3lzL3VuaXgvTWFrZWZp bGUuc3JjCVNhdCBNYXIgMzAgMjE6MjU6MDMgMjAwMgogICoqKioqKioqKioqKioqKgogICoqKiAx MzksMTQ1ICoqKioKICAgICMgZGlyZWN0b3JpZXMuICBUaGUgb25lcyBnaXZlbiBiZWxvdyBpcyB0 aGUgdXN1YWwgc3BvdCBmb3IgbGludXggc3lzdGVtcy4KKioqKioqKioqKioqKioqCioqKiAxMywy MyAqKioqCiAgICAjIGRpcmVjdG9yaWVzLiAgVGhlIG9uZXMgZ2l2ZW4gYmVsb3cgaXMgdGhlIHVz dWFsIHNwb3QgZm9yIGxpbnV4IHN5c3RlbXMuCiAgICAjIFRoZSBwYXRocyBhcmUgZm9yIGdsaWJj b25maWcuaCBhbmQgZ25vbWVzdXBwb3J0LmggcmVzcGVjdGl2ZWx5LgogICAgIwohICEgR05PTUVJ TkM9LUkvdXNyL1gxMVI2L2luY2x1ZGUgLUkvdXNyL1gxMVI2L2luY2x1ZGUvZ3RrMTIgLUkvdXNy L2xvY2FsL2luY2x1ZGUvZ2xpYjEyIC1JL3Vzci9sb2NhbC9pbmNsdWRlL2twYXRoc2VhIC1JLi4v d2luL2dub21lCiAgICAKICAgICMgZmxhZ3MgZm9yIGRlYnVnZ2luZzoKICAgICMgQ0ZMQUdTID0g LWcgLUkuLi9pbmNsdWRlCiAgKioqKioqKioqKioqKioqCiAgKioqIDIwMywyMTAgKioqKgogICAg CiAgICAjCi0tLSAxMyw0NyAtLS0tCiAgICAjIGRpcmVjdG9yaWVzLiAgVGhlIG9uZXMgZ2l2ZW4g YmVsb3cgaXMgdGhlIHVzdWFsIHNwb3QgZm9yIGxpbnV4IHN5c3RlbXMuCiAgICAjIFRoZSBwYXRo cyBhcmUgZm9yIGdsaWJjb25maWcuaCBhbmQgZ25vbWVzdXBwb3J0LmggcmVzcGVjdGl2ZWx5Lgog ICAgIwohICEgR05PTUVJTkM9LUkvdXNyL1gxMVI2L2luY2x1ZGUvZ25vbWUtMS4wIC1JL3Vzci9Y MTFSNi9pbmNsdWRlIC1JL3Vzci9YMTFSNi9pbmNsdWRlL2d0azEyIC1JL3Vzci9sb2NhbC9pbmNs dWRlL2dsaWIxMiAtSS4uL3dpbi9nbm9tZQogICAgCiAgICAjIGZsYWdzIGZvciBkZWJ1Z2dpbmc6 CiAgICAjIENGTEFHUyA9IC1nIC1JLi4vaW5jbHVkZQogICoqKioqKioqKioqKioqKgorICoqKiAx ODQsMTkzICoqKioKKyAgIAkuLi93aW4vZ25vbWUvZ25nbHlwaC5jIC4uL3dpbi9nbm9tZS9nbm1h aW4uYyAuLi93aW4vZ25vbWUvZ25tYXAuYyBcCisgICAJLi4vd2luL2dub21lL2dubWVudS5jIC4u L3dpbi9nbm9tZS9nbm1lc2cuYyAuLi93aW4vZ25vbWUvZ25vcHRzLmMgXAorICAgCS4uL3dpbi9n bm9tZS9nbnBsYXllci5jIC4uL3dpbi9nbm9tZS9nbnNpZ25hbC5jIFwKKyAhIAkuLi93aW4vZ25v bWUvZ25zdGF0dXMuYyAuLi93aW4vZ25vbWUvZ250ZXh0LmMgLi4vd2luL2dub21lL2dueWVzbm8u YworICAgV0lOR05PTUVPQkogPSBnbmFza3N0ci5vIGduYmluZC5vIGduZ2x5cGgubyBnbm1haW4u byBnbm1hcC5vIGdubWVudS5vIFwKKyAgIAlnbm1lc2cubyBnbm9wdHMubyBnbnBsYXllci5vIGdu c2lnbmFsLm8gZ25zdGF0dXMubyBnbnRleHQubyBcCisgISAJZ255ZXNuby5vIHRpbGUubworICAg IworICAgIyBGaWxlcyBmb3IgYSBHZW0gcG9ydAorICAgV0lOR0VNU1JDID0gLi4vd2luL2dlbS93 aW5nZW0uYyAuLi93aW4vZ2VtL3dpbmdlbTEuYyAuLi93aW4vZ2VtL2xvYWRfaW1nLmMgXAorIC0t LSAxODQsMTk0IC0tLS0KKyAgIAkuLi93aW4vZ25vbWUvZ25nbHlwaC5jIC4uL3dpbi9nbm9tZS9n bm1haW4uYyAuLi93aW4vZ25vbWUvZ25tYXAuYyBcCisgICAJLi4vd2luL2dub21lL2dubWVudS5j IC4uL3dpbi9nbm9tZS9nbm1lc2cuYyAuLi93aW4vZ25vbWUvZ25vcHRzLmMgXAorICAgCS4uL3dp bi9nbm9tZS9nbnBsYXllci5jIC4uL3dpbi9nbm9tZS9nbnNpZ25hbC5jIFwKKyAhIAkuLi93aW4v Z25vbWUvZ25zdGF0dXMuYyAuLi93aW4vZ25vbWUvZ250ZXh0LmMgLi4vd2luL2dub21lL2dueWVz bm8uYyBcCisgISAJLi4vd2luL2dub21lL2dldG9wdC5jIC4uL3dpbi9nbm9tZS9nZXRvcHQxLmMK KyAgIFdJTkdOT01FT0JKID0gZ25hc2tzdHIubyBnbmJpbmQubyBnbmdseXBoLm8gZ25tYWluLm8g Z25tYXAubyBnbm1lbnUubyBcCisgICAJZ25tZXNnLm8gZ25vcHRzLm8gZ25wbGF5ZXIubyBnbnNp Z25hbC5vIGduc3RhdHVzLm8gZ250ZXh0Lm8gXAorICEgCWdueWVzbm8ubyB0aWxlLm8gZ2V0b3B0 Lm8gZ2V0b3B0MS5vCisgICAjCisgICAjIEZpbGVzIGZvciBhIEdlbSBwb3J0CisgICBXSU5HRU1T UkMgPSAuLi93aW4vZ2VtL3dpbmdlbS5jIC4uL3dpbi9nZW0vd2luZ2VtMS5jIC4uL3dpbi9nZW0v bG9hZF9pbWcuYyBcCisgKioqKioqKioqKioqKioqCiAgKioqIDIwMywyMTAgKioqKgogICAgCiAg ICAjCioqKioqKioqKioqKioqKgoqKiogMjcsMzMgKioqKgogICAgCiAgICAjIG9uIHNvbWUgc3lz dGVtcyB0aGUgdGVybWNhcCBsaWJyYXJ5IGlzIGluIC1sdGVybWNhcCBvciAtbGN1cnNlcwogICAg IyBvbiAzODYgWGVuaXgsIHRoZSAtbHRlcm1saWIgdHB1dHMoKSBzZWVtcyBub3QgdG8gd29yazsg dXNlIC1sY3Vyc2VzIGluc3RlYWQKISAtLS0gMjAzLDIxMCAtLS0tCiAgICAKICAgICMKICAgICMK LS0tIDUxLDU3IC0tLS0KICAgIAogICAgIyBvbiBzb21lIHN5c3RlbXMgdGhlIHRlcm1jYXAgbGli cmFyeSBpcyBpbiAtbHRlcm1jYXAgb3IgLWxjdXJzZXMKICAgICMgb24gMzg2IFhlbml4LCB0aGUg LWx0ZXJtbGliIHRwdXRzKCkgc2VlbXMgbm90IHRvIHdvcms7IHVzZSAtbGN1cnNlcyBpbnN0ZWFk CiEgLS0tIDIwNCwyMTEgLS0tLQogICAgCiAgICAjCiAgICAjCioqKioqKioqKioqKioqKgoqKiog NDUsNTUgKioqKgogICAgIwogICAgIyBsaWJyYXJpZXMgZm9yIEdlbSBwb3J0CiAgICBXSU5HRU1M SUIgPSAtbGVfZ2VtIC1sZ2VtCiEgLS0tIDIzNiwyNDIgLS0tLQogICAgV0lOS0RFTElCID0gLWxr ZGVjb3JlIC1sa2RldWkgLWxYZXh0CiAgICAjCiAgICAjIGxpYnJhcmllcyBmb3IgR25vbWUKISAh IFdJTkdOT01FTElCID0gLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvWDExUjYvbGliIC1sZ25vbWV1 aSAtbGdub21lIC1sYXJ0X2xncGwgLWxndGsxMiAtbGdkazEyIC1sZ2xpYjEyIC1scG9wdCAtbGtw YXRoc2VhCiAgICAjCiAgICAjIGxpYnJhcmllcyBmb3IgR2VtIHBvcnQKICAgIFdJTkdFTUxJQiA9 IC1sZV9nZW0gLWxnZW0KLS0tIDY5LDc5IC0tLS0KICAgICMKICAgICMgbGlicmFyaWVzIGZvciBH ZW0gcG9ydAogICAgV0lOR0VNTElCID0gLWxlX2dlbSAtbGdlbQohIC0tLSAyMzcsMjQzIC0tLS0K ICAgIFdJTktERUxJQiA9IC1sa2RlY29yZSAtbGtkZXVpIC1sWGV4dAogICAgIwogICAgIyBsaWJy YXJpZXMgZm9yIEdub21lCiEgISBXSU5HTk9NRUxJQiA9IC1ML3Vzci9sb2NhbC9saWIgLUwvdXNy L1gxMVI2L2xpYiAtbGdub21lc3VwcG9ydCAtbGdub21ldWkgLWxnbm9tZSAtbGFydF9sZ3BsIC1s Z3RrMTIgLWxnZGsxMiAtbGdsaWIxMiAtbHBvcHQgCiAgICAjCiAgICAjIGxpYnJhcmllcyBmb3Ig R2VtIHBvcnQKICAgIFdJTkdFTUxJQiA9IC1sZV9nZW0gLWxnZW0KKioqKioqKioqKioqKioqCioq KiA2Miw2OCAqKioqCiAgICAKICAgICMgYW55IG90aGVyIHN0cmFuZ2UgbGlicmFyaWVzIHlvdXIg c3lzdGVtIG5lZWRzIChmb3IgU3lzdW5peCBvbmx5IC0tIHRoZSBtb3JlCiAgICAjIHNwZWNpYWxp emVkIHRhcmdldHMgc2hvdWxkIGFscmVhZHkgYmUgcmlnaHQpCiEgLS0tIDI0NCwyNTAgLS0tLQog ICAgIyBsaWJyYXJpZXMgZm9yIEJlT1MgCiAgICBXSU5CRUxJQiA9IC1sYmUKICAgIAotLS0gODYs OTIgLS0tLQogICAgCiAgICAjIGFueSBvdGhlciBzdHJhbmdlIGxpYnJhcmllcyB5b3VyIHN5c3Rl bSBuZWVkcyAoZm9yIFN5c3VuaXggb25seSAtLSB0aGUgbW9yZQogICAgIyBzcGVjaWFsaXplZCB0 YXJnZXRzIHNob3VsZCBhbHJlYWR5IGJlIHJpZ2h0KQohIC0tLSAyNDUsMjUxIC0tLS0KICAgICMg bGlicmFyaWVzIGZvciBCZU9TIAogICAgV0lOQkVMSUIgPSAtbGJlCiAgICAKKioqKioqKioqKioq KioqCioqKiA3MCw3MiAqKioqCi0tLSA5NCwxMDkgLS0tLQogICAgCiAgICAjIGFueSBvdGhlciBz dHJhbmdlIGxpYnJhcmllcyB5b3VyIHN5c3RlbSBuZWVkcyAoZm9yIFN5c3VuaXggb25seSAtLSB0 aGUgbW9yZQogICAgIyBzcGVjaWFsaXplZCB0YXJnZXRzIHNob3VsZCBhbHJlYWR5IGJlIHJpZ2h0 KQorICoqKioqKioqKioqKioqKgorICoqKiA2MjAsNjI1ICoqKioKKyAtLS0gNjIxLDYzMCAtLS0t CisgICAJCS4uL3dpbi9nbm9tZS9nbmJpbmQuaCAuLi93aW4vZ25vbWUvZ25vcHRzLmggJChIQUNL X0gpIFwKKyAgIAkJLi4vaW5jbHVkZS9kYXRlLmgKKyAgIAkkKENDKSAkKENGTEFHUykgJChHTk9N RUlOQykgLWMgLi4vd2luL2dub21lL2dubWFpbi5jCisgKyBnZXRvcHQubzogLi4vd2luL2dub21l L2dldG9wdC5jIC4uL3dpbi9nbm9tZS9nZXRvcHQuaAorICsgCSQoQ0MpICQoQ0ZMQUdTKSAkKEdO T01FSU5DKSAtYyAuLi93aW4vZ25vbWUvZ2V0b3B0LmMKKyArIGdldG9wdDEubzogLi4vd2luL2du b21lL2dldG9wdDEuYyAuLi93aW4vZ25vbWUvZ2V0b3B0LmgKKyArIAkkKENDKSAkKENGTEFHUykg JChHTk9NRUlOQykgLWMgLi4vd2luL2dub21lL2dldG9wdDEuYworICAgZ25tYXAubzogLi4vd2lu L2dub21lL2dubWFwLmMgLi4vd2luL2dub21lL2dubWFwLmggLi4vd2luL2dub21lL2duZ2x5cGgu aCBcCisgICAJCS4uL3dpbi9nbm9tZS9nbnNpZ25hbC5oICQoSEFDS19IKQorICAgCSQoQ0MpICQo Q0ZMQUdTKSAkKEdOT01FSU5DKSAtYyAuLi93aW4vZ25vbWUvZ25tYXAuYwpkaWZmIC1jIC1yIC1Q IG5ldGhhY2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmMgbmV0 aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmMKKioqIG5ldGhhY2sz LWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmMJVGh1IEphbiAgMSAw MTowMDowMCAxOTcwCi0tLSBuZXRoYWNrMy1nbm9tZS9maWxlcy9wYXRjaC13aW46Omdub21lOjpn ZXRvcHQuYwlTYXQgTWFyIDMwIDIwOjU5OjU0IDIwMDIKKioqKioqKioqKioqKioqCioqKiAwICoq KioKLS0tIDEsNzUzIC0tLS0KKyAqKiogL2Rldi9udWxsCVNhdCBNYXIgMzAgMjA6NDQ6MDAgMjAw MgorIC0tLSB3aW4vZ25vbWUvZ2V0b3B0LmMJU2F0IE1hciAzMCAyMDo0NDo0NiAyMDAyCisgKioq KioqKioqKioqKioqCisgKioqIDAgKioqKgorIC0tLSAxLDc0OCAtLS0tCisgKyAvKiBHZXRvcHQg Zm9yIEdOVS4KKyArICAgIE5PVEU6IGdldG9wdCBpcyBub3cgcGFydCBvZiB0aGUgQyBsaWJyYXJ5 LCBzbyBpZiB5b3UgZG9uJ3Qga25vdyB3aGF0CisgKyAgICAiS2VlcCB0aGlzIGZpbGUgbmFtZS1z cGFjZSBjbGVhbiIgbWVhbnMsIHRhbGsgdG8gcm9sYW5kQGdudS5haS5taXQuZWR1CisgKyAgICBi ZWZvcmUgY2hhbmdpbmcgaXQhCisgKyAKKyArICAgIENvcHlyaWdodCAoQykgMTk4NywgODgsIDg5 LCA5MCwgOTEsIDkyLCA5MywgOTQKKyArICAgIAlGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyArIAorICsgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyArICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICsgICAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv cHRpb24pIGFueQorICsgICAgbGF0ZXIgdmVyc2lvbi4KKyArIAorICsgICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKyAg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICsgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICsgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyArIAorICsgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyArICAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKyAgICBGb3Vu ZGF0aW9uLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4gICovCisgKyAM CisgKyAvKiBUaGlzIHRlbGxzIEFscGhhIE9TRi8xIG5vdCB0byBkZWZpbmUgYSBnZXRvcHQgcHJv dG90eXBlIGluIDxzdGRpby5oPi4KKyArICAgIERpdHRvIGZvciBBSVggMy4yIGFuZCA8c3RkbGli Lmg+LiAgKi8KKyArICNpZm5kZWYgX05PX1BST1RPCisgKyAjZGVmaW5lIF9OT19QUk9UTworICsg I2VuZGlmCisgKyAKKyArICNpZmRlZiBIQVZFX0NPTkZJR19ICisgKyAjaW5jbHVkZSA8Y29uZmln Lmg+CisgKyAjZW5kaWYKKyArIAorICsgI2lmbmRlZiBfX1NURENfXworICsgLyogVGhpcyBpcyBh IHNlcGFyYXRlIGNvbmRpdGlvbmFsIHNpbmNlIHNvbWUgc3RkYyBzeXN0ZW1zCisgKyAgICByZWpl Y3QgYGRlZmluZWQgKGNvbnN0KScuICAqLworICsgI2lmbmRlZiBjb25zdAorICsgI2RlZmluZSBj b25zdAorICsgI2VuZGlmCisgKyAjZW5kaWYKKyArIAorICsgI2luY2x1ZGUgPHN0ZGlvLmg+Cisg KyAKKyArIC8qIENvbW1lbnQgb3V0IGFsbCB0aGlzIGNvZGUgaWYgd2UgYXJlIHVzaW5nIHRoZSBH TlUgQyBMaWJyYXJ5LCBhbmQgYXJlIG5vdAorICsgICAgYWN0dWFsbHkgY29tcGlsaW5nIHRoZSBs aWJyYXJ5IGl0c2VsZi4gIFRoaXMgY29kZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQworICsgICAgTGli cmFyeSwgYnV0IGFsc28gaW5jbHVkZWQgaW4gbWFueSBvdGhlciBHTlUgZGlzdHJpYnV0aW9ucy4g IENvbXBpbGluZworICsgICAgYW5kIGxpbmtpbmcgaW4gdGhpcyBjb2RlIGlzIGEgd2FzdGUgd2hl biB1c2luZyB0aGUgR05VIEMgbGlicmFyeQorICsgICAgKGVzcGVjaWFsbHkgaWYgaXQgaXMgYSBz aGFyZWQgbGlicmFyeSkuICBSYXRoZXIgdGhhbiBoYXZpbmcgZXZlcnkgR05VCisgKyAgICBwcm9n cmFtIHVuZGVyc3RhbmQgYGNvbmZpZ3VyZSAtLXdpdGgtZ251LWxpYmMnIGFuZCBvbWl0IHRoZSBv YmplY3QgZmlsZXMsCisgKyAgICBpdCBpcyBzaW1wbGVyIHRvIGp1c3QgZG8gdGhpcyBpbiB0aGUg c291cmNlIGZvciBlYWNoIHN1Y2ggZmlsZS4gICovCisgKyAKKyArICNpZiBkZWZpbmVkIChfTElC QykgfHwgIWRlZmluZWQgKF9fR05VX0xJQlJBUllfXykKKyArIAorICsgCisgKyAvKiBUaGlzIG5l ZWRzIHRvIGNvbWUgYWZ0ZXIgc29tZSBsaWJyYXJ5ICNpbmNsdWRlCisgKyAgICB0byBnZXQgX19H TlVfTElCUkFSWV9fIGRlZmluZWQuICAqLworICsgI2lmZGVmCV9fR05VX0xJQlJBUllfXworICsg LyogRG9uJ3QgaW5jbHVkZSBzdGRsaWIuaCBmb3Igbm9uLUdOVSBDIGxpYnJhcmllcyBiZWNhdXNl IHNvbWUgb2YgdGhlbQorICsgICAgY29udGFpbiBjb25mbGljdGluZyBwcm90b3R5cGVzIGZvciBn ZXRvcHQuICAqLworICsgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICsgI2VuZGlmCS8qIEdOVSBDIGxp YnJhcnkuICAqLworICsgCisgKyAvKiBUaGlzIHZlcnNpb24gb2YgYGdldG9wdCcgYXBwZWFycyB0 byB0aGUgY2FsbGVyIGxpa2Ugc3RhbmRhcmQgVW5peCBgZ2V0b3B0JworICsgICAgYnV0IGl0IGJl aGF2ZXMgZGlmZmVyZW50bHkgZm9yIHRoZSB1c2VyLCBzaW5jZSBpdCBhbGxvd3MgdGhlIHVzZXIK KyArICAgIHRvIGludGVyc3BlcnNlIHRoZSBvcHRpb25zIHdpdGggdGhlIG90aGVyIGFyZ3VtZW50 cy4KKyArIAorICsgICAgQXMgYGdldG9wdCcgd29ya3MsIGl0IHBlcm11dGVzIHRoZSBlbGVtZW50 cyBvZiBBUkdWIHNvIHRoYXQsCisgKyAgICB3aGVuIGl0IGlzIGRvbmUsIGFsbCB0aGUgb3B0aW9u cyBwcmVjZWRlIGV2ZXJ5dGhpbmcgZWxzZS4gIFRodXMKKyArICAgIGFsbCBhcHBsaWNhdGlvbiBw cm9ncmFtcyBhcmUgZXh0ZW5kZWQgdG8gaGFuZGxlIGZsZXhpYmxlIGFyZ3VtZW50IG9yZGVyLgor ICsgCisgKyAgICBTZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQT1NJWExZX0NPUlJF Q1QgZGlzYWJsZXMgcGVybXV0YXRpb24uCisgKyAgICBUaGVuIHRoZSBiZWhhdmlvciBpcyBjb21w bGV0ZWx5IHN0YW5kYXJkLgorICsgCisgKyAgICBHTlUgYXBwbGljYXRpb24gcHJvZ3JhbXMgY2Fu IHVzZSBhIHRoaXJkIGFsdGVybmF0aXZlIG1vZGUgaW4gd2hpY2gKKyArICAgIHRoZXkgY2FuIGRp c3Rpbmd1aXNoIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBvcHRpb25zIGFuZCBvdGhlciBhcmd1bWVu dHMuICAqLworICsgCisgKyAjaW5jbHVkZSAiZ2V0b3B0LmgiCisgKyAKKyArIC8qIEZvciBjb21t dW5pY2F0aW9uIGZyb20gYGdldG9wdCcgdG8gdGhlIGNhbGxlci4KKyArICAgIFdoZW4gYGdldG9w dCcgZmluZHMgYW4gb3B0aW9uIHRoYXQgdGFrZXMgYW4gYXJndW1lbnQsCisgKyAgICB0aGUgYXJn dW1lbnQgdmFsdWUgaXMgcmV0dXJuZWQgaGVyZS4KKyArICAgIEFsc28sIHdoZW4gYG9yZGVyaW5n JyBpcyBSRVRVUk5fSU5fT1JERVIsCisgKyAgICBlYWNoIG5vbi1vcHRpb24gQVJHVi1lbGVtZW50 IGlzIHJldHVybmVkIGhlcmUuICAqLworICsgCisgKyBjaGFyICpvcHRhcmcgPSBOVUxMOworICsg CisgKyAvKiBJbmRleCBpbiBBUkdWIG9mIHRoZSBuZXh0IGVsZW1lbnQgdG8gYmUgc2Nhbm5lZC4K KyArICAgIFRoaXMgaXMgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB0byBhbmQgZnJvbSB0aGUgY2Fs bGVyCisgKyAgICBhbmQgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxz IHRvIGBnZXRvcHQnLgorICsgCisgKyAgICBPbiBlbnRyeSB0byBgZ2V0b3B0JywgemVybyBtZWFu cyB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsOyBpbml0aWFsaXplLgorICsgCisgKyAgICBXaGVuIGBn ZXRvcHQnIHJldHVybnMgRU9GLCB0aGlzIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2YgdGhl CisgKyAgICBub24tb3B0aW9uIGVsZW1lbnRzIHRoYXQgdGhlIGNhbGxlciBzaG91bGQgaXRzZWxm IHNjYW4uCisgKyAKKyArICAgIE90aGVyd2lzZSwgYG9wdGluZCcgY29tbXVuaWNhdGVzIGZyb20g b25lIGNhbGwgdG8gdGhlIG5leHQKKyArICAgIGhvdyBtdWNoIG9mIEFSR1YgaGFzIGJlZW4gc2Nh bm5lZCBzbyBmYXIuICAqLworICsgCisgKyAvKiBYWFggMTAwMy4yIHNheXMgdGhpcyBtdXN0IGJl IDEgYmVmb3JlIGFueSBjYWxsLiAgKi8KKyArIGludCBvcHRpbmQgPSAwOworICsgCisgKyAvKiBU aGUgbmV4dCBjaGFyIHRvIGJlIHNjYW5uZWQgaW4gdGhlIG9wdGlvbi1lbGVtZW50CisgKyAgICBp biB3aGljaCB0aGUgbGFzdCBvcHRpb24gY2hhcmFjdGVyIHdlIHJldHVybmVkIHdhcyBmb3VuZC4K KyArICAgIFRoaXMgYWxsb3dzIHVzIHRvIHBpY2sgdXAgdGhlIHNjYW4gd2hlcmUgd2UgbGVmdCBv ZmYuCisgKyAKKyArICAgIElmIHRoaXMgaXMgemVybywgb3IgYSBudWxsIHN0cmluZywgaXQgbWVh bnMgcmVzdW1lIHRoZSBzY2FuCisgKyAgICBieSBhZHZhbmNpbmcgdG8gdGhlIG5leHQgQVJHVi1l bGVtZW50LiAgKi8KKyArIAorICsgc3RhdGljIGNoYXIgKm5leHRjaGFyOworICsgCisgKyAvKiBD YWxsZXJzIHN0b3JlIHplcm8gaGVyZSB0byBpbmhpYml0IHRoZSBlcnJvciBtZXNzYWdlCisgKyAg ICBmb3IgdW5yZWNvZ25pemVkIG9wdGlvbnMuICAqLworICsgCisgKyBpbnQgb3B0ZXJyID0gMTsK KyArIAorICsgLyogU2V0IHRvIGFuIG9wdGlvbiBjaGFyYWN0ZXIgd2hpY2ggd2FzIHVucmVjb2du aXplZC4KKyArICAgIFRoaXMgbXVzdCBiZSBpbml0aWFsaXplZCBvbiBzb21lIHN5c3RlbXMgdG8g YXZvaWQgbGlua2luZyBpbiB0aGUKKyArICAgIHN5c3RlbSdzIG93biBnZXRvcHQgaW1wbGVtZW50 YXRpb24uICAqLworICsgCisgKyBpbnQgb3B0b3B0ID0gJz8nOworICsgCisgKyAvKiBEZXNjcmli ZSBob3cgdG8gZGVhbCB3aXRoIG9wdGlvbnMgdGhhdCBmb2xsb3cgbm9uLW9wdGlvbiBBUkdWLWVs ZW1lbnRzLgorICsgCisgKyAgICBJZiB0aGUgY2FsbGVyIGRpZCBub3Qgc3BlY2lmeSBhbnl0aGlu ZywKKyArICAgIHRoZSBkZWZhdWx0IGlzIFJFUVVJUkVfT1JERVIgaWYgdGhlIGVudmlyb25tZW50 IHZhcmlhYmxlCisgKyAgICBQT1NJWExZX0NPUlJFQ1QgaXMgZGVmaW5lZCwgUEVSTVVURSBvdGhl cndpc2UuCisgKyAKKyArICAgIFJFUVVJUkVfT1JERVIgbWVhbnMgZG9uJ3QgcmVjb2duaXplIHRo ZW0gYXMgb3B0aW9uczsKKyArICAgIHN0b3Agb3B0aW9uIHByb2Nlc3Npbmcgd2hlbiB0aGUgZmly c3Qgbm9uLW9wdGlvbiBpcyBzZWVuLgorICsgICAgVGhpcyBpcyB3aGF0IFVuaXggZG9lcy4KKyAr ICAgIFRoaXMgbW9kZSBvZiBvcGVyYXRpb24gaXMgc2VsZWN0ZWQgYnkgZWl0aGVyIHNldHRpbmcg dGhlIGVudmlyb25tZW50CisgKyAgICB2YXJpYWJsZSBQT1NJWExZX0NPUlJFQ1QsIG9yIHVzaW5n IGArJyBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyCisgKyAgICBvZiB0aGUgbGlzdCBvZiBvcHRpb24g Y2hhcmFjdGVycy4KKyArIAorICsgICAgUEVSTVVURSBpcyB0aGUgZGVmYXVsdC4gIFdlIHBlcm11 dGUgdGhlIGNvbnRlbnRzIG9mIEFSR1YgYXMgd2Ugc2NhbiwKKyArICAgIHNvIHRoYXQgZXZlbnR1 YWxseSBhbGwgdGhlIG5vbi1vcHRpb25zIGFyZSBhdCB0aGUgZW5kLiAgVGhpcyBhbGxvd3Mgb3B0 aW9ucworICsgICAgdG8gYmUgZ2l2ZW4gaW4gYW55IG9yZGVyLCBldmVuIHdpdGggcHJvZ3JhbXMg dGhhdCB3ZXJlIG5vdCB3cml0dGVuIHRvCisgKyAgICBleHBlY3QgdGhpcy4KKyArIAorICsgICAg UkVUVVJOX0lOX09SREVSIGlzIGFuIG9wdGlvbiBhdmFpbGFibGUgdG8gcHJvZ3JhbXMgdGhhdCB3 ZXJlIHdyaXR0ZW4KKyArICAgIHRvIGV4cGVjdCBvcHRpb25zIGFuZCBvdGhlciBBUkdWLWVsZW1l bnRzIGluIGFueSBvcmRlciBhbmQgdGhhdCBjYXJlIGFib3V0CisgKyAgICB0aGUgb3JkZXJpbmcg b2YgdGhlIHR3by4gIFdlIGRlc2NyaWJlIGVhY2ggbm9uLW9wdGlvbiBBUkdWLWVsZW1lbnQKKyAr ICAgIGFzIGlmIGl0IHdlcmUgdGhlIGFyZ3VtZW50IG9mIGFuIG9wdGlvbiB3aXRoIGNoYXJhY3Rl ciBjb2RlIDEuCisgKyAgICBVc2luZyBgLScgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUg bGlzdCBvZiBvcHRpb24gY2hhcmFjdGVycworICsgICAgc2VsZWN0cyB0aGlzIG1vZGUgb2Ygb3Bl cmF0aW9uLgorICsgCisgKyAgICBUaGUgc3BlY2lhbCBhcmd1bWVudCBgLS0nIGZvcmNlcyBhbiBl bmQgb2Ygb3B0aW9uLXNjYW5uaW5nIHJlZ2FyZGxlc3MKKyArICAgIG9mIHRoZSB2YWx1ZSBvZiBg b3JkZXJpbmcnLiAgSW4gdGhlIGNhc2Ugb2YgUkVUVVJOX0lOX09SREVSLCBvbmx5CisgKyAgICBg LS0nIGNhbiBjYXVzZSBgZ2V0b3B0JyB0byByZXR1cm4gRU9GIHdpdGggYG9wdGluZCcgIT0gQVJH Qy4gICovCisgKyAKKyArIHN0YXRpYyBlbnVtCisgKyB7CisgKyAgIFJFUVVJUkVfT1JERVIsIFBF Uk1VVEUsIFJFVFVSTl9JTl9PUkRFUgorICsgfSBvcmRlcmluZzsKKyArIAorICsgLyogVmFsdWUg b2YgUE9TSVhMWV9DT1JSRUNUIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKyArIHN0YXRpYyBj aGFyICpwb3NpeGx5X2NvcnJlY3Q7CisgKyAMCisgKyAjaWZkZWYJX19HTlVfTElCUkFSWV9fCisg KyAvKiBXZSB3YW50IHRvIGF2b2lkIGluY2x1c2lvbiBvZiBzdHJpbmcuaCB3aXRoIG5vbi1HTlUg bGlicmFyaWVzCisgKyAgICBiZWNhdXNlIHRoZXJlIGFyZSBtYW55IHdheXMgaXQgY2FuIGNhdXNl IHRyb3VibGUuCisgKyAgICBPbiBzb21lIHN5c3RlbXMsIGl0IGNvbnRhaW5zIHNwZWNpYWwgbWFn aWMgbWFjcm9zIHRoYXQgZG9uJ3Qgd29yaworICsgICAgaW4gR0NDLiAgKi8KKyArICNpbmNsdWRl IDxzdHJpbmcuaD4KKyArICNkZWZpbmUJbXlfaW5kZXgJc3RyY2hyCisgKyAjZWxzZQorICsgCisg KyAvKiBBdm9pZCBkZXBlbmRpbmcgb24gbGlicmFyeSBmdW5jdGlvbnMgb3IgZmlsZXMKKyArICAg IHdob3NlIG5hbWVzIGFyZSBpbmNvbnNpc3RlbnQuICAqLworICsgCisgKyBjaGFyICpnZXRlbnYg KCk7CisgKyAKKyArIHN0YXRpYyBjaGFyICoKKyArIG15X2luZGV4IChzdHIsIGNocikKKyArICAg ICAgY29uc3QgY2hhciAqc3RyOworICsgICAgICBpbnQgY2hyOworICsgeworICsgICB3aGlsZSAo KnN0cikKKyArICAgICB7CisgKyAgICAgICBpZiAoKnN0ciA9PSBjaHIpCisgKyAJcmV0dXJuIChj aGFyICopIHN0cjsKKyArICAgICAgIHN0cisrOworICsgICAgIH0KKyArICAgcmV0dXJuIDA7Cisg KyB9CisgKyAKKyArIC8qIElmIHVzaW5nIEdDQywgd2UgY2FuIHNhZmVseSBkZWNsYXJlIHN0cmxl biB0aGlzIHdheS4KKyArICAgIElmIG5vdCB1c2luZyBHQ0MsIGl0IGlzIG9rIG5vdCB0byBkZWNs YXJlIGl0LiAgKi8KKyArICNpZmRlZiBfX0dOVUNfXworICsgLyogTm90ZSB0aGF0IE1vdG9yb2xh IERlbHRhIDY4ayBSM1Y3IGNvbWVzIHdpdGggR0NDIGJ1dCBub3Qgc3RkZGVmLmguCisgKyAgICBU aGF0IHdhcyByZWxldmFudCB0byBjb2RlIHRoYXQgd2FzIGhlcmUgYmVmb3JlLiAgKi8KKyArICNp Zm5kZWYgX19TVERDX18KKyArIC8qIGdjYyB3aXRoIC10cmFkaXRpb25hbCBkZWNsYXJlcyB0aGUg YnVpbHQtaW4gc3RybGVuIHRvIHJldHVybiBpbnQsCisgKyAgICBhbmQgaGFzIGRvbmUgc28gYXQg bGVhc3Qgc2luY2UgdmVyc2lvbiAyLjQuNS4gLS0gcm1zLiAgKi8KKyArIGV4dGVybiBpbnQgc3Ry bGVuIChjb25zdCBjaGFyICopOworICsgI2VuZGlmIC8qIG5vdCBfX1NURENfXyAqLworICsgI2Vu ZGlmIC8qIF9fR05VQ19fICovCisgKyAKKyArICNlbmRpZiAvKiBub3QgX19HTlVfTElCUkFSWV9f ICovCisgKyAMCisgKyAvKiBIYW5kbGUgcGVybXV0YXRpb24gb2YgYXJndW1lbnRzLiAgKi8KKyAr IAorICsgLyogRGVzY3JpYmUgdGhlIHBhcnQgb2YgQVJHViB0aGF0IGNvbnRhaW5zIG5vbi1vcHRp b25zIHRoYXQgaGF2ZQorICsgICAgYmVlbiBza2lwcGVkLiAgYGZpcnN0X25vbm9wdCcgaXMgdGhl IGluZGV4IGluIEFSR1Ygb2YgdGhlIGZpcnN0IG9mIHRoZW07CisgKyAgICBgbGFzdF9ub25vcHQn IGlzIHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBvZiB0aGVtLiAgKi8KKyArIAorICsgc3RhdGlj IGludCBmaXJzdF9ub25vcHQ7CisgKyBzdGF0aWMgaW50IGxhc3Rfbm9ub3B0OworICsgCisgKyAv KiBFeGNoYW5nZSB0d28gYWRqYWNlbnQgc3Vic2VxdWVuY2VzIG9mIEFSR1YuCisgKyAgICBPbmUg c3Vic2VxdWVuY2UgaXMgZWxlbWVudHMgW2ZpcnN0X25vbm9wdCxsYXN0X25vbm9wdCkKKyArICAg IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgbm9uLW9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2tpcHBl ZCBzbyBmYXIuCisgKyAgICBUaGUgb3RoZXIgaXMgZWxlbWVudHMgW2xhc3Rfbm9ub3B0LG9wdGlu ZCksIHdoaWNoIGNvbnRhaW5zIGFsbAorICsgICAgdGhlIG9wdGlvbnMgcHJvY2Vzc2VkIHNpbmNl IHRob3NlIG5vbi1vcHRpb25zIHdlcmUgc2tpcHBlZC4KKyArIAorICsgICAgYGZpcnN0X25vbm9w dCcgYW5kIGBsYXN0X25vbm9wdCcgYXJlIHJlbG9jYXRlZCBzbyB0aGF0IHRoZXkgZGVzY3JpYmUK KyArICAgIHRoZSBuZXcgaW5kaWNlcyBvZiB0aGUgbm9uLW9wdGlvbnMgaW4gQVJHViBhZnRlciB0 aGV5IGFyZSBtb3ZlZC4gICovCisgKyAKKyArIHN0YXRpYyB2b2lkCisgKyBleGNoYW5nZSAoYXJn dikKKyArICAgICAgY2hhciAqKmFyZ3Y7CisgKyB7CisgKyAgIGludCBib3R0b20gPSBmaXJzdF9u b25vcHQ7CisgKyAgIGludCBtaWRkbGUgPSBsYXN0X25vbm9wdDsKKyArICAgaW50IHRvcCA9IG9w dGluZDsKKyArICAgY2hhciAqdGVtOworICsgCisgKyAgIC8qIEV4Y2hhbmdlIHRoZSBzaG9ydGVy IHNlZ21lbnQgd2l0aCB0aGUgZmFyIGVuZCBvZiB0aGUgbG9uZ2VyIHNlZ21lbnQuCisgKyAgICAg IFRoYXQgcHV0cyB0aGUgc2hvcnRlciBzZWdtZW50IGludG8gdGhlIHJpZ2h0IHBsYWNlLgorICsg ICAgICBJdCBsZWF2ZXMgdGhlIGxvbmdlciBzZWdtZW50IGluIHRoZSByaWdodCBwbGFjZSBvdmVy YWxsLAorICsgICAgICBidXQgaXQgY29uc2lzdHMgb2YgdHdvIHBhcnRzIHRoYXQgbmVlZCB0byBi ZSBzd2FwcGVkIG5leHQuICAqLworICsgCisgKyAgIHdoaWxlICh0b3AgPiBtaWRkbGUgJiYgbWlk ZGxlID4gYm90dG9tKQorICsgICAgIHsKKyArICAgICAgIGlmICh0b3AgLSBtaWRkbGUgPiBtaWRk bGUgLSBib3R0b20pCisgKyAJeworICsgCSAgLyogQm90dG9tIHNlZ21lbnQgaXMgdGhlIHNob3J0 IG9uZS4gICovCisgKyAJICBpbnQgbGVuID0gbWlkZGxlIC0gYm90dG9tOworICsgCSAgcmVnaXN0 ZXIgaW50IGk7CisgKyAKKyArIAkgIC8qIFN3YXAgaXQgd2l0aCB0aGUgdG9wIHBhcnQgb2YgdGhl IHRvcCBzZWdtZW50LiAgKi8KKyArIAkgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyArIAkg ICAgeworICsgCSAgICAgIHRlbSA9IGFyZ3ZbYm90dG9tICsgaV07CisgKyAJICAgICAgYXJndlti b3R0b20gKyBpXSA9IGFyZ3ZbdG9wIC0gKG1pZGRsZSAtIGJvdHRvbSkgKyBpXTsKKyArIAkgICAg ICBhcmd2W3RvcCAtIChtaWRkbGUgLSBib3R0b20pICsgaV0gPSB0ZW07CisgKyAJICAgIH0KKyAr IAkgIC8qIEV4Y2x1ZGUgdGhlIG1vdmVkIGJvdHRvbSBzZWdtZW50IGZyb20gZnVydGhlciBzd2Fw cGluZy4gICovCisgKyAJICB0b3AgLT0gbGVuOworICsgCX0KKyArICAgICAgIGVsc2UKKyArIAl7 CisgKyAJICAvKiBUb3Agc2VnbWVudCBpcyB0aGUgc2hvcnQgb25lLiAgKi8KKyArIAkgIGludCBs ZW4gPSB0b3AgLSBtaWRkbGU7CisgKyAJICByZWdpc3RlciBpbnQgaTsKKyArIAorICsgCSAgLyog U3dhcCBpdCB3aXRoIHRoZSBib3R0b20gcGFydCBvZiB0aGUgYm90dG9tIHNlZ21lbnQuICAqLwor ICsgCSAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICsgCSAgICB7CisgKyAJICAgICAgdGVt ID0gYXJndltib3R0b20gKyBpXTsKKyArIAkgICAgICBhcmd2W2JvdHRvbSArIGldID0gYXJndltt aWRkbGUgKyBpXTsKKyArIAkgICAgICBhcmd2W21pZGRsZSArIGldID0gdGVtOworICsgCSAgICB9 CisgKyAJICAvKiBFeGNsdWRlIHRoZSBtb3ZlZCB0b3Agc2VnbWVudCBmcm9tIGZ1cnRoZXIgc3dh cHBpbmcuICAqLworICsgCSAgYm90dG9tICs9IGxlbjsKKyArIAl9CisgKyAgICAgfQorICsgCisg KyAgIC8qIFVwZGF0ZSByZWNvcmRzIGZvciB0aGUgc2xvdHMgdGhlIG5vbi1vcHRpb25zIG5vdyBv Y2N1cHkuICAqLworICsgCisgKyAgIGZpcnN0X25vbm9wdCArPSAob3B0aW5kIC0gbGFzdF9ub25v cHQpOworICsgICBsYXN0X25vbm9wdCA9IG9wdGluZDsKKyArIH0KKyArIAorICsgLyogSW5pdGlh bGl6ZSB0aGUgaW50ZXJuYWwgZGF0YSB3aGVuIHRoZSBmaXJzdCBjYWxsIGlzIG1hZGUuICAqLwor ICsgCisgKyBzdGF0aWMgY29uc3QgY2hhciAqCisgKyBfZ2V0b3B0X2luaXRpYWxpemUgKG9wdHN0 cmluZykKKyArICAgICAgY29uc3QgY2hhciAqb3B0c3RyaW5nOworICsgeworICsgICAvKiBTdGFy dCBwcm9jZXNzaW5nIG9wdGlvbnMgd2l0aCBBUkdWLWVsZW1lbnQgMSAoc2luY2UgQVJHVi1lbGVt ZW50IDAKKyArICAgICAgaXMgdGhlIHByb2dyYW0gbmFtZSk7IHRoZSBzZXF1ZW5jZSBvZiBwcmV2 aW91c2x5IHNraXBwZWQKKyArICAgICAgbm9uLW9wdGlvbiBBUkdWLWVsZW1lbnRzIGlzIGVtcHR5 LiAgKi8KKyArIAorICsgICBmaXJzdF9ub25vcHQgPSBsYXN0X25vbm9wdCA9IG9wdGluZCA9IDE7 CisgKyAKKyArICAgbmV4dGNoYXIgPSBOVUxMOworICsgCisgKyAgIHBvc2l4bHlfY29ycmVjdCA9 IGdldGVudiAoIlBPU0lYTFlfQ09SUkVDVCIpOworICsgCisgKyAgIC8qIERldGVybWluZSBob3cg dG8gaGFuZGxlIHRoZSBvcmRlcmluZyBvZiBvcHRpb25zIGFuZCBub25vcHRpb25zLiAgKi8KKyAr IAorICsgICBpZiAob3B0c3RyaW5nWzBdID09ICctJykKKyArICAgICB7CisgKyAgICAgICBvcmRl cmluZyA9IFJFVFVSTl9JTl9PUkRFUjsKKyArICAgICAgICsrb3B0c3RyaW5nOworICsgICAgIH0K KyArICAgZWxzZSBpZiAob3B0c3RyaW5nWzBdID09ICcrJykKKyArICAgICB7CisgKyAgICAgICBv cmRlcmluZyA9IFJFUVVJUkVfT1JERVI7CisgKyAgICAgICArK29wdHN0cmluZzsKKyArICAgICB9 CisgKyAgIGVsc2UgaWYgKHBvc2l4bHlfY29ycmVjdCAhPSBOVUxMKQorICsgICAgIG9yZGVyaW5n ID0gUkVRVUlSRV9PUkRFUjsKKyArICAgZWxzZQorICsgICAgIG9yZGVyaW5nID0gUEVSTVVURTsK KyArIAorICsgICByZXR1cm4gb3B0c3RyaW5nOworICsgfQorICsgDAorICsgLyogU2NhbiBlbGVt ZW50cyBvZiBBUkdWICh3aG9zZSBsZW5ndGggaXMgQVJHQykgZm9yIG9wdGlvbiBjaGFyYWN0ZXJz CisgKyAgICBnaXZlbiBpbiBPUFRTVFJJTkcuCisgKyAKKyArICAgIElmIGFuIGVsZW1lbnQgb2Yg QVJHViBzdGFydHMgd2l0aCAnLScsIGFuZCBpcyBub3QgZXhhY3RseSAiLSIgb3IgIi0tIiwKKyAr ICAgIHRoZW4gaXQgaXMgYW4gb3B0aW9uIGVsZW1lbnQuICBUaGUgY2hhcmFjdGVycyBvZiB0aGlz IGVsZW1lbnQKKyArICAgIChhc2lkZSBmcm9tIHRoZSBpbml0aWFsICctJykgYXJlIG9wdGlvbiBj aGFyYWN0ZXJzLiAgSWYgYGdldG9wdCcKKyArICAgIGlzIGNhbGxlZCByZXBlYXRlZGx5LCBpdCBy ZXR1cm5zIHN1Y2Nlc3NpdmVseSBlYWNoIG9mIHRoZSBvcHRpb24gY2hhcmFjdGVycworICsgICAg ZnJvbSBlYWNoIG9mIHRoZSBvcHRpb24gZWxlbWVudHMuCisgKyAKKyArICAgIElmIGBnZXRvcHQn IGZpbmRzIGFub3RoZXIgb3B0aW9uIGNoYXJhY3RlciwgaXQgcmV0dXJucyB0aGF0IGNoYXJhY3Rl ciwKKyArICAgIHVwZGF0aW5nIGBvcHRpbmQnIGFuZCBgbmV4dGNoYXInIHNvIHRoYXQgdGhlIG5l eHQgY2FsbCB0byBgZ2V0b3B0JyBjYW4KKyArICAgIHJlc3VtZSB0aGUgc2NhbiB3aXRoIHRoZSBm b2xsb3dpbmcgb3B0aW9uIGNoYXJhY3RlciBvciBBUkdWLWVsZW1lbnQuCisgKyAKKyArICAgIElm IHRoZXJlIGFyZSBubyBtb3JlIG9wdGlvbiBjaGFyYWN0ZXJzLCBgZ2V0b3B0JyByZXR1cm5zIGBF T0YnLgorICsgICAgVGhlbiBgb3B0aW5kJyBpcyB0aGUgaW5kZXggaW4gQVJHViBvZiB0aGUgZmly c3QgQVJHVi1lbGVtZW50CisgKyAgICB0aGF0IGlzIG5vdCBhbiBvcHRpb24uICAoVGhlIEFSR1Yt ZWxlbWVudHMgaGF2ZSBiZWVuIHBlcm11dGVkCisgKyAgICBzbyB0aGF0IHRob3NlIHRoYXQgYXJl IG5vdCBvcHRpb25zIG5vdyBjb21lIGxhc3QuKQorICsgCisgKyAgICBPUFRTVFJJTkcgaXMgYSBz dHJpbmcgY29udGFpbmluZyB0aGUgbGVnaXRpbWF0ZSBvcHRpb24gY2hhcmFjdGVycy4KKyArICAg IElmIGFuIG9wdGlvbiBjaGFyYWN0ZXIgaXMgc2VlbiB0aGF0IGlzIG5vdCBsaXN0ZWQgaW4gT1BU U1RSSU5HLAorICsgICAgcmV0dXJuICc/JyBhZnRlciBwcmludGluZyBhbiBlcnJvciBtZXNzYWdl LiAgSWYgeW91IHNldCBgb3B0ZXJyJyB0bworICsgICAgemVybywgdGhlIGVycm9yIG1lc3NhZ2Ug aXMgc3VwcHJlc3NlZCBidXQgd2Ugc3RpbGwgcmV0dXJuICc/Jy4KKyArIAorICsgICAgSWYgYSBj aGFyIGluIE9QVFNUUklORyBpcyBmb2xsb3dlZCBieSBhIGNvbG9uLCB0aGF0IG1lYW5zIGl0IHdh bnRzIGFuIGFyZywKKyArICAgIHNvIHRoZSBmb2xsb3dpbmcgdGV4dCBpbiB0aGUgc2FtZSBBUkdW LWVsZW1lbnQsIG9yIHRoZSB0ZXh0IG9mIHRoZSBmb2xsb3dpbmcKKyArICAgIEFSR1YtZWxlbWVu dCwgaXMgcmV0dXJuZWQgaW4gYG9wdGFyZycuICBUd28gY29sb25zIG1lYW4gYW4gb3B0aW9uIHRo YXQKKyArICAgIHdhbnRzIGFuIG9wdGlvbmFsIGFyZzsgaWYgdGhlcmUgaXMgdGV4dCBpbiB0aGUg Y3VycmVudCBBUkdWLWVsZW1lbnQsCisgKyAgICBpdCBpcyByZXR1cm5lZCBpbiBgb3B0YXJnJywg b3RoZXJ3aXNlIGBvcHRhcmcnIGlzIHNldCB0byB6ZXJvLgorICsgCisgKyAgICBJZiBPUFRTVFJJ Tkcgc3RhcnRzIHdpdGggYC0nIG9yIGArJywgaXQgcmVxdWVzdHMgZGlmZmVyZW50IG1ldGhvZHMg b2YKKyArICAgIGhhbmRsaW5nIHRoZSBub24tb3B0aW9uIEFSR1YtZWxlbWVudHMuCisgKyAgICBT ZWUgdGhlIGNvbW1lbnRzIGFib3V0IFJFVFVSTl9JTl9PUkRFUiBhbmQgUkVRVUlSRV9PUkRFUiwg YWJvdmUuCisgKyAKKyArICAgIExvbmctbmFtZWQgb3B0aW9ucyBiZWdpbiB3aXRoIGAtLScgaW5z dGVhZCBvZiBgLScuCisgKyAgICBUaGVpciBuYW1lcyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgbG9u ZyBhcyB0aGUgYWJicmV2aWF0aW9uIGlzIHVuaXF1ZQorICsgICAgb3IgaXMgYW4gZXhhY3QgbWF0 Y2ggZm9yIHNvbWUgZGVmaW5lZCBvcHRpb24uICBJZiB0aGV5IGhhdmUgYW4KKyArICAgIGFyZ3Vt ZW50LCBpdCBmb2xsb3dzIHRoZSBvcHRpb24gbmFtZSBpbiB0aGUgc2FtZSBBUkdWLWVsZW1lbnQs IHNlcGFyYXRlZAorICsgICAgZnJvbSB0aGUgb3B0aW9uIG5hbWUgYnkgYSBgPScsIG9yIGVsc2Ug dGhlIGluIG5leHQgQVJHVi1lbGVtZW50LgorICsgICAgV2hlbiBgZ2V0b3B0JyBmaW5kcyBhIGxv bmctbmFtZWQgb3B0aW9uLCBpdCByZXR1cm5zIDAgaWYgdGhhdCBvcHRpb24ncworICsgICAgYGZs YWcnIGZpZWxkIGlzIG5vbnplcm8sIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uJ3MgYHZhbCcgZmll bGQKKyArICAgIGlmIHRoZSBgZmxhZycgZmllbGQgaXMgemVyby4KKyArIAorICsgICAgVGhlIGVs ZW1lbnRzIG9mIEFSR1YgYXJlbid0IHJlYWxseSBjb25zdCwgYmVjYXVzZSB3ZSBwZXJtdXRlIHRo ZW0uCisgKyAgICBCdXQgd2UgcHJldGVuZCB0aGV5J3JlIGNvbnN0IGluIHRoZSBwcm90b3R5cGUg dG8gYmUgY29tcGF0aWJsZQorICsgICAgd2l0aCBvdGhlciBzeXN0ZW1zLgorICsgCisgKyAgICBM T05HT1BUUyBpcyBhIHZlY3RvciBvZiBgc3RydWN0IG9wdGlvbicgdGVybWluYXRlZCBieSBhbgor ICsgICAgZWxlbWVudCBjb250YWluaW5nIGEgbmFtZSB3aGljaCBpcyB6ZXJvLgorICsgCisgKyAg ICBMT05HSU5EIHJldHVybnMgdGhlIGluZGV4IGluIExPTkdPUFQgb2YgdGhlIGxvbmctbmFtZWQg b3B0aW9uIGZvdW5kLgorICsgICAgSXQgaXMgb25seSB2YWxpZCB3aGVuIGEgbG9uZy1uYW1lZCBv cHRpb24gaGFzIGJlZW4gZm91bmQgYnkgdGhlIG1vc3QKKyArICAgIHJlY2VudCBjYWxsLgorICsg CisgKyAgICBJZiBMT05HX09OTFkgaXMgbm9uemVybywgJy0nIGFzIHdlbGwgYXMgJy0tJyBjYW4g aW50cm9kdWNlCisgKyAgICBsb25nLW5hbWVkIG9wdGlvbnMuICAqLworICsgCisgKyBpbnQKKyAr IF9nZXRvcHRfaW50ZXJuYWwgKGFyZ2MsIGFyZ3YsIG9wdHN0cmluZywgbG9uZ29wdHMsIGxvbmdp bmQsIGxvbmdfb25seSkKKyArICAgICAgaW50IGFyZ2M7CisgKyAgICAgIGNoYXIgKmNvbnN0ICph cmd2OworICsgICAgICBjb25zdCBjaGFyICpvcHRzdHJpbmc7CisgKyAgICAgIGNvbnN0IHN0cnVj dCBvcHRpb24gKmxvbmdvcHRzOworICsgICAgICBpbnQgKmxvbmdpbmQ7CisgKyAgICAgIGludCBs b25nX29ubHk7CisgKyB7CisgKyAgIG9wdGFyZyA9IE5VTEw7CisgKyAKKyArICAgaWYgKG9wdGlu ZCA9PSAwKQorICsgICAgIG9wdHN0cmluZyA9IF9nZXRvcHRfaW5pdGlhbGl6ZSAob3B0c3RyaW5n KTsKKyArIAorICsgICBpZiAobmV4dGNoYXIgPT0gTlVMTCB8fCAqbmV4dGNoYXIgPT0gJ1wwJykK KyArICAgICB7CisgKyAgICAgICAvKiBBZHZhbmNlIHRvIHRoZSBuZXh0IEFSR1YtZWxlbWVudC4g ICovCisgKyAKKyArICAgICAgIGlmIChvcmRlcmluZyA9PSBQRVJNVVRFKQorICsgCXsKKyArIAkg IC8qIElmIHdlIGhhdmUganVzdCBwcm9jZXNzZWQgc29tZSBvcHRpb25zIGZvbGxvd2luZyBzb21l IG5vbi1vcHRpb25zLAorICsgCSAgICAgZXhjaGFuZ2UgdGhlbSBzbyB0aGF0IHRoZSBvcHRpb25z IGNvbWUgZmlyc3QuICAqLworICsgCisgKyAJICBpZiAoZmlyc3Rfbm9ub3B0ICE9IGxhc3Rfbm9u b3B0ICYmIGxhc3Rfbm9ub3B0ICE9IG9wdGluZCkKKyArIAkgICAgZXhjaGFuZ2UgKChjaGFyICoq KSBhcmd2KTsKKyArIAkgIGVsc2UgaWYgKGxhc3Rfbm9ub3B0ICE9IG9wdGluZCkKKyArIAkgICAg Zmlyc3Rfbm9ub3B0ID0gb3B0aW5kOworICsgCisgKyAJICAvKiBTa2lwIGFueSBhZGRpdGlvbmFs IG5vbi1vcHRpb25zCisgKyAJICAgICBhbmQgZXh0ZW5kIHRoZSByYW5nZSBvZiBub24tb3B0aW9u cyBwcmV2aW91c2x5IHNraXBwZWQuICAqLworICsgCisgKyAJICB3aGlsZSAob3B0aW5kIDwgYXJn YworICsgCQkgJiYgKGFyZ3Zbb3B0aW5kXVswXSAhPSAnLScgfHwgYXJndltvcHRpbmRdWzFdID09 ICdcMCcpKQorICsgCSAgICBvcHRpbmQrKzsKKyArIAkgIGxhc3Rfbm9ub3B0ID0gb3B0aW5kOwor ICsgCX0KKyArIAorICsgICAgICAgLyogVGhlIHNwZWNpYWwgQVJHVi1lbGVtZW50IGAtLScgbWVh bnMgcHJlbWF0dXJlIGVuZCBvZiBvcHRpb25zLgorICsgCSBTa2lwIGl0IGxpa2UgYSBudWxsIG9w dGlvbiwKKyArIAkgdGhlbiBleGNoYW5nZSB3aXRoIHByZXZpb3VzIG5vbi1vcHRpb25zIGFzIGlm IGl0IHdlcmUgYW4gb3B0aW9uLAorICsgCSB0aGVuIHNraXAgZXZlcnl0aGluZyBlbHNlIGxpa2Ug YSBub24tb3B0aW9uLiAgKi8KKyArIAorICsgICAgICAgaWYgKG9wdGluZCAhPSBhcmdjICYmICFz dHJjbXAgKGFyZ3Zbb3B0aW5kXSwgIi0tIikpCisgKyAJeworICsgCSAgb3B0aW5kKys7CisgKyAK KyArIAkgIGlmIChmaXJzdF9ub25vcHQgIT0gbGFzdF9ub25vcHQgJiYgbGFzdF9ub25vcHQgIT0g b3B0aW5kKQorICsgCSAgICBleGNoYW5nZSAoKGNoYXIgKiopIGFyZ3YpOworICsgCSAgZWxzZSBp ZiAoZmlyc3Rfbm9ub3B0ID09IGxhc3Rfbm9ub3B0KQorICsgCSAgICBmaXJzdF9ub25vcHQgPSBv cHRpbmQ7CisgKyAJICBsYXN0X25vbm9wdCA9IGFyZ2M7CisgKyAKKyArIAkgIG9wdGluZCA9IGFy Z2M7CisgKyAJfQorICsgCisgKyAgICAgICAvKiBJZiB3ZSBoYXZlIGRvbmUgYWxsIHRoZSBBUkdW LWVsZW1lbnRzLCBzdG9wIHRoZSBzY2FuCisgKyAJIGFuZCBiYWNrIG92ZXIgYW55IG5vbi1vcHRp b25zIHRoYXQgd2Ugc2tpcHBlZCBhbmQgcGVybXV0ZWQuICAqLworICsgCisgKyAgICAgICBpZiAo b3B0aW5kID09IGFyZ2MpCisgKyAJeworICsgCSAgLyogU2V0IHRoZSBuZXh0LWFyZy1pbmRleCB0 byBwb2ludCBhdCB0aGUgbm9uLW9wdGlvbnMKKyArIAkgICAgIHRoYXQgd2UgcHJldmlvdXNseSBz a2lwcGVkLCBzbyB0aGUgY2FsbGVyIHdpbGwgZGlnZXN0IHRoZW0uICAqLworICsgCSAgaWYgKGZp cnN0X25vbm9wdCAhPSBsYXN0X25vbm9wdCkKKyArIAkgICAgb3B0aW5kID0gZmlyc3Rfbm9ub3B0 OworICsgCSAgcmV0dXJuIEVPRjsKKyArIAl9CisgKyAKKyArICAgICAgIC8qIElmIHdlIGhhdmUg Y29tZSB0byBhIG5vbi1vcHRpb24gYW5kIGRpZCBub3QgcGVybXV0ZSBpdCwKKyArIAkgZWl0aGVy IHN0b3AgdGhlIHNjYW4gb3IgZGVzY3JpYmUgaXQgdG8gdGhlIGNhbGxlciBhbmQgcGFzcyBpdCBi eS4gICovCisgKyAKKyArICAgICAgIGlmICgoYXJndltvcHRpbmRdWzBdICE9ICctJyB8fCBhcmd2 W29wdGluZF1bMV0gPT0gJ1wwJykpCisgKyAJeworICsgCSAgaWYgKG9yZGVyaW5nID09IFJFUVVJ UkVfT1JERVIpCisgKyAJICAgIHJldHVybiBFT0Y7CisgKyAJICBvcHRhcmcgPSBhcmd2W29wdGlu ZCsrXTsKKyArIAkgIHJldHVybiAxOworICsgCX0KKyArIAorICsgICAgICAgLyogV2UgaGF2ZSBm b3VuZCBhbm90aGVyIG9wdGlvbi1BUkdWLWVsZW1lbnQuCisgKyAJIFNraXAgdGhlIGluaXRpYWwg cHVuY3R1YXRpb24uICAqLworICsgCisgKyAgICAgICBuZXh0Y2hhciA9IChhcmd2W29wdGluZF0g KyAxCisgKyAJCSAgKyAobG9uZ29wdHMgIT0gTlVMTCAmJiBhcmd2W29wdGluZF1bMV0gPT0gJy0n KSk7CisgKyAgICAgfQorICsgCisgKyAgIC8qIERlY29kZSB0aGUgY3VycmVudCBvcHRpb24tQVJH Vi1lbGVtZW50LiAgKi8KKyArIAorICsgICAvKiBDaGVjayB3aGV0aGVyIHRoZSBBUkdWLWVsZW1l bnQgaXMgYSBsb25nIG9wdGlvbi4KKyArIAorICsgICAgICBJZiBsb25nX29ubHkgYW5kIHRoZSBB UkdWLWVsZW1lbnQgaGFzIHRoZSBmb3JtICItZiIsIHdoZXJlIGYgaXMKKyArICAgICAgYSB2YWxp ZCBzaG9ydCBvcHRpb24sIGRvbid0IGNvbnNpZGVyIGl0IGFuIGFiYnJldmlhdGVkIGZvcm0gb2YK KyArICAgICAgYSBsb25nIG9wdGlvbiB0aGF0IHN0YXJ0cyB3aXRoIGYuICBPdGhlcndpc2UgdGhl cmUgd291bGQgYmUgbm8KKyArICAgICAgd2F5IHRvIGdpdmUgdGhlIC1mIHNob3J0IG9wdGlvbi4K KyArIAorICsgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlcmUncyBhIGxvbmcgb3B0aW9u ICJmdWJhciIgYW5kCisgKyAgICAgIHRoZSBBUkdWLWVsZW1lbnQgaXMgIi1mdSIsIGRvIGNvbnNp ZGVyIHRoYXQgYW4gYWJicmV2aWF0aW9uIG9mCisgKyAgICAgIHRoZSBsb25nIG9wdGlvbiwganVz dCBsaWtlICItLWZ1IiwgYW5kIG5vdCAiLWYiIHdpdGggYXJnICJ1Ii4KKyArIAorICsgICAgICBU aGlzIGRpc3RpbmN0aW9uIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHVzZWZ1bCBhcHByb2FjaC4gICov CisgKyAKKyArICAgaWYgKGxvbmdvcHRzICE9IE5VTEwKKyArICAgICAgICYmIChhcmd2W29wdGlu ZF1bMV0gPT0gJy0nCisgKyAJICB8fCAobG9uZ19vbmx5ICYmIChhcmd2W29wdGluZF1bMl0gfHwg IW15X2luZGV4IChvcHRzdHJpbmcsIGFyZ3Zbb3B0aW5kXVsxXSkpKSkpCisgKyAgICAgeworICsg ICAgICAgY2hhciAqbmFtZWVuZDsKKyArICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKnA7Cisg KyAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpwZm91bmQgPSBOVUxMOworICsgICAgICAgaW50 IGV4YWN0ID0gMDsKKyArICAgICAgIGludCBhbWJpZyA9IDA7CisgKyAgICAgICBpbnQgaW5kZm91 bmQ7CisgKyAgICAgICBpbnQgb3B0aW9uX2luZGV4OworICsgCisgKyAgICAgICBmb3IgKG5hbWVl bmQgPSBuZXh0Y2hhcjsgKm5hbWVlbmQgJiYgKm5hbWVlbmQgIT0gJz0nOyBuYW1lZW5kKyspCisg KyAJLyogRG8gbm90aGluZy4gICovIDsKKyArIAorICsgICAgICAgLyogVGVzdCBhbGwgbG9uZyBv cHRpb25zIGZvciBlaXRoZXIgZXhhY3QgbWF0Y2gKKyArIAkgb3IgYWJicmV2aWF0ZWQgbWF0Y2hl cy4gICovCisgKyAgICAgICBmb3IgKHAgPSBsb25nb3B0cywgb3B0aW9uX2luZGV4ID0gMDsgcC0+ bmFtZTsgcCsrLCBvcHRpb25faW5kZXgrKykKKyArIAlpZiAoIXN0cm5jbXAgKHAtPm5hbWUsIG5l eHRjaGFyLCBuYW1lZW5kIC0gbmV4dGNoYXIpKQorICsgCSAgeworICsgCSAgICBpZiAobmFtZWVu ZCAtIG5leHRjaGFyID09IHN0cmxlbiAocC0+bmFtZSkpCisgKyAJICAgICAgeworICsgCQkvKiBF eGFjdCBtYXRjaCBmb3VuZC4gICovCisgKyAJCXBmb3VuZCA9IHA7CisgKyAJCWluZGZvdW5kID0g b3B0aW9uX2luZGV4OworICsgCQlleGFjdCA9IDE7CisgKyAJCWJyZWFrOworICsgCSAgICAgIH0K KyArIAkgICAgZWxzZSBpZiAocGZvdW5kID09IE5VTEwpCisgKyAJICAgICAgeworICsgCQkvKiBG aXJzdCBub25leGFjdCBtYXRjaCBmb3VuZC4gICovCisgKyAJCXBmb3VuZCA9IHA7CisgKyAJCWlu ZGZvdW5kID0gb3B0aW9uX2luZGV4OworICsgCSAgICAgIH0KKyArIAkgICAgZWxzZQorICsgCSAg ICAgIC8qIFNlY29uZCBvciBsYXRlciBub25leGFjdCBtYXRjaCBmb3VuZC4gICovCisgKyAJICAg ICAgYW1iaWcgPSAxOworICsgCSAgfQorICsgCisgKyAgICAgICBpZiAoYW1iaWcgJiYgIWV4YWN0 KQorICsgCXsKKyArIAkgIGlmIChvcHRlcnIpCisgKyAJICAgIGZwcmludGYgKHN0ZGVyciwgIiVz OiBvcHRpb24gYCVzJyBpcyBhbWJpZ3VvdXNcbiIsCisgKyAJCSAgICAgYXJndlswXSwgYXJndltv cHRpbmRdKTsKKyArIAkgIG5leHRjaGFyICs9IHN0cmxlbiAobmV4dGNoYXIpOworICsgCSAgb3B0 aW5kKys7CisgKyAJICByZXR1cm4gJz8nOworICsgCX0KKyArIAorICsgICAgICAgaWYgKHBmb3Vu ZCAhPSBOVUxMKQorICsgCXsKKyArIAkgIG9wdGlvbl9pbmRleCA9IGluZGZvdW5kOworICsgCSAg b3B0aW5kKys7CisgKyAJICBpZiAoKm5hbWVlbmQpCisgKyAJICAgIHsKKyArIAkgICAgICAvKiBE b24ndCB0ZXN0IGhhc19hcmcgd2l0aCA+LCBiZWNhdXNlIHNvbWUgQyBjb21waWxlcnMgZG9uJ3QK KyArIAkJIGFsbG93IGl0IHRvIGJlIHVzZWQgb24gZW51bXMuICAqLworICsgCSAgICAgIGlmIChw Zm91bmQtPmhhc19hcmcpCisgKyAJCW9wdGFyZyA9IG5hbWVlbmQgKyAxOworICsgCSAgICAgIGVs c2UKKyArIAkJeworICsgCQkgIGlmIChvcHRlcnIpCisgKyAJCSAgICB7CisgKyAJCSAgICAgIGlm IChhcmd2W29wdGluZCAtIDFdWzFdID09ICctJykKKyArIAkJCS8qIC0tb3B0aW9uICovCisgKyAJ CQlmcHJpbnRmIChzdGRlcnIsCisgKyAJCQkJICIlczogb3B0aW9uIGAtLSVzJyBkb2Vzbid0IGFs bG93IGFuIGFyZ3VtZW50XG4iLAorICsgCQkJCSBhcmd2WzBdLCBwZm91bmQtPm5hbWUpOworICsg CQkgICAgICBlbHNlCisgKyAJCQkvKiArb3B0aW9uIG9yIC1vcHRpb24gKi8KKyArIAkJCWZwcmlu dGYgKHN0ZGVyciwKKyArIAkJCSAgICAgIiVzOiBvcHRpb24gYCVjJXMnIGRvZXNuJ3QgYWxsb3cg YW4gYXJndW1lbnRcbiIsCisgKyAJCQkgICAgIGFyZ3ZbMF0sIGFyZ3Zbb3B0aW5kIC0gMV1bMF0s IHBmb3VuZC0+bmFtZSk7CisgKyAJCSAgICB9CisgKyAJCSAgbmV4dGNoYXIgKz0gc3RybGVuIChu ZXh0Y2hhcik7CisgKyAJCSAgcmV0dXJuICc/JzsKKyArIAkJfQorICsgCSAgICB9CisgKyAJICBl bHNlIGlmIChwZm91bmQtPmhhc19hcmcgPT0gMSkKKyArIAkgICAgeworICsgCSAgICAgIGlmIChv cHRpbmQgPCBhcmdjKQorICsgCQlvcHRhcmcgPSBhcmd2W29wdGluZCsrXTsKKyArIAkgICAgICBl bHNlCisgKyAJCXsKKyArIAkJICBpZiAob3B0ZXJyKQorICsgCQkgICAgZnByaW50ZiAoc3RkZXJy LCAiJXM6IG9wdGlvbiBgJXMnIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorICsgCQkJICAgICBh cmd2WzBdLCBhcmd2W29wdGluZCAtIDFdKTsKKyArIAkJICBuZXh0Y2hhciArPSBzdHJsZW4gKG5l eHRjaGFyKTsKKyArIAkJICByZXR1cm4gb3B0c3RyaW5nWzBdID09ICc6JyA/ICc6JyA6ICc/JzsK KyArIAkJfQorICsgCSAgICB9CisgKyAJICBuZXh0Y2hhciArPSBzdHJsZW4gKG5leHRjaGFyKTsK KyArIAkgIGlmIChsb25naW5kICE9IE5VTEwpCisgKyAJICAgICpsb25naW5kID0gb3B0aW9uX2lu ZGV4OworICsgCSAgaWYgKHBmb3VuZC0+ZmxhZykKKyArIAkgICAgeworICsgCSAgICAgICoocGZv dW5kLT5mbGFnKSA9IHBmb3VuZC0+dmFsOworICsgCSAgICAgIHJldHVybiAwOworICsgCSAgICB9 CisgKyAJICByZXR1cm4gcGZvdW5kLT52YWw7CisgKyAJfQorICsgCisgKyAgICAgICAvKiBDYW4n dCBmaW5kIGl0IGFzIGEgbG9uZyBvcHRpb24uICBJZiB0aGlzIGlzIG5vdCBnZXRvcHRfbG9uZ19v bmx5LAorICsgCSBvciB0aGUgb3B0aW9uIHN0YXJ0cyB3aXRoICctLScgb3IgaXMgbm90IGEgdmFs aWQgc2hvcnQKKyArIAkgb3B0aW9uLCB0aGVuIGl0J3MgYW4gZXJyb3IuCisgKyAJIE90aGVyd2lz ZSBpbnRlcnByZXQgaXQgYXMgYSBzaG9ydCBvcHRpb24uICAqLworICsgICAgICAgaWYgKCFsb25n X29ubHkgfHwgYXJndltvcHRpbmRdWzFdID09ICctJworICsgCSAgfHwgbXlfaW5kZXggKG9wdHN0 cmluZywgKm5leHRjaGFyKSA9PSBOVUxMKQorICsgCXsKKyArIAkgIGlmIChvcHRlcnIpCisgKyAJ ICAgIHsKKyArIAkgICAgICBpZiAoYXJndltvcHRpbmRdWzFdID09ICctJykKKyArIAkJLyogLS1v cHRpb24gKi8KKyArIAkJZnByaW50ZiAoc3RkZXJyLCAiJXM6IHVucmVjb2duaXplZCBvcHRpb24g YC0tJXMnXG4iLAorICsgCQkJIGFyZ3ZbMF0sIG5leHRjaGFyKTsKKyArIAkgICAgICBlbHNlCisg KyAJCS8qICtvcHRpb24gb3IgLW9wdGlvbiAqLworICsgCQlmcHJpbnRmIChzdGRlcnIsICIlczog dW5yZWNvZ25pemVkIG9wdGlvbiBgJWMlcydcbiIsCisgKyAJCQkgYXJndlswXSwgYXJndltvcHRp bmRdWzBdLCBuZXh0Y2hhcik7CisgKyAJICAgIH0KKyArIAkgIG5leHRjaGFyID0gKGNoYXIgKikg IiI7CisgKyAJICBvcHRpbmQrKzsKKyArIAkgIHJldHVybiAnPyc7CisgKyAJfQorICsgICAgIH0K KyArIAorICsgICAvKiBMb29rIGF0IGFuZCBoYW5kbGUgdGhlIG5leHQgc2hvcnQgb3B0aW9uLWNo YXJhY3Rlci4gICovCisgKyAKKyArICAgeworICsgICAgIGNoYXIgYyA9ICpuZXh0Y2hhcisrOwor ICsgICAgIGNoYXIgKnRlbXAgPSBteV9pbmRleCAob3B0c3RyaW5nLCBjKTsKKyArIAorICsgICAg IC8qIEluY3JlbWVudCBgb3B0aW5kJyB3aGVuIHdlIHN0YXJ0IHRvIHByb2Nlc3MgaXRzIGxhc3Qg Y2hhcmFjdGVyLiAgKi8KKyArICAgICBpZiAoKm5leHRjaGFyID09ICdcMCcpCisgKyAgICAgICAr K29wdGluZDsKKyArIAorICsgICAgIGlmICh0ZW1wID09IE5VTEwgfHwgYyA9PSAnOicpCisgKyAg ICAgICB7CisgKyAJaWYgKG9wdGVycikKKyArIAkgIHsKKyArIAkgICAgaWYgKHBvc2l4bHlfY29y cmVjdCkKKyArIAkgICAgICAvKiAxMDAzLjIgc3BlY2lmaWVzIHRoZSBmb3JtYXQgb2YgdGhpcyBt ZXNzYWdlLiAgKi8KKyArIAkgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczogaWxsZWdhbCBvcHRp b24gLS0gJWNcbiIsIGFyZ3ZbMF0sIGMpOworICsgCSAgICBlbHNlCisgKyAJICAgICAgZnByaW50 ZiAoc3RkZXJyLCAiJXM6IGludmFsaWQgb3B0aW9uIC0tICVjXG4iLCBhcmd2WzBdLCBjKTsKKyAr IAkgIH0KKyArIAlvcHRvcHQgPSBjOworICsgCXJldHVybiAnPyc7CisgKyAgICAgICB9CisgKyAg ICAgaWYgKHRlbXBbMV0gPT0gJzonKQorICsgICAgICAgeworICsgCWlmICh0ZW1wWzJdID09ICc6 JykKKyArIAkgIHsKKyArIAkgICAgLyogVGhpcyBpcyBhbiBvcHRpb24gdGhhdCBhY2NlcHRzIGFu IGFyZ3VtZW50IG9wdGlvbmFsbHkuICAqLworICsgCSAgICBpZiAoKm5leHRjaGFyICE9ICdcMCcp CisgKyAJICAgICAgeworICsgCQlvcHRhcmcgPSBuZXh0Y2hhcjsKKyArIAkJb3B0aW5kKys7Cisg KyAJICAgICAgfQorICsgCSAgICBlbHNlCisgKyAJICAgICAgb3B0YXJnID0gTlVMTDsKKyArIAkg ICAgbmV4dGNoYXIgPSBOVUxMOworICsgCSAgfQorICsgCWVsc2UKKyArIAkgIHsKKyArIAkgICAg LyogVGhpcyBpcyBhbiBvcHRpb24gdGhhdCByZXF1aXJlcyBhbiBhcmd1bWVudC4gICovCisgKyAJ ICAgIGlmICgqbmV4dGNoYXIgIT0gJ1wwJykKKyArIAkgICAgICB7CisgKyAJCW9wdGFyZyA9IG5l eHRjaGFyOworICsgCQkvKiBJZiB3ZSBlbmQgdGhpcyBBUkdWLWVsZW1lbnQgYnkgdGFraW5nIHRo ZSByZXN0IGFzIGFuIGFyZywKKyArIAkJICAgd2UgbXVzdCBhZHZhbmNlIHRvIHRoZSBuZXh0IGVs ZW1lbnQgbm93LiAgKi8KKyArIAkJb3B0aW5kKys7CisgKyAJICAgICAgfQorICsgCSAgICBlbHNl IGlmIChvcHRpbmQgPT0gYXJnYykKKyArIAkgICAgICB7CisgKyAJCWlmIChvcHRlcnIpCisgKyAJ CSAgeworICsgCQkgICAgLyogMTAwMy4yIHNwZWNpZmllcyB0aGUgZm9ybWF0IG9mIHRoaXMgbWVz c2FnZS4gICovCisgKyAJCSAgICBmcHJpbnRmIChzdGRlcnIsICIlczogb3B0aW9uIHJlcXVpcmVz IGFuIGFyZ3VtZW50IC0tICVjXG4iLAorICsgCQkJICAgICBhcmd2WzBdLCBjKTsKKyArIAkJICB9 CisgKyAJCW9wdG9wdCA9IGM7CisgKyAJCWlmIChvcHRzdHJpbmdbMF0gPT0gJzonKQorICsgCQkg IGMgPSAnOic7CisgKyAJCWVsc2UKKyArIAkJICBjID0gJz8nOworICsgCSAgICAgIH0KKyArIAkg ICAgZWxzZQorICsgCSAgICAgIC8qIFdlIGFscmVhZHkgaW5jcmVtZW50ZWQgYG9wdGluZCcgb25j ZTsKKyArIAkJIGluY3JlbWVudCBpdCBhZ2FpbiB3aGVuIHRha2luZyBuZXh0IEFSR1YtZWx0IGFz IGFyZ3VtZW50LiAgKi8KKyArIAkgICAgICBvcHRhcmcgPSBhcmd2W29wdGluZCsrXTsKKyArIAkg ICAgbmV4dGNoYXIgPSBOVUxMOworICsgCSAgfQorICsgICAgICAgfQorICsgICAgIHJldHVybiBj OworICsgICB9CisgKyB9CisgKyAKKyArIGludAorICsgZ2V0b3B0IChhcmdjLCBhcmd2LCBvcHRz dHJpbmcpCisgKyAgICAgIGludCBhcmdjOworICsgICAgICBjaGFyICpjb25zdCAqYXJndjsKKyAr ICAgICAgY29uc3QgY2hhciAqb3B0c3RyaW5nOworICsgeworICsgICByZXR1cm4gX2dldG9wdF9p bnRlcm5hbCAoYXJnYywgYXJndiwgb3B0c3RyaW5nLAorICsgCQkJICAgKGNvbnN0IHN0cnVjdCBv cHRpb24gKikgMCwKKyArIAkJCSAgIChpbnQgKikgMCwKKyArIAkJCSAgIDApOworICsgfQorICsg CisgKyAjZW5kaWYJLyogX0xJQkMgb3Igbm90IF9fR05VX0xJQlJBUllfXy4gICovCisgKyAMCisg KyAjaWZkZWYgVEVTVAorICsgCisgKyAvKiBDb21waWxlIHdpdGggLURURVNUIHRvIG1ha2UgYW4g ZXhlY3V0YWJsZSBmb3IgdXNlIGluIHRlc3RpbmcKKyArICAgIHRoZSBhYm92ZSBkZWZpbml0aW9u IG9mIGBnZXRvcHQnLiAgKi8KKyArIAorICsgaW50CisgKyBtYWluIChhcmdjLCBhcmd2KQorICsg ICAgICBpbnQgYXJnYzsKKyArICAgICAgY2hhciAqKmFyZ3Y7CisgKyB7CisgKyAgIGludCBjOwor ICsgICBpbnQgZGlnaXRfb3B0aW5kID0gMDsKKyArIAorICsgICB3aGlsZSAoMSkKKyArICAgICB7 CisgKyAgICAgICBpbnQgdGhpc19vcHRpb25fb3B0aW5kID0gb3B0aW5kID8gb3B0aW5kIDogMTsK KyArIAorICsgICAgICAgYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImFiYzpkOjAxMjM0NTY3ODki KTsKKyArICAgICAgIGlmIChjID09IEVPRikKKyArIAlicmVhazsKKyArIAorICsgICAgICAgc3dp dGNoIChjKQorICsgCXsKKyArIAljYXNlICcwJzoKKyArIAljYXNlICcxJzoKKyArIAljYXNlICcy JzoKKyArIAljYXNlICczJzoKKyArIAljYXNlICc0JzoKKyArIAljYXNlICc1JzoKKyArIAljYXNl ICc2JzoKKyArIAljYXNlICc3JzoKKyArIAljYXNlICc4JzoKKyArIAljYXNlICc5JzoKKyArIAkg IGlmIChkaWdpdF9vcHRpbmQgIT0gMCAmJiBkaWdpdF9vcHRpbmQgIT0gdGhpc19vcHRpb25fb3B0 aW5kKQorICsgCSAgICBwcmludGYgKCJkaWdpdHMgb2NjdXIgaW4gdHdvIGRpZmZlcmVudCBhcmd2 LWVsZW1lbnRzLlxuIik7CisgKyAJICBkaWdpdF9vcHRpbmQgPSB0aGlzX29wdGlvbl9vcHRpbmQ7 CisgKyAJICBwcmludGYgKCJvcHRpb24gJWNcbiIsIGMpOworICsgCSAgYnJlYWs7CisgKyAKKyAr IAljYXNlICdhJzoKKyArIAkgIHByaW50ZiAoIm9wdGlvbiBhXG4iKTsKKyArIAkgIGJyZWFrOwor ICsgCisgKyAJY2FzZSAnYic6CisgKyAJICBwcmludGYgKCJvcHRpb24gYlxuIik7CisgKyAJICBi cmVhazsKKyArIAorICsgCWNhc2UgJ2MnOgorICsgCSAgcHJpbnRmICgib3B0aW9uIGMgd2l0aCB2 YWx1ZSBgJXMnXG4iLCBvcHRhcmcpOworICsgCSAgYnJlYWs7CisgKyAKKyArIAljYXNlICc/JzoK KyArIAkgIGJyZWFrOworICsgCisgKyAJZGVmYXVsdDoKKyArIAkgIHByaW50ZiAoIj8/IGdldG9w dCByZXR1cm5lZCBjaGFyYWN0ZXIgY29kZSAwJW8gPz9cbiIsIGMpOworICsgCX0KKyArICAgICB9 CisgKyAKKyArICAgaWYgKG9wdGluZCA8IGFyZ2MpCisgKyAgICAgeworICsgICAgICAgcHJpbnRm ICgibm9uLW9wdGlvbiBBUkdWLWVsZW1lbnRzOiAiKTsKKyArICAgICAgIHdoaWxlIChvcHRpbmQg PCBhcmdjKQorICsgCXByaW50ZiAoIiVzICIsIGFyZ3Zbb3B0aW5kKytdKTsKKyArICAgICAgIHBy aW50ZiAoIlxuIik7CisgKyAgICAgfQorICsgCisgKyAgIGV4aXQgKDApOworICsgfQorICsgCisg KyAjZW5kaWYgLyogVEVTVCAqLwpkaWZmIC1jIC1yIC1QIG5ldGhhY2szLWdub21lLm9yaWcvZmls ZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmggbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gt d2luOjpnbm9tZTo6Z2V0b3B0LmgKKioqIG5ldGhhY2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gt d2luOjpnbm9tZTo6Z2V0b3B0LmgJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCi0tLSBuZXRoYWNr My1nbm9tZS9maWxlcy9wYXRjaC13aW46Omdub21lOjpnZXRvcHQuaAlTYXQgTWFyIDMwIDIwOjM1 OjI1IDIwMDIKKioqKioqKioqKioqKioqCioqKiAwICoqKioKLS0tIDEsMTM0IC0tLS0KKyAqKiog L2Rldi9udWxsCVNhdCBNYXIgMzAgMjA6Mjc6NTIgMjAwMgorIC0tLSB3aW4vZ25vbWUvZ2V0b3B0 LmgJU2F0IE1hciAzMCAyMDoyNzoxNyAyMDAyCisgKioqKioqKioqKioqKioqCisgKioqIDAgKioq KgorIC0tLSAxLDEyOSAtLS0tCisgKyAvKiBEZWNsYXJhdGlvbnMgZm9yIGdldG9wdC4KKyArICAg IENvcHlyaWdodCAoQykgMTk4OSwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyArIAorICsgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyArICAgIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZQorICsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy LCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorICsgICAgbGF0ZXIgdmVyc2lvbi4KKyArIAorICsg ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICsgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICsgICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyArIAorICsgICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyArICAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCisgKyAgICBGb3VuZGF0aW9uLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzks IFVTQS4gICovCisgKyAKKyArICNpZm5kZWYgX0dFVE9QVF9ICisgKyAjZGVmaW5lIF9HRVRPUFRf SCAxCisgKyAKKyArICNpZmRlZglfX2NwbHVzcGx1cworICsgZXh0ZXJuICJDIiB7CisgKyAjZW5k aWYKKyArIAorICsgLyogRm9yIGNvbW11bmljYXRpb24gZnJvbSBgZ2V0b3B0JyB0byB0aGUgY2Fs bGVyLgorICsgICAgV2hlbiBgZ2V0b3B0JyBmaW5kcyBhbiBvcHRpb24gdGhhdCB0YWtlcyBhbiBh cmd1bWVudCwKKyArICAgIHRoZSBhcmd1bWVudCB2YWx1ZSBpcyByZXR1cm5lZCBoZXJlLgorICsg ICAgQWxzbywgd2hlbiBgb3JkZXJpbmcnIGlzIFJFVFVSTl9JTl9PUkRFUiwKKyArICAgIGVhY2gg bm9uLW9wdGlvbiBBUkdWLWVsZW1lbnQgaXMgcmV0dXJuZWQgaGVyZS4gICovCisgKyAKKyArIGV4 dGVybiBjaGFyICpvcHRhcmc7CisgKyAKKyArIC8qIEluZGV4IGluIEFSR1Ygb2YgdGhlIG5leHQg ZWxlbWVudCB0byBiZSBzY2FubmVkLgorICsgICAgVGhpcyBpcyB1c2VkIGZvciBjb21tdW5pY2F0 aW9uIHRvIGFuZCBmcm9tIHRoZSBjYWxsZXIKKyArICAgIGFuZCBmb3IgY29tbXVuaWNhdGlvbiBi ZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gYGdldG9wdCcuCisgKyAKKyArICAgIE9uIGVudHJ5 IHRvIGBnZXRvcHQnLCB6ZXJvIG1lYW5zIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGw7IGluaXRpYWxp emUuCisgKyAKKyArICAgIFdoZW4gYGdldG9wdCcgcmV0dXJucyBFT0YsIHRoaXMgaXMgdGhlIGlu ZGV4IG9mIHRoZSBmaXJzdCBvZiB0aGUKKyArICAgIG5vbi1vcHRpb24gZWxlbWVudHMgdGhhdCB0 aGUgY2FsbGVyIHNob3VsZCBpdHNlbGYgc2Nhbi4KKyArIAorICsgICAgT3RoZXJ3aXNlLCBgb3B0 aW5kJyBjb21tdW5pY2F0ZXMgZnJvbSBvbmUgY2FsbCB0byB0aGUgbmV4dAorICsgICAgaG93IG11 Y2ggb2YgQVJHViBoYXMgYmVlbiBzY2FubmVkIHNvIGZhci4gICovCisgKyAKKyArIGV4dGVybiBp bnQgb3B0aW5kOworICsgCisgKyAvKiBDYWxsZXJzIHN0b3JlIHplcm8gaGVyZSB0byBpbmhpYml0 IHRoZSBlcnJvciBtZXNzYWdlIGBnZXRvcHQnIHByaW50cworICsgICAgZm9yIHVucmVjb2duaXpl ZCBvcHRpb25zLiAgKi8KKyArIAorICsgZXh0ZXJuIGludCBvcHRlcnI7CisgKyAKKyArIC8qIFNl dCB0byBhbiBvcHRpb24gY2hhcmFjdGVyIHdoaWNoIHdhcyB1bnJlY29nbml6ZWQuICAqLworICsg CisgKyBleHRlcm4gaW50IG9wdG9wdDsKKyArIAorICsgLyogRGVzY3JpYmUgdGhlIGxvbmctbmFt ZWQgb3B0aW9ucyByZXF1ZXN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICsgICAgVGhlIExPTkdf T1BUSU9OUyBhcmd1bWVudCB0byBnZXRvcHRfbG9uZyBvciBnZXRvcHRfbG9uZ19vbmx5IGlzIGEg dmVjdG9yCisgKyAgICBvZiBgc3RydWN0IG9wdGlvbicgdGVybWluYXRlZCBieSBhbiBlbGVtZW50 IGNvbnRhaW5pbmcgYSBuYW1lIHdoaWNoIGlzCisgKyAgICB6ZXJvLgorICsgCisgKyAgICBUaGUg ZmllbGQgYGhhc19hcmcnIGlzOgorICsgICAgbm9fYXJndW1lbnQJCShvciAwKSBpZiB0aGUgb3B0 aW9uIGRvZXMgbm90IHRha2UgYW4gYXJndW1lbnQsCisgKyAgICByZXF1aXJlZF9hcmd1bWVudAko b3IgMSkgaWYgdGhlIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCwKKyArICAgIG9wdGlvbmFs X2FyZ3VtZW50IAkob3IgMikgaWYgdGhlIG9wdGlvbiB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVu dC4KKyArIAorICsgICAgSWYgdGhlIGZpZWxkIGBmbGFnJyBpcyBub3QgTlVMTCwgaXQgcG9pbnRz IHRvIGEgdmFyaWFibGUgdGhhdCBpcyBzZXQKKyArICAgIHRvIHRoZSB2YWx1ZSBnaXZlbiBpbiB0 aGUgZmllbGQgYHZhbCcgd2hlbiB0aGUgb3B0aW9uIGlzIGZvdW5kLCBidXQKKyArICAgIGxlZnQg dW5jaGFuZ2VkIGlmIHRoZSBvcHRpb24gaXMgbm90IGZvdW5kLgorICsgCisgKyAgICBUbyBoYXZl IGEgbG9uZy1uYW1lZCBvcHRpb24gZG8gc29tZXRoaW5nIG90aGVyIHRoYW4gc2V0IGFuIGBpbnQn IHRvCisgKyAgICBhIGNvbXBpbGVkLWluIGNvbnN0YW50LCBzdWNoIGFzIHNldCBhIHZhbHVlIGZy b20gYG9wdGFyZycsIHNldCB0aGUKKyArICAgIG9wdGlvbidzIGBmbGFnJyBmaWVsZCB0byB6ZXJv IGFuZCBpdHMgYHZhbCcgZmllbGQgdG8gYSBub256ZXJvCisgKyAgICB2YWx1ZSAodGhlIGVxdWl2 YWxlbnQgc2luZ2xlLWxldHRlciBvcHRpb24gY2hhcmFjdGVyLCBpZiB0aGVyZSBpcworICsgICAg b25lKS4gIEZvciBsb25nIG9wdGlvbnMgdGhhdCBoYXZlIGEgemVybyBgZmxhZycgZmllbGQsIGBn ZXRvcHQnCisgKyAgICByZXR1cm5zIHRoZSBjb250ZW50cyBvZiB0aGUgYHZhbCcgZmllbGQuICAq LworICsgCisgKyBzdHJ1Y3Qgb3B0aW9uCisgKyB7CisgKyAjaWYJX19TVERDX18KKyArICAgY29u c3QgY2hhciAqbmFtZTsKKyArICNlbHNlCisgKyAgIGNoYXIgKm5hbWU7CisgKyAjZW5kaWYKKyAr ICAgLyogaGFzX2FyZyBjYW4ndCBiZSBhbiBlbnVtIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgY29t cGxhaW4gYWJvdXQKKyArICAgICAgdHlwZSBtaXNtYXRjaGVzIGluIGFsbCB0aGUgY29kZSB0aGF0 IGFzc3VtZXMgaXQgaXMgYW4gaW50LiAgKi8KKyArICAgaW50IGhhc19hcmc7CisgKyAgIGludCAq ZmxhZzsKKyArICAgaW50IHZhbDsKKyArIH07CisgKyAKKyArIC8qIE5hbWVzIGZvciB0aGUgdmFs dWVzIG9mIHRoZSBgaGFzX2FyZycgZmllbGQgb2YgYHN0cnVjdCBvcHRpb24nLiAgKi8KKyArIAor ICsgI2RlZmluZQlub19hcmd1bWVudAkJMAorICsgI2RlZmluZSByZXF1aXJlZF9hcmd1bWVudAkx CisgKyAjZGVmaW5lIG9wdGlvbmFsX2FyZ3VtZW50CTIKKyArIAorICsgI2lmIF9fU1REQ19fCisg KyAjaWYgZGVmaW5lZChfX0dOVV9MSUJSQVJZX18pCisgKyAvKiBNYW55IG90aGVyIGxpYnJhcmll cyBoYXZlIGNvbmZsaWN0aW5nIHByb3RvdHlwZXMgZm9yIGdldG9wdCwgd2l0aAorICsgICAgZGlm ZmVyZW5jZXMgaW4gdGhlIGNvbnN0cywgaW4gc3RkbGliLmguICBUbyBhdm9pZCBjb21waWxhdGlv bgorICsgICAgZXJyb3JzLCBvbmx5IHByb3RvdHlwZSBnZXRvcHQgZm9yIHRoZSBHTlUgQyBsaWJy YXJ5LiAgKi8KKyArIGV4dGVybiBpbnQgZ2V0b3B0IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFy Z3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cyk7CisgKyAjZWxzZSAvKiBub3QgX19HTlVfTElCUkFS WV9fICovCisgKyBleHRlcm4gaW50IGdldG9wdCAoKTsKKyArICNlbmRpZiAvKiBub3QgX19HTlVf TElCUkFSWV9fICovCisgKyBleHRlcm4gaW50IGdldG9wdF9sb25nIChpbnQgYXJnYywgY2hhciAq Y29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKKyArIAkJICAgICAgICBjb25zdCBz dHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKKyArIGV4dGVybiBpbnQgZ2V0 b3B0X2xvbmdfb25seSAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LAorICsgCQkJICAgICBj b25zdCBjaGFyICpzaG9ydG9wdHMsCisgKyAJCSAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0 aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKKyArIAorICsgLyogSW50ZXJuYWwgb25seS4g IFVzZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LiAgKi8KKyArIGV4dGVybiBpbnQg X2dldG9wdF9pbnRlcm5hbCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LAorICsgCQkJICAg ICBjb25zdCBjaGFyICpzaG9ydG9wdHMsCisgKyAJCSAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg b3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kLAorICsgCQkJICAgICBpbnQgbG9uZ19vbmx5 KTsKKyArICNlbHNlIC8qIG5vdCBfX1NURENfXyAqLworICsgZXh0ZXJuIGludCBnZXRvcHQgKCk7 CisgKyBleHRlcm4gaW50IGdldG9wdF9sb25nICgpOworICsgZXh0ZXJuIGludCBnZXRvcHRfbG9u Z19vbmx5ICgpOworICsgCisgKyBleHRlcm4gaW50IF9nZXRvcHRfaW50ZXJuYWwgKCk7CisgKyAj ZW5kaWYgLyogbm90IF9fU1REQ19fICovCisgKyAKKyArICNpZmRlZglfX2NwbHVzcGx1cworICsg fQorICsgI2VuZGlmCisgKyAKKyArICNlbmRpZiAvKiBfR0VUT1BUX0ggKi8KZGlmZiAtYyAtciAt UCBuZXRoYWNrMy1nbm9tZS5vcmlnL2ZpbGVzL3BhdGNoLXdpbjo6Z25vbWU6OmdldG9wdDEuYyBu ZXRoYWNrMy1nbm9tZS9maWxlcy9wYXRjaC13aW46Omdub21lOjpnZXRvcHQxLmMKKioqIG5ldGhh Y2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0MS5jCVRodSBKYW4g IDEgMDE6MDA6MDAgMTk3MAotLS0gbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gtd2luOjpnbm9t ZTo6Z2V0b3B0MS5jCVNhdCBNYXIgMzAgMjE6MjM6MTcgMjAwMgoqKioqKioqKioqKioqKioKKioq IDAgKioqKgotLS0gMSwxODUgLS0tLQorICoqKiAvZGV2L251bGwJU2F0IE1hciAzMCAyMToyMjow MCAyMDAyCisgLS0tIHdpbi9nbm9tZS9nZXRvcHQxLmMJU2F0IE1hciAzMCAyMToyMTo1OSAyMDAy CisgKioqKioqKioqKioqKioqCisgKioqIDAgKioqKgorIC0tLSAxLDE4MCAtLS0tCisgKyAvKiBn ZXRvcHRfbG9uZyBhbmQgZ2V0b3B0X2xvbmdfb25seSBlbnRyeSBwb2ludHMgZm9yIEdOVSBnZXRv cHQuCisgKyAgICBDb3B5cmlnaHQgKEMpIDE5ODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgMTk5Mwor ICsgCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICsgCisgKyAgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorICsgICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisgKyAgICBsYXRlciB2 ZXJzaW9uLgorICsgCisgKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyArICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKyAgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKyAg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICsgCisgKyAg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICsgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKyArICAgIEZvdW5kYXRpb24sIDY3NSBNYXNzIEF2ZSwgQ2Ft YnJpZGdlLCBNQSAwMjEzOSwgVVNBLiAgKi8KKyArIAwKKyArICNpZmRlZiBIQVZFX0NPTkZJR19I CisgKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgKyAjZW5kaWYKKyArIAorICsgI2luY2x1ZGUgImdl dG9wdC5oIgorICsgCisgKyAjaWZuZGVmIF9fU1REQ19fCisgKyAvKiBUaGlzIGlzIGEgc2VwYXJh dGUgY29uZGl0aW9uYWwgc2luY2Ugc29tZSBzdGRjIHN5c3RlbXMKKyArICAgIHJlamVjdCBgZGVm aW5lZCAoY29uc3QpJy4gICovCisgKyAjaWZuZGVmIGNvbnN0CisgKyAjZGVmaW5lIGNvbnN0Cisg KyAjZW5kaWYKKyArICNlbmRpZgorICsgCisgKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyArIAorICsg LyogQ29tbWVudCBvdXQgYWxsIHRoaXMgY29kZSBpZiB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExp YnJhcnksIGFuZCBhcmUgbm90CisgKyAgICBhY3R1YWxseSBjb21waWxpbmcgdGhlIGxpYnJhcnkg aXRzZWxmLiAgVGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIEdOVSBDCisgKyAgICBMaWJyYXJ5LCBi dXQgYWxzbyBpbmNsdWRlZCBpbiBtYW55IG90aGVyIEdOVSBkaXN0cmlidXRpb25zLiAgQ29tcGls aW5nCisgKyAgICBhbmQgbGlua2luZyBpbiB0aGlzIGNvZGUgaXMgYSB3YXN0ZSB3aGVuIHVzaW5n IHRoZSBHTlUgQyBsaWJyYXJ5CisgKyAgICAoZXNwZWNpYWxseSBpZiBpdCBpcyBhIHNoYXJlZCBs aWJyYXJ5KS4gIFJhdGhlciB0aGFuIGhhdmluZyBldmVyeSBHTlUKKyArICAgIHByb2dyYW0gdW5k ZXJzdGFuZCBgY29uZmlndXJlIC0td2l0aC1nbnUtbGliYycgYW5kIG9taXQgdGhlIG9iamVjdCBm aWxlcywKKyArICAgIGl0IGlzIHNpbXBsZXIgdG8ganVzdCBkbyB0aGlzIGluIHRoZSBzb3VyY2Ug Zm9yIGVhY2ggc3VjaCBmaWxlLiAgKi8KKyArIAorICsgI2lmIGRlZmluZWQgKF9MSUJDKSB8fCAh ZGVmaW5lZCAoX19HTlVfTElCUkFSWV9fKQorICsgCisgKyAKKyArIC8qIFRoaXMgbmVlZHMgdG8g Y29tZSBhZnRlciBzb21lIGxpYnJhcnkgI2luY2x1ZGUKKyArICAgIHRvIGdldCBfX0dOVV9MSUJS QVJZX18gZGVmaW5lZC4gICovCisgKyAjaWZkZWYgX19HTlVfTElCUkFSWV9fCisgKyAjaW5jbHVk ZSA8c3RkbGliLmg+CisgKyAjZWxzZQorICsgY2hhciAqZ2V0ZW52ICgpOworICsgI2VuZGlmCisg KyAKKyArICNpZm5kZWYJTlVMTAorICsgI2RlZmluZSBOVUxMIDAKKyArICNlbmRpZgorICsgCisg KyBpbnQKKyArIGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCBvcHRpb25zLCBsb25nX29wdGlvbnMs IG9wdF9pbmRleCkKKyArICAgICAgaW50IGFyZ2M7CisgKyAgICAgIGNoYXIgKmNvbnN0ICphcmd2 OworICsgICAgICBjb25zdCBjaGFyICpvcHRpb25zOworICsgICAgICBjb25zdCBzdHJ1Y3Qgb3B0 aW9uICpsb25nX29wdGlvbnM7CisgKyAgICAgIGludCAqb3B0X2luZGV4OworICsgeworICsgICBy ZXR1cm4gX2dldG9wdF9pbnRlcm5hbCAoYXJnYywgYXJndiwgb3B0aW9ucywgbG9uZ19vcHRpb25z LCBvcHRfaW5kZXgsIDApOworICsgfQorICsgCisgKyAvKiBMaWtlIGdldG9wdF9sb25nLCBidXQg Jy0nIGFzIHdlbGwgYXMgJy0tJyBjYW4gaW5kaWNhdGUgYSBsb25nIG9wdGlvbi4KKyArICAgIElm IGFuIG9wdGlvbiB0aGF0IHN0YXJ0cyB3aXRoICctJyAobm90ICctLScpIGRvZXNuJ3QgbWF0Y2gg YSBsb25nIG9wdGlvbiwKKyArICAgIGJ1dCBkb2VzIG1hdGNoIGEgc2hvcnQgb3B0aW9uLCBpdCBp cyBwYXJzZWQgYXMgYSBzaG9ydCBvcHRpb24KKyArICAgIGluc3RlYWQuICAqLworICsgCisgKyBp bnQKKyArIGdldG9wdF9sb25nX29ubHkgKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGxvbmdfb3B0aW9u cywgb3B0X2luZGV4KQorICsgICAgICBpbnQgYXJnYzsKKyArICAgICAgY2hhciAqY29uc3QgKmFy Z3Y7CisgKyAgICAgIGNvbnN0IGNoYXIgKm9wdGlvbnM7CisgKyAgICAgIGNvbnN0IHN0cnVjdCBv cHRpb24gKmxvbmdfb3B0aW9uczsKKyArICAgICAgaW50ICpvcHRfaW5kZXg7CisgKyB7CisgKyAg IHJldHVybiBfZ2V0b3B0X2ludGVybmFsIChhcmdjLCBhcmd2LCBvcHRpb25zLCBsb25nX29wdGlv bnMsIG9wdF9pbmRleCwgMSk7CisgKyB9CisgKyAKKyArIAorICsgI2VuZGlmCS8qIF9MSUJDIG9y IG5vdCBfX0dOVV9MSUJSQVJZX18uICAqLworICsgDAorICsgI2lmZGVmIFRFU1QKKyArIAorICsg I2luY2x1ZGUgPHN0ZGlvLmg+CisgKyAKKyArIGludAorICsgbWFpbiAoYXJnYywgYXJndikKKyAr ICAgICAgaW50IGFyZ2M7CisgKyAgICAgIGNoYXIgKiphcmd2OworICsgeworICsgICBpbnQgYzsK KyArICAgaW50IGRpZ2l0X29wdGluZCA9IDA7CisgKyAKKyArICAgd2hpbGUgKDEpCisgKyAgICAg eworICsgICAgICAgaW50IHRoaXNfb3B0aW9uX29wdGluZCA9IG9wdGluZCA/IG9wdGluZCA6IDE7 CisgKyAgICAgICBpbnQgb3B0aW9uX2luZGV4ID0gMDsKKyArICAgICAgIHN0YXRpYyBzdHJ1Y3Qg b3B0aW9uIGxvbmdfb3B0aW9uc1tdID0KKyArICAgICAgIHsKKyArIAl7ImFkZCIsIDEsIDAsIDB9 LAorICsgCXsiYXBwZW5kIiwgMCwgMCwgMH0sCisgKyAJeyJkZWxldGUiLCAxLCAwLCAwfSwKKyAr IAl7InZlcmJvc2UiLCAwLCAwLCAwfSwKKyArIAl7ImNyZWF0ZSIsIDAsIDAsIDB9LAorICsgCXsi ZmlsZSIsIDEsIDAsIDB9LAorICsgCXswLCAwLCAwLCAwfQorICsgICAgICAgfTsKKyArIAorICsg ICAgICAgYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiYWJjOmQ6MDEyMzQ1Njc4OSIsCisg KyAJCSAgICAgICBsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpOworICsgICAgICAgaWYgKGMg PT0gRU9GKQorICsgCWJyZWFrOworICsgCisgKyAgICAgICBzd2l0Y2ggKGMpCisgKyAJeworICsg CWNhc2UgMDoKKyArIAkgIHByaW50ZiAoIm9wdGlvbiAlcyIsIGxvbmdfb3B0aW9uc1tvcHRpb25f aW5kZXhdLm5hbWUpOworICsgCSAgaWYgKG9wdGFyZykKKyArIAkgICAgcHJpbnRmICgiIHdpdGgg YXJnICVzIiwgb3B0YXJnKTsKKyArIAkgIHByaW50ZiAoIlxuIik7CisgKyAJICBicmVhazsKKyAr IAorICsgCWNhc2UgJzAnOgorICsgCWNhc2UgJzEnOgorICsgCWNhc2UgJzInOgorICsgCWNhc2Ug JzMnOgorICsgCWNhc2UgJzQnOgorICsgCWNhc2UgJzUnOgorICsgCWNhc2UgJzYnOgorICsgCWNh c2UgJzcnOgorICsgCWNhc2UgJzgnOgorICsgCWNhc2UgJzknOgorICsgCSAgaWYgKGRpZ2l0X29w dGluZCAhPSAwICYmIGRpZ2l0X29wdGluZCAhPSB0aGlzX29wdGlvbl9vcHRpbmQpCisgKyAJICAg IHByaW50ZiAoImRpZ2l0cyBvY2N1ciBpbiB0d28gZGlmZmVyZW50IGFyZ3YtZWxlbWVudHMuXG4i KTsKKyArIAkgIGRpZ2l0X29wdGluZCA9IHRoaXNfb3B0aW9uX29wdGluZDsKKyArIAkgIHByaW50 ZiAoIm9wdGlvbiAlY1xuIiwgYyk7CisgKyAJICBicmVhazsKKyArIAorICsgCWNhc2UgJ2EnOgor ICsgCSAgcHJpbnRmICgib3B0aW9uIGFcbiIpOworICsgCSAgYnJlYWs7CisgKyAKKyArIAljYXNl ICdiJzoKKyArIAkgIHByaW50ZiAoIm9wdGlvbiBiXG4iKTsKKyArIAkgIGJyZWFrOworICsgCisg KyAJY2FzZSAnYyc6CisgKyAJICBwcmludGYgKCJvcHRpb24gYyB3aXRoIHZhbHVlIGAlcydcbiIs IG9wdGFyZyk7CisgKyAJICBicmVhazsKKyArIAorICsgCWNhc2UgJ2QnOgorICsgCSAgcHJpbnRm ICgib3B0aW9uIGQgd2l0aCB2YWx1ZSBgJXMnXG4iLCBvcHRhcmcpOworICsgCSAgYnJlYWs7Cisg KyAKKyArIAljYXNlICc/JzoKKyArIAkgIGJyZWFrOworICsgCisgKyAJZGVmYXVsdDoKKyArIAkg IHByaW50ZiAoIj8/IGdldG9wdCByZXR1cm5lZCBjaGFyYWN0ZXIgY29kZSAwJW8gPz9cbiIsIGMp OworICsgCX0KKyArICAgICB9CisgKyAKKyArICAgaWYgKG9wdGluZCA8IGFyZ2MpCisgKyAgICAg eworICsgICAgICAgcHJpbnRmICgibm9uLW9wdGlvbiBBUkdWLWVsZW1lbnRzOiAiKTsKKyArICAg ICAgIHdoaWxlIChvcHRpbmQgPCBhcmdjKQorICsgCXByaW50ZiAoIiVzICIsIGFyZ3Zbb3B0aW5k KytdKTsKKyArICAgICAgIHByaW50ZiAoIlxuIik7CisgKyAgICAgfQorICsgCisgKyAgIGV4aXQg KDApOworICsgfQorICsgCisgKyAjZW5kaWYgLyogVEVTVCAqLwpkaWZmIC1jIC1yIC1QIG5ldGhh Y2szLWdub21lLm9yaWcvcGtnLWRlc2NyIG5ldGhhY2szLWdub21lL3BrZy1kZXNjcgoqKiogbmV0 aGFjazMtZ25vbWUub3JpZy9wa2ctZGVzY3IJV2VkIERlYyAxMiAwNToyNDowMSAyMDAxCi0tLSBu ZXRoYWNrMy1nbm9tZS9wa2ctZGVzY3IJU3VuIE1hciAzMSAxNTowMzoyOCAyMDAyCioqKioqKioq KioqKioqKgoqKiogMSw0ICoqKioKISBUaGlzIGlzIHZlcnNpb24gMy4zLjEgb2YgbmV0aGFjaywg YSBjbGFzaWMgQVNDSUktYmFzZWQgYWR2ZW50dXJlIGdhbWUKICB3aXRoIGdyYXBoaWNzIHN1cHBv cnQgZm9yIEdub21lLgogIFlvdSBhbmQgeW91ciBmYWl0aGZ1bCBwZXQgYXJlIG9uIGEgcXVlc3Qg dG8gcmV0cmlldmUgdGhlIGxvc3QgQW11bGV0CiAgb2YgWWVuZG9yLgotLS0gMSw0IC0tLS0KISBU aGlzIGlzIHZlcnNpb24gMy40LjAgb2YgbmV0aGFjaywgYSBjbGFzc2ljIEFTQ0lJLWJhc2VkIGFk dmVudHVyZSBnYW1lCiAgd2l0aCBncmFwaGljcyBzdXBwb3J0IGZvciBHbm9tZS4KICBZb3UgYW5k IHlvdXIgZmFpdGhmdWwgcGV0IGFyZSBvbiBhIHF1ZXN0IHRvIHJldHJpZXZlIHRoZSBsb3N0IEFt dWxldAogIG9mIFllbmRvci4KZGlmZiAtYyAtciAtUCBuZXRoYWNrMy1nbm9tZS5vcmlnL3BrZy1w bGlzdCBuZXRoYWNrMy1nbm9tZS9wa2ctcGxpc3QKKioqIG5ldGhhY2szLWdub21lLm9yaWcvcGtn LXBsaXN0CVRodSBEZWMgMjcgMTI6MzA6MDkgMjAwMQotLS0gbmV0aGFjazMtZ25vbWUvcGtnLXBs aXN0CVN1biBNYXIgMzEgMTQ6NDc6NTYgMjAwMgoqKioqKioqKioqKioqKioKKioqIDEwNSwxMTIg KioqKgotLS0gMTA1LDExOCAtLS0tCiAgc2hhcmUvbmV0aGFjay9taW5lZmlsbC5sZXYKICBzaGFy ZS9uZXRoYWNrL21pbmVuZC0xLmxldgogIHNoYXJlL25ldGhhY2svbWluZW5kLTIubGV2Cisgc2hh cmUvbmV0aGFjay9taW5lbmQtMy5sZXYKICBzaGFyZS9uZXRoYWNrL21pbmV0bi0xLmxldgogIHNo YXJlL25ldGhhY2svbWluZXRuLTIubGV2Cisgc2hhcmUvbmV0aGFjay9taW5ldG4tMy5sZXYKKyBz aGFyZS9uZXRoYWNrL21pbmV0bi00LmxldgorIHNoYXJlL25ldGhhY2svbWluZXRuLTUubGV2Cisg c2hhcmUvbmV0aGFjay9taW5ldG4tNi5sZXYKKyBzaGFyZS9uZXRoYWNrL21pbmV0bi03Lmxldgog IHNoYXJlL25ldGhhY2svb3B0aGVscAogIHNoYXJlL25ldGhhY2svb3B0aW9ucwogIHNoYXJlL25l dGhhY2svb3JhY2xlLmxldgo= ------=_NextPart_000_0001_01C1DCC1.677E16C0-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message