From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:48793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gr790-00013o-MT for qemu-devel@nongnu.org; Tue, 05 Feb 2019 15:16:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gr78m-0003Ce-3Q for qemu-devel@nongnu.org; Tue, 05 Feb 2019 15:16:28 -0500 Resent-Message-Id: Received: from sender-of-o51.zoho.com ([135.84.80.216]:21061) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gr78i-0003Aq-Jn for qemu-devel@nongnu.org; Tue, 05 Feb 2019 15:16:18 -0500 Message-ID: <154939774952.29184.15224215485892693577@ebba9967afc0> In-Reply-To: <20190205182848.29887-1-samuel.thibault@ens-lyon.org> Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 From: no-reply@patchew.org Date: Tue, 5 Feb 2019 12:15:50 -0800 (PST) Subject: Re: [Qemu-devel] [PULLv3 00/32] More work towards libslirp List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: samuel.thibault@ens-lyon.org Cc: fam@euphon.net, qemu-devel@nongnu.org, peter.maydell@linaro.org, stefanha@redhat.com, jan.kiszka@siemens.com UGF0Y2hldyBVUkw6IGh0dHBzOi8vcGF0Y2hldy5vcmcvUUVNVS8yMDE5MDIwNTE4Mjg0OC4yOTg4 Ny0xLXNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmcvCgoKCkhpLAoKVGhpcyBzZXJpZXMgc2Vl bXMgdG8gaGF2ZSBzb21lIGNvZGluZyBzdHlsZSBwcm9ibGVtcy4gU2VlIG91dHB1dCBiZWxvdyBm b3IKbW9yZSBpbmZvcm1hdGlvbjoKClN1YmplY3Q6IFtRZW11LWRldmVsXSBbUFVMTHYzIDAwLzMy XSBNb3JlIHdvcmsgdG93YXJkcyBsaWJzbGlycApUeXBlOiBzZXJpZXMKTWVzc2FnZS1pZDogMjAx OTAyMDUxODI4NDguMjk4ODctMS1zYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnCgo9PT0gVEVT VCBTQ1JJUFQgQkVHSU4gPT09CiMhL2Jpbi9iYXNoCmdpdCBjb25maWcgLS1sb2NhbCBkaWZmLnJl bmFtZWxpbWl0IDAKZ2l0IGNvbmZpZyAtLWxvY2FsIGRpZmYucmVuYW1lcyBUcnVlCmdpdCBjb25m aWcgLS1sb2NhbCBkaWZmLmFsZ29yaXRobSBoaXN0b2dyYW0KLi9zY3JpcHRzL2NoZWNrcGF0Y2gu cGwgLS1tYWlsYmFjayBiYXNlLi4KPT09IFRFU1QgU0NSSVBUIEVORCA9PT0KClVwZGF0aW5nIDNj OGNmNWE5YzIxZmY4NzgyMTY0ZDFkZWY3ZjQ0YmQ4ODg3MTMzODQKRnJvbSBodHRwczovL2dpdGh1 Yi5jb20vcGF0Y2hldy1wcm9qZWN0L3FlbXUKICAgOTY2OWM5NzU2Mi4uNDc5OTRlMTZiMSAgbWFz dGVyICAgICAtPiBtYXN0ZXIKIHQgW3RhZyB1cGRhdGVdICAgICAgICAgICAgcGF0Y2hldy8xNTQ5 MzcxNTI1LTI5ODk5LTEtZ2l0LXNlbmQtZW1haWwtdGh1dGhAcmVkaGF0LmNvbSAtPiBwYXRjaGV3 LzE1NDkzNzE1MjUtMjk4OTktMS1naXQtc2VuZC1lbWFpbC10aHV0aEByZWRoYXQuY29tCiAqIFtu ZXcgdGFnXSAgICAgICAgICAgICAgIHBhdGNoZXcvMjAxOTAyMDUxODEyMTguODk5NS0xLXBldGVy Lm1heWRlbGxAbGluYXJvLm9yZyAtPiBwYXRjaGV3LzIwMTkwMjA1MTgxMjE4Ljg5OTUtMS1wZXRl ci5tYXlkZWxsQGxpbmFyby5vcmcKICogW25ldyB0YWddICAgICAgICAgICAgICAgcGF0Y2hldy8y MDE5MDIwNTE4Mjg0OC4yOTg4Ny0xLXNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmcgLT4gcGF0 Y2hldy8yMDE5MDIwNTE4Mjg0OC4yOTg4Ny0xLXNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmcK U3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICd0ZXN0Jwo0ODc4OGYzMmI4IHNsaXJwOiBBUEkgaXMg ZXh0ZXJuIEMKM2QxY2RjZjNkYSBzbGlycDogcGFzcyBvcGFxdWUgdG8gYWxsIGNhbGxiYWNrcwow ZDgxZGRkYzgyIHNsaXJwOiB1c2UgcG9sbGluZyBjYWxsYmFja3MsIGRyb3AgZ2xpYiByZXF1aXJl bWVudApkMDFjMzUxZjkwIHNsaXJwOiByZW1vdmUgc2xpcnBfaW5zdGFuY2VzIGxpc3QKMTI3MGZj YzQ0MSBzbGlycDogcmVwbGFjZSBnbG9iYWwgcG9sbGluZyB3aXRoIHBlci1pbnN0YW5jZSAmIG5v dGlmaWVyCmI4ODk3ZmM0MzQgc2xpcnA6IGltcHJvdmUgc2VuZF9wYWNrZXQoKSBjYWxsYmFjawpi NjY0YzI4YjM3IHNsaXJwOiBwcmVmZXIgYzk5IHR5cGVzIG92ZXIgQlNEIGtpbmQKMDllOTY1MDY3 YyBzbGlycDogcmVwbGFjZSByZW1haW5pbmcgcWVtdSBoZWFkZXJzIGRlcGVuZGVuY3kKMzcyNGE5 MTc3NyBzbGlycDogTW92ZSBnX3NwYXduX2FzeW5jX3dpdGhfZmRzX3FlbXUgY29tcGF0aWJpbGl0 eSB0byBzbGlycC8KNTNiMzU3ZDE0YyBzbGlycDogcmVwbGFjZSBRRU1VX0JVSUxEX0JVR19PTiB3 aXRoIEdfU1RBVElDX0FTU0VSVAozZWEwMWQxOTZkIHNsaXJwOiByZXBsYWNlIHFlbXUgcXRhaWxx IHdpdGggc2xpcnAgb3duIGNvcHkKYTQ4MWZkYzAyOSBzbGlycDogcmVwbGFjZSBuZXQvZXRoLmgg aW5jbHVzaW9uIHdpdGggb3duIGRlZmluZXMKZmE2NzBmZmE3MSBzbGlycDogcmVtb3ZlIG5vdyB1 c2VsZXNzIFFFTVUgaGVhZGVycyBpbmNsdXNpb25zCmEzMGVhNTU0ODAgc2xpcnA6IHJlbW92ZSBx ZW11IHRpbWVyLmggZGVwZW5kZW5jeQo4ZDlhZjY3YmM2IHNsaXJwOiBhZGQgc2xpcnAgb3duIHZl cnNpb24gb2YgcHN0cmNweQo4YzIzMGMzODAzIHNsaXJwOiBpbXByb3ZlIHdpbmRvd3MgaGVhZGVy cyBpbmNsdXNpb24KZWY1NmU4ZDQyMSBzbGlycDogZG8gbm90IGluY2x1ZGUgcWVtdSBoZWFkZXJz IGluIGxpYnNsaXJwLmggcHVibGljIEFQSSBoZWFkZXIKNWFjNWExMDAxNCBzbGlycDogbW92ZSBR RU1VIHN0YXRlIHNhdmluZyB0byBhIHNlcGFyYXRlIHVuaXQKMGFiZjQ0NTIyOCBzbGlycDogcmVw bGFjZSBxZW11X25vdGlmeV9ldmVudCgpIHdpdGggYSBjYWxsYmFjawoxMmM2ZDBlZjM0IHNsaXJw OiBhZGQgdW5yZWdpc3Rlcl9wb2xsX2ZkKCkgY2FsbGJhY2sKMTk4NWVkOWUwYyBzbGlycDogcmVw bGFjZSBxZW11X3NldF9ub25ibG9jaygpCmM2NDAzZmFlNjUgc2xpcnA6IHJlcGxhY2UgbW9zdCBx ZW11IHNvY2tldCB1dGlsaXRpZXMgd2l0aCBzbGlycCBvd24gdmVyc2lvbgpiYWU5ZTE3ODU4IHNs aXJwOiByZXBsYWNlIFFFTVVfUEFDS0VEIHdpdGggU0xJUlBfUEFDS0VECmNiNTJjOGEwMGIgc2xp cnA6IHJlcGxhY2UgdHJhY2UgZnVuY3Rpb25zIHdpdGggREVCVUcgY2FsbHMKY2MwYTBiMTg4OSBz bGlycDogYWRkIGNhbGxiYWNrcyBmb3IgdGltZXIKNTFhMWNmMDA3YiBuZXQvc2xpcnA6IGZpeCBs ZWFrcyBvbiBmb3J3YXJkaW5nIHJ1bGUgcmVnaXN0cmF0aW9uIGVycm9yCjllNzc1YWUwMWYgbmV0 L3NsaXJwOiBmcmVlIGZvcndhcmRpbmcgcnVsZXMgb24gY2xlYW51cAoyYTNlMTFjNDFlIG5ldC9z bGlycDogc2ltcGxpZnkgY2hlY2tpbmcgZm9yIGNtZDogcHJlZml4CjE4ZTFkMDNiMDMgc2xpcnA6 IGdlbmVyYWxpemUgZ3Vlc3Rmd2Qgd2l0aCBhIGNhbGxiYWNrIGJhc2VkIGFwcHJvYWNoCjYwYWVi MTQ1NWUgc2xpcnA6IERvbid0IG1hcmsgc3RydWN0IGlwcSBvciBzdHJ1Y3QgaXBhc2ZyYWcgYXMg cGFja2VkCjgxZWZjMWFhZDggc2xpcnA6IEF2b2lkIG1hcmtpbmcgbmF0dXJhbGx5IHBhY2tlZCBz dHJ1Y3RzIGFzIFFFTVVfUEFDS0VECjlkZTgxNTRlZDcgc2xpcnA6IEF2b2lkIHVuYWxpZ25lZCAx NmJpdCBtZW1vcnkgYWNjZXNzCgo9PT0gT1VUUFVUIEJFR0lOID09PQoxLzMyIENoZWNraW5nIGNv bW1pdCA5ZGU4MTU0ZWQ3MDggKHNsaXJwOiBBdm9pZCB1bmFsaWduZWQgMTZiaXQgbWVtb3J5IGFj Y2VzcykKMi8zMiBDaGVja2luZyBjb21taXQgODFlZmMxYWFkODg4IChzbGlycDogQXZvaWQgbWFy a2luZyBuYXR1cmFsbHkgcGFja2VkIHN0cnVjdHMgYXMgUUVNVV9QQUNLRUQpCjMvMzIgQ2hlY2tp bmcgY29tbWl0IDYwYWViMTQ1NWVhNyAoc2xpcnA6IERvbid0IG1hcmsgc3RydWN0IGlwcSBvciBz dHJ1Y3QgaXBhc2ZyYWcgYXMgcGFja2VkKQo0LzMyIENoZWNraW5nIGNvbW1pdCAxOGUxZDAzYjAz ODcgKHNsaXJwOiBnZW5lcmFsaXplIGd1ZXN0ZndkIHdpdGggYSBjYWxsYmFjayBiYXNlZCBhcHBy b2FjaCkKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTQ4OiBGSUxF OiBzbGlycC9taXNjLmg6MTQ6CiteSVNsaXJwV3JpdGVDYiB3cml0ZV9jYjskCgpFUlJPUjogY29k ZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxNDk6IEZJTEU6IHNsaXJwL21pc2MuaDox NToKK15Jdm9pZCAqb3BhcXVlOyQKCnRvdGFsOiAyIGVycm9ycywgMCB3YXJuaW5ncywgMjI2IGxp bmVzIGNoZWNrZWQKClBhdGNoIDQvMzIgaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3 LiAgSWYgYW55IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVt IHRvIHRoZSBtYWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCjUvMzIg Q2hlY2tpbmcgY29tbWl0IDJhM2UxMWM0MWUzMSAobmV0L3NsaXJwOiBzaW1wbGlmeSBjaGVja2lu ZyBmb3IgY21kOiBwcmVmaXgpCjYvMzIgQ2hlY2tpbmcgY29tbWl0IDllNzc1YWUwMWZjNCAobmV0 L3NsaXJwOiBmcmVlIGZvcndhcmRpbmcgcnVsZXMgb24gY2xlYW51cCkKNy8zMiBDaGVja2luZyBj b21taXQgNTFhMWNmMDA3YmI4IChuZXQvc2xpcnA6IGZpeCBsZWFrcyBvbiBmb3J3YXJkaW5nIHJ1 bGUgcmVnaXN0cmF0aW9uIGVycm9yKQo4LzMyIENoZWNraW5nIGNvbW1pdCBjYzBhMGIxODg5Zjgg KHNsaXJwOiBhZGQgY2FsbGJhY2tzIGZvciB0aW1lcikKOS8zMiBDaGVja2luZyBjb21taXQgY2I1 MmM4YTAwYjlmIChzbGlycDogcmVwbGFjZSB0cmFjZSBmdW5jdGlvbnMgd2l0aCBERUJVRyBjYWxs cykKV0FSTklORzogYWRkZWQsIG1vdmVkIG9yIGRlbGV0ZWQgZmlsZShzKSwgZG9lcyBNQUlOVEFJ TkVSUyBuZWVkIHVwZGF0aW5nPwojMTAwOiAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cgp0b3Rh bDogMCBlcnJvcnMsIDEgd2FybmluZ3MsIDYyIGxpbmVzIGNoZWNrZWQKClBhdGNoIDkvMzIgaGFz IHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55IG9mIHRoZXNlIGVycm9ycwph cmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUKQ0hF Q0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KMTAvMzIgQ2hlY2tpbmcgY29tbWl0IGJhZTllMTc4NTgy NiAoc2xpcnA6IHJlcGxhY2UgUUVNVV9QQUNLRUQgd2l0aCBTTElSUF9QQUNLRUQpCldBUk5JTkc6 IGFkZGVkLCBtb3ZlZCBvciBkZWxldGVkIGZpbGUocyksIGRvZXMgTUFJTlRBSU5FUlMgbmVlZCB1 cGRhdGluZz8KIzExMTogCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cgp0b3RhbDogMCBlcnJvcnMsIDEg d2FybmluZ3MsIDExMSBsaW5lcyBjaGVja2VkCgpQYXRjaCAxMC8zMiBoYXMgc3R5bGUgcHJvYmxl bXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3Np dGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1B SU5UQUlORVJTLgoxMS8zMiBDaGVja2luZyBjb21taXQgYzY0MDNmYWU2NTFiIChzbGlycDogcmVw bGFjZSBtb3N0IHFlbXUgc29ja2V0IHV0aWxpdGllcyB3aXRoIHNsaXJwIG93biB2ZXJzaW9uKQpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMzA6IEZJTEU6IHNsaXJw L3NvY2tldC5jOjE5MDoKK15Jbm4gPSBzbGlycF9yZWN2KHNvLT5zLCBpb3ZbMF0uaW92X2Jhc2Us IGlvdlswXS5pb3ZfbGVuLDApOyQKCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBhZnRlciB0aGF0ICcs JyAoY3R4OlZ4VikKIzEzMDogRklMRTogc2xpcnAvc29ja2V0LmM6MTkwOgorICAgICAgIG5uID0g c2xpcnBfcmVjdihzby0+cywgaW92WzBdLmlvdl9iYXNlLCBpb3ZbMF0uaW92X2xlbiwwKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMTM5OiBGSUxFOiBzbGlycC9z b2NrZXQuYzoyMDY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGly cF9nZXRzb2Nrb3B0KHNvLT5zLCBTT0xfU09DS0VULCBTT19FUlJPUiwKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEzOTogRklMRTogc2xpcnAvc29ja2V0LmM6MjA2 OgorXkleSV5JXkleSXNsaXJwX2dldHNvY2tvcHQoc28tPnMsIFNPTF9TT0NLRVQsIFNPX0VSUk9S LCQKCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBhZnRlciB0aGF0ICcsJyAoY3R4OlZ4VikKIzE0ODog RklMRTogc2xpcnAvc29ja2V0LmM6MjM2OgorICAgICAgICAgICAgcmV0ID0gc2xpcnBfcmVjdihz by0+cywgaW92WzFdLmlvdl9iYXNlLCBpb3ZbMV0uaW92X2xlbiwwKTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCgpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxNTc6IEZJTEU6IHNsaXJw L3NvY2tldC5jOjU1NzoKK15JICBzbGlycF9pb2N0bHNvY2tldChzby0+cywgRklPTlJFQUQsICZu KTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxNjc6IEZJTEU6 IHNsaXJwL3NvY2tldC5jOjcyMjoKK15JaWYgKCgocyA9IHNsaXJwX3NvY2tldChBRl9JTkVULFNP Q0tfU1RSRUFNLDApKSA8IDApIHx8JAoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGFmdGVyIHRoYXQg JywnIChjdHg6VnhWKQojMTY3OiBGSUxFOiBzbGlycC9zb2NrZXQuYzo3MjI6CisgICAgICAgaWYg KCgocyA9IHNsaXJwX3NvY2tldChBRl9JTkVULFNPQ0tfU1RSRUFNLDApKSA8IDApIHx8CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlIHJlcXVpcmVk IGFmdGVyIHRoYXQgJywnIChjdHg6VnhWKQojMTY3OiBGSUxFOiBzbGlycC9zb2NrZXQuYzo3MjI6 CisgICAgICAgaWYgKCgocyA9IHNsaXJwX3NvY2tldChBRl9JTkVULFNPQ0tfU1RSRUFNLDApKSA8 IDApIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgoKRVJST1I6IGRvIG5vdCB1c2UgYXNzaWdubWVudCBpbiBpZiBjb25kaXRpb24KIzE2NzogRklM RTogc2xpcnAvc29ja2V0LmM6NzIyOgorICAgICAgIGlmICgoKHMgPSBzbGlycF9zb2NrZXQoQUZf SU5FVCxTT0NLX1NUUkVBTSwwKSkgPCAwKSB8fAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMTY4OiBGSUxFOiBzbGlycC9zb2NrZXQuYzo3MjM6CiteSSAgICAoc2xp cnBfc29ja2V0X3NldF9mYXN0X3JldXNlKHMpIDwgMCkgfHwkCgpFUlJPUjogY29kZSBpbmRlbnQg c2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxODQ6IEZJTEU6IHNsaXJwL3NvY2tldC5jOjc0MDoKK15J c2xpcnBfc2V0c29ja29wdChzLCBTT0xfU09DS0VULCBTT19PT0JJTkxJTkUsICZvcHQsIHNpemVv ZihpbnQpKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxODc6 IEZJTEU6IHNsaXJwL3NvY2tldC5jOjc0MjoKK15Jc2xpcnBfc2V0c29ja29wdChzLCBJUFBST1RP X1RDUCwgVENQX05PREVMQVksICZvcHQsIHNpemVvZihpbnQpKTskCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMyMDA6IEZJTEU6IHNsaXJwL3RjcF9zdWJyLmM6MzQw OgorXklzbGlycF9jbG9zZXNvY2tldChzby0+cyk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMjY3OiBGSUxFOiBzbGlycC91ZHAuYzoyOTU6CiteSXNsaXJwX2Ns b3Nlc29ja2V0KHNvLT5zKTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiMyNzY6IEZJTEU6IHNsaXJwL3VkcC5jOjMzMDoKK15Jc28tPnMgPSBzbGlycF9zb2NrZXQo QUZfSU5FVCxTT0NLX0RHUkFNLDApOyQKCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBhZnRlciB0aGF0 ICcsJyAoY3R4OlZ4VikKIzI3NjogRklMRTogc2xpcnAvdWRwLmM6MzMwOgorICAgICAgIHNvLT5z ID0gc2xpcnBfc29ja2V0KEFGX0lORVQsU09DS19ER1JBTSwwKTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGFmdGVyIHRoYXQgJywn IChjdHg6VnhWKQojMjc2OiBGSUxFOiBzbGlycC91ZHAuYzozMzA6CisgICAgICAgc28tPnMgPSBz bGlycF9zb2NrZXQoQUZfSU5FVCxTT0NLX0RHUkFNLDApOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzI4NTogRklMRTogc2xpcnAvdWRwLmM6MzQ2OgorXklzbGlycF9zb2NrZXRf c2V0X2Zhc3RfcmV1c2Uoc28tPnMpOyQKCldBUk5JTkc6IGFkZGVkLCBtb3ZlZCBvciBkZWxldGVk IGZpbGUocyksIGRvZXMgTUFJTlRBSU5FUlMgbmVlZCB1cGRhdGluZz8KIzI5MDogCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CgpFUlJPUjogcmV0dXJuIG9mIGFuIGVycm5vIHNob3VsZCB0eXBpY2FsbHkg YmUgLXZlIChyZXR1cm4gLUVJTlRSKQojMzc5OiBGSUxFOiBzbGlycC91dGlsLmM6ODU6CisgICAg ICAgIHJldHVybiBFSU5UUjsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGlj YWxseSBiZSAtdmUgKHJldHVybiAtRUlOVkFMKQojMzgxOiBGSUxFOiBzbGlycC91dGlsLmM6ODc6 CisgICAgICAgIHJldHVybiBFSU5WQUw7CgpFUlJPUjogcmV0dXJuIG9mIGFuIGVycm5vIHNob3Vs ZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVCQURGKQojMzgzOiBGSUxFOiBzbGlycC91dGls LmM6ODk6CisgICAgICAgIHJldHVybiBFQkFERjsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8g c2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVybiAtRU5PTUVNKQojMzg1OiBGSUxFOiBzbGly cC91dGlsLmM6OTE6CisgICAgICAgIHJldHVybiBFTk9NRU07CgpFUlJPUjogcmV0dXJuIG9mIGFu IGVycm5vIHNob3VsZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVJTlZBTCkKIzM4NzogRklM RTogc2xpcnAvdXRpbC5jOjkzOgorICAgICAgICByZXR1cm4gRUlOVkFMOwoKRVJST1I6IHJldHVy biBvZiBhbiBlcnJubyBzaG91bGQgdHlwaWNhbGx5IGJlIC12ZSAocmV0dXJuIC1FTkFNRVRPT0xP TkcpCiMzODk6IEZJTEU6IHNsaXJwL3V0aWwuYzo5NToKKyAgICAgICAgcmV0dXJuIEVOQU1FVE9P TE9ORzsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUg KHJldHVybiAtRU5PVEVNUFRZKQojMzkxOiBGSUxFOiBzbGlycC91dGlsLmM6OTc6CisgICAgICAg IHJldHVybiBFTk9URU1QVFk7CgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5n IC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMzkzOiBGSUxFOiBzbGlycC91dGlsLmM6OTk6CisgICAg ICAgICAvKiBub3QgdXNpbmcgRVdPVUxEQkxPQ0sgYXMgd2UgZG9uJ3Qgd2FudCBjb2RlIHRvIGhh dmUKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIHRyYWlsaW5nICovIG9uIGEgc2VwYXJh dGUgbGluZQojMzk0OiBGSUxFOiBzbGlycC91dGlsLmM6MTAwOgorICAgICAgICAgICogdG8gY2hl Y2sgYm90aCBFV09VTERCTE9DSyBhbmQgRUFHQUlOICovCgpFUlJPUjogcmV0dXJuIG9mIGFuIGVy cm5vIHNob3VsZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVBR0FJTikKIzM5NTogRklMRTog c2xpcnAvdXRpbC5jOjEwMToKKyAgICAgICAgcmV0dXJuIEVBR0FJTjsKCkVSUk9SOiByZXR1cm4g b2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVybiAtRUlOUFJPR1JFU1Mp CiMzOTc6IEZJTEU6IHNsaXJwL3V0aWwuYzoxMDM6CisgICAgICAgIHJldHVybiBFSU5QUk9HUkVT UzsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJl dHVybiAtRUFMUkVBRFkpCiMzOTk6IEZJTEU6IHNsaXJwL3V0aWwuYzoxMDU6CisgICAgICAgIHJl dHVybiBFQUxSRUFEWTsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxs eSBiZSAtdmUgKHJldHVybiAtRU5PVFNPQ0spCiM0MDE6IEZJTEU6IHNsaXJwL3V0aWwuYzoxMDc6 CisgICAgICAgIHJldHVybiBFTk9UU09DSzsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hv dWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVybiAtRURFU1RBRERSUkVRKQojNDAzOiBGSUxFOiBz bGlycC91dGlsLmM6MTA5OgorICAgICAgICByZXR1cm4gRURFU1RBRERSUkVROwoKRVJST1I6IHJl dHVybiBvZiBhbiBlcnJubyBzaG91bGQgdHlwaWNhbGx5IGJlIC12ZSAocmV0dXJuIC1FTVNHU0la RSkKIzQwNTogRklMRTogc2xpcnAvdXRpbC5jOjExMToKKyAgICAgICAgcmV0dXJuIEVNU0dTSVpF OwoKRVJST1I6IHJldHVybiBvZiBhbiBlcnJubyBzaG91bGQgdHlwaWNhbGx5IGJlIC12ZSAocmV0 dXJuIC1FUFJPVE9UWVBFKQojNDA3OiBGSUxFOiBzbGlycC91dGlsLmM6MTEzOgorICAgICAgICBy ZXR1cm4gRVBST1RPVFlQRTsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGlj YWxseSBiZSAtdmUgKHJldHVybiAtRU5PUFJPVE9PUFQpCiM0MDk6IEZJTEU6IHNsaXJwL3V0aWwu YzoxMTU6CisgICAgICAgIHJldHVybiBFTk9QUk9UT09QVDsKCkVSUk9SOiByZXR1cm4gb2YgYW4g ZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVybiAtRVBST1RPTk9TVVBQT1JUKQoj NDExOiBGSUxFOiBzbGlycC91dGlsLmM6MTE3OgorICAgICAgICByZXR1cm4gRVBST1RPTk9TVVBQ T1JUOwoKRVJST1I6IHJldHVybiBvZiBhbiBlcnJubyBzaG91bGQgdHlwaWNhbGx5IGJlIC12ZSAo cmV0dXJuIC1FT1BOT1RTVVBQKQojNDEzOiBGSUxFOiBzbGlycC91dGlsLmM6MTE5OgorICAgICAg ICByZXR1cm4gRU9QTk9UU1VQUDsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5 cGljYWxseSBiZSAtdmUgKHJldHVybiAtRUFGTk9TVVBQT1JUKQojNDE1OiBGSUxFOiBzbGlycC91 dGlsLmM6MTIxOgorICAgICAgICByZXR1cm4gRUFGTk9TVVBQT1JUOwoKRVJST1I6IHJldHVybiBv ZiBhbiBlcnJubyBzaG91bGQgdHlwaWNhbGx5IGJlIC12ZSAocmV0dXJuIC1FQUREUklOVVNFKQoj NDE3OiBGSUxFOiBzbGlycC91dGlsLmM6MTIzOgorICAgICAgICByZXR1cm4gRUFERFJJTlVTRTsK CkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVy biAtRUFERFJOT1RBVkFJTCkKIzQxOTogRklMRTogc2xpcnAvdXRpbC5jOjEyNToKKyAgICAgICAg cmV0dXJuIEVBRERSTk9UQVZBSUw7CgpFUlJPUjogcmV0dXJuIG9mIGFuIGVycm5vIHNob3VsZCB0 eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVORVRET1dOKQojNDIxOiBGSUxFOiBzbGlycC91dGls LmM6MTI3OgorICAgICAgICByZXR1cm4gRU5FVERPV047CgpFUlJPUjogcmV0dXJuIG9mIGFuIGVy cm5vIHNob3VsZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVORVRVTlJFQUNIKQojNDIzOiBG SUxFOiBzbGlycC91dGlsLmM6MTI5OgorICAgICAgICByZXR1cm4gRU5FVFVOUkVBQ0g7CgpFUlJP UjogcmV0dXJuIG9mIGFuIGVycm5vIHNob3VsZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVO RVRSRVNFVCkKIzQyNTogRklMRTogc2xpcnAvdXRpbC5jOjEzMToKKyAgICAgICAgcmV0dXJuIEVO RVRSRVNFVDsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAt dmUgKHJldHVybiAtRUNPTk5BQk9SVEVEKQojNDI3OiBGSUxFOiBzbGlycC91dGlsLmM6MTMzOgor ICAgICAgICByZXR1cm4gRUNPTk5BQk9SVEVEOwoKRVJST1I6IHJldHVybiBvZiBhbiBlcnJubyBz aG91bGQgdHlwaWNhbGx5IGJlIC12ZSAocmV0dXJuIC1FQ09OTlJFU0VUKQojNDI5OiBGSUxFOiBz bGlycC91dGlsLmM6MTM1OgorICAgICAgICByZXR1cm4gRUNPTk5SRVNFVDsKCkVSUk9SOiByZXR1 cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVybiAtRU5PQlVGUykK IzQzMTogRklMRTogc2xpcnAvdXRpbC5jOjEzNzoKKyAgICAgICAgcmV0dXJuIEVOT0JVRlM7CgpF UlJPUjogcmV0dXJuIG9mIGFuIGVycm5vIHNob3VsZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4g LUVJU0NPTk4pCiM0MzM6IEZJTEU6IHNsaXJwL3V0aWwuYzoxMzk6CisgICAgICAgIHJldHVybiBF SVNDT05OOwoKRVJST1I6IHJldHVybiBvZiBhbiBlcnJubyBzaG91bGQgdHlwaWNhbGx5IGJlIC12 ZSAocmV0dXJuIC1FTk9UQ09OTikKIzQzNTogRklMRTogc2xpcnAvdXRpbC5jOjE0MToKKyAgICAg ICAgcmV0dXJuIEVOT1RDT05OOwoKRVJST1I6IHJldHVybiBvZiBhbiBlcnJubyBzaG91bGQgdHlw aWNhbGx5IGJlIC12ZSAocmV0dXJuIC1FVElNRURPVVQpCiM0Mzc6IEZJTEU6IHNsaXJwL3V0aWwu YzoxNDM6CisgICAgICAgIHJldHVybiBFVElNRURPVVQ7CgpFUlJPUjogcmV0dXJuIG9mIGFuIGVy cm5vIHNob3VsZCB0eXBpY2FsbHkgYmUgLXZlIChyZXR1cm4gLUVDT05OUkVGVVNFRCkKIzQzOTog RklMRTogc2xpcnAvdXRpbC5jOjE0NToKKyAgICAgICAgcmV0dXJuIEVDT05OUkVGVVNFRDsKCkVS Uk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJldHVybiAt RUxPT1ApCiM0NDE6IEZJTEU6IHNsaXJwL3V0aWwuYzoxNDc6CisgICAgICAgIHJldHVybiBFTE9P UDsKCkVSUk9SOiByZXR1cm4gb2YgYW4gZXJybm8gc2hvdWxkIHR5cGljYWxseSBiZSAtdmUgKHJl dHVybiAtRUhPU1RVTlJFQUNIKQojNDQzOiBGSUxFOiBzbGlycC91dGlsLmM6MTQ5OgorICAgICAg ICByZXR1cm4gRUhPU1RVTlJFQUNIOwoKRVJST1I6IHJldHVybiBvZiBhbiBlcnJubyBzaG91bGQg dHlwaWNhbGx5IGJlIC12ZSAocmV0dXJuIC1FSU8pCiM0NDU6IEZJTEU6IHNsaXJwL3V0aWwuYzox NTE6CisgICAgICAgIHJldHVybiBFSU87CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVy cwojNTE0OiBGSUxFOiBzbGlycC91dGlsLmg6NjE6CisjZGVmaW5lIHNsaXJwX3JlY3Yoc29ja2Zk LCBidWYsIGxlbiwgZmxhZ3MpIHJlY3Yoc29ja2ZkLCAodm9pZCAqKWJ1ZiwgbGVuLCBmbGFncykK CldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRpbmcgLyogb24gYSBzZXBhcmF0ZSBs aW5lCiM1Mzc6IEZJTEU6IHNsaXJwL3V0aWwuaDo4NDoKKyAgICAvKiBFbmFibGluZyB0aGUgcmV1 c2Ugb2YgYW4gZW5kcG9pbnQgdGhhdCB3YXMgdXNlZCBieSBhIHNvY2tldCBzdGlsbCBpbgoKV0FS TklORzogQmxvY2sgY29tbWVudHMgdXNlIGEgdHJhaWxpbmcgKi8gb24gYSBzZXBhcmF0ZSBsaW5l CiM1NDE6IEZJTEU6IHNsaXJwL3V0aWwuaDo4ODoKKyAgICAgKiBodHRwOi8vbXNkbi5taWNyb3Nv ZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNzQwNjIxLmFzcHggKi8KCnRv dGFsOiA1MSBlcnJvcnMsIDcgd2FybmluZ3MsIDQ3NyBsaW5lcyBjaGVja2VkCgpQYXRjaCAxMS8z MiBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJy b3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNl ZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKMTIvMzIgQ2hlY2tpbmcgY29tbWl0IDE5ODVl ZDllMGM2OCAoc2xpcnA6IHJlcGxhY2UgcWVtdV9zZXRfbm9uYmxvY2soKSkKMTMvMzIgQ2hlY2tp bmcgY29tbWl0IDEyYzZkMGVmMzRiNyAoc2xpcnA6IGFkZCB1bnJlZ2lzdGVyX3BvbGxfZmQoKSBj YWxsYmFjaykKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojODc6IEZJ TEU6IHNsaXJwL3RjcF9zdWJyLmM6MzQwOgorXklzby0+c2xpcnAtPmNiLT51bnJlZ2lzdGVyX3Bv bGxfZmQoc28tPnMpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzEwNzogRklMRTogc2xpcnAvdWRwLmM6Mjk1OgorXklzby0+c2xpcnAtPmNiLT51bnJlZ2lzdGVy X3BvbGxfZmQoc28tPnMpOyQKCnRvdGFsOiAyIGVycm9ycywgMCB3YXJuaW5ncywgNjMgbGluZXMg Y2hlY2tlZAoKUGF0Y2ggMTMvMzIgaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAg SWYgYW55IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRv IHRoZSBtYWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCjE0LzMyIENo ZWNraW5nIGNvbW1pdCAwYWJmNDQ1MjI4NWMgKHNsaXJwOiByZXBsYWNlIHFlbXVfbm90aWZ5X2V2 ZW50KCkgd2l0aCBhIGNhbGxiYWNrKQpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiMxMTU6IEZJTEU6IHNsaXJwL3RjcF9pbnB1dC5jOjUwOToKK15JXkleSV5Jc29kcm9w KHNvLCBhY2tlZCk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwoj MTI0OiBGSUxFOiBzbGlycC90Y3BfaW5wdXQuYzoxMTIxOgorXkleSV5Jc29kcm9wKHNvLCAoaW50 KXNvLT5zb19zbmQuc2JfY2MpOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzEyODogRklMRTogc2xpcnAvdGNwX2lucHV0LmM6MTEyNDoKK15JXkleSXNvZHJvcChz bywgYWNrZWQpOyQKCnRvdGFsOiAzIGVycm9ycywgMCB3YXJuaW5ncywgNzkgbGluZXMgY2hlY2tl ZAoKUGF0Y2ggMTQvMzIgaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55 IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBt YWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCjE1LzMyIENoZWNraW5n IGNvbW1pdCA1YWM1YTEwMDE0MTMgKHNsaXJwOiBtb3ZlIFFFTVUgc3RhdGUgc2F2aW5nIHRvIGEg c2VwYXJhdGUgdW5pdCkKV0FSTklORzogYWRkZWQsIG1vdmVkIG9yIGRlbGV0ZWQgZmlsZShzKSwg ZG9lcyBNQUlOVEFJTkVSUyBuZWVkIHVwZGF0aW5nPwojNDU1OiAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRpbmcgLyogb24gYSBzZXBhcmF0 ZSBsaW5lCiM1NDc6IEZJTEU6IHNsaXJwL3N0YXRlLmM6ODg6CisvKiBUaGUgc2J1ZiBoYXMgYSBw YWlyIG9mIHBvaW50ZXJzIHRoYXQgYXJlIG1pZ3JhdGVkIGFzIG9mZnNldHM7CgpXQVJOSU5HOiBC bG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojNjQ1OiBG SUxFOiBzbGlycC9zdGF0ZS5jOjE4NjoKKy8qIFRoZSBPUyBwcm92aWRlZCBzc19mYW1pbHkgZmll bGQgaXNuJ3QgdGhhdCBwb3J0YWJsZTsgaXQncyBzaXplCgpFUlJPUjogaWYgdGhpcyBjb2RlIGlz IHJlZHVuZGFudCBjb25zaWRlciByZW1vdmluZyBpdAojNzE1OiBGSUxFOiBzbGlycC9zdGF0ZS5j OjI1NjoKKyNpZiAwCgp0b3RhbDogMSBlcnJvcnMsIDMgd2FybmluZ3MsIDQ3NSBsaW5lcyBjaGVj a2VkCgpQYXRjaCAxNS8zMiBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBh bnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhl IG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKMTYvMzIgQ2hlY2tp bmcgY29tbWl0IGVmNTZlOGQ0MjFjNiAoc2xpcnA6IGRvIG5vdCBpbmNsdWRlIHFlbXUgaGVhZGVy cyBpbiBsaWJzbGlycC5oIHB1YmxpYyBBUEkgaGVhZGVyKQoxNy8zMiBDaGVja2luZyBjb21taXQg OGMyMzBjMzgwMzZhIChzbGlycDogaW1wcm92ZSB3aW5kb3dzIGhlYWRlcnMgaW5jbHVzaW9uKQox OC8zMiBDaGVja2luZyBjb21taXQgOGQ5YWY2N2JjNjdkIChzbGlycDogYWRkIHNsaXJwIG93biB2 ZXJzaW9uIG9mIHBzdHJjcHkpCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMzNzog RklMRTogc2xpcnAvdGZ0cC5jOjIxOToKKyAgc2xpcnBfcHN0cmNweSgoY2hhciAqKXRwLT54LnRw X2Vycm9yLnRwX21zZywgc2l6ZW9mKHRwLT54LnRwX2Vycm9yLnRwX21zZyksIG1zZyk7CgpFUlJP UjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50 CiM1NTogRklMRTogc2xpcnAvdXRpbC5jOjE5NzoKKyAgICBpZiAoYnVmX3NpemUgPD0gMCkKWy4u Ll0KCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVzaXMgJygn CiM1ODogRklMRTogc2xpcnAvdXRpbC5jOjIwMDoKKyAgICBmb3IoOzspIHsKCkVSUk9SOiBicmFj ZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzYwOiBG SUxFOiBzbGlycC91dGlsLmM6MjAyOgorICAgICAgICBpZiAoYyA9PSAwIHx8IHEgPj0gYnVmICsg YnVmX3NpemUgLSAxKQpbLi4uXQoKdG90YWw6IDMgZXJyb3JzLCAxIHdhcm5pbmdzLCA0NCBsaW5l cyBjaGVja2VkCgpQYXRjaCAxOC8zMiBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcu ICBJZiBhbnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0g dG8gdGhlIG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKMTkvMzIg Q2hlY2tpbmcgY29tbWl0IGEzMGVhNTU0ODAwNyAoc2xpcnA6IHJlbW92ZSBxZW11IHRpbWVyLmgg ZGVwZW5kZW5jeSkKMjAvMzIgQ2hlY2tpbmcgY29tbWl0IGZhNjcwZmZhNzEyOSAoc2xpcnA6IHJl bW92ZSBub3cgdXNlbGVzcyBRRU1VIGhlYWRlcnMgaW5jbHVzaW9ucykKMjEvMzIgQ2hlY2tpbmcg Y29tbWl0IGE0ODFmZGMwMjkyNSAoc2xpcnA6IHJlcGxhY2UgbmV0L2V0aC5oIGluY2x1c2lvbiB3 aXRoIG93biBkZWZpbmVzKQoyMi8zMiBDaGVja2luZyBjb21taXQgM2VhMDFkMTk2ZDQ1IChzbGly cDogcmVwbGFjZSBxZW11IHF0YWlscSB3aXRoIHNsaXJwIG93biBjb3B5KQpXQVJOSU5HOiBhZGRl ZCwgbW92ZWQgb3IgZGVsZXRlZCBmaWxlKHMpLCBkb2VzIE1BSU5UQUlORVJTIG5lZWQgdXBkYXRp bmc/CiMxMjogCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1 c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojNzY6IEZJTEU6IHNsaXJwL3F0YWls cS5oOjYwOgorICAgICAgICBzdHJ1Y3QgdHlwZSAqdHFoX2ZpcnN0OyAgICAgICAvKiBmaXJzdCBl bGVtZW50ICovICAgICAgICAgICAgICAgXAoKV0FSTklORzogQmxvY2sgY29tbWVudHMgdXNlIGEg bGVhZGluZyAvKiBvbiBhIHNlcGFyYXRlIGxpbmUKIzc3OiBGSUxFOiBzbGlycC9xdGFpbHEuaDo2 MToKKyAgICAgICAgUVRhaWxRTGluayB0cWhfY2lyYzsgICAgICAgICAgLyogbGluayBmb3IgY2ly Y3VsYXIgYmFja3dhcmRzIGxpc3QgKi8gXAoKV0FSTklORzogQmxvY2sgY29tbWVudHMgdXNlIGEg bGVhZGluZyAvKiBvbiBhIHNlcGFyYXRlIGxpbmUKIzg1OiBGSUxFOiBzbGlycC9xdGFpbHEuaDo2 OToKKyAgICAgICAgc3RydWN0IHR5cGUgKnRxZV9uZXh0OyAgICAgICAgLyogbmV4dCBlbGVtZW50 ICovICAgICAgICAgICAgICAgIFwKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRp bmcgLyogb24gYSBzZXBhcmF0ZSBsaW5lCiM4NjogRklMRTogc2xpcnAvcXRhaWxxLmg6NzA6Cisg ICAgICAgIFFUYWlsUUxpbmsgdHFlX2NpcmM7ICAgICAgICAgIC8qIGxpbmsgZm9yIGNpcmN1bGFy IGJhY2t3YXJkcyBsaXN0ICovIFwKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRp bmcgLyogb24gYSBzZXBhcmF0ZSBsaW5lCiM5MjogRklMRTogc2xpcnAvcXRhaWxxLmg6NzY6Cit9 IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKCkVSUk9SOiBkbyBub3QgdXNlIGFzc2lnbm1lbnQgaW4g aWYgY29uZGl0aW9uCiM5NTogRklMRTogc2xpcnAvcXRhaWxxLmg6Nzk6CisgICAgICAgIGlmICgo KGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGhlYWQpLT50cWhfZmlyc3QpICE9IE5VTEwpICAgICAg ICBcCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJh dGUgbGluZQojMTAyOiBGSUxFOiBzbGlycC9xdGFpbHEuaDo4NjoKK30gd2hpbGUgKC8qQ09OU1RD T05EKi8wKQoKV0FSTklORzogQmxvY2sgY29tbWVudHMgdXNlIGEgbGVhZGluZyAvKiBvbiBhIHNl cGFyYXRlIGxpbmUKIzEwOTogRklMRTogc2xpcnAvcXRhaWxxLmg6OTM6Cit9IHdoaWxlICgvKkNP TlNUQ09ORCovMCkKCkVSUk9SOiBkbyBub3QgdXNlIGFzc2lnbm1lbnQgaW4gaWYgY29uZGl0aW9u CiMxMTI6IEZJTEU6IHNsaXJwL3F0YWlscS5oOjk2OgorICAgICAgICBpZiAoKChlbG0pLT5maWVs ZC50cWVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQudHFlX25leHQpICE9IE5VTEwpXAoKV0FSTklO RzogQmxvY2sgY29tbWVudHMgdXNlIGEgbGVhZGluZyAvKiBvbiBhIHNlcGFyYXRlIGxpbmUKIzEx OTogRklMRTogc2xpcnAvcXRhaWxxLmg6MTAzOgorfSB3aGlsZSAoLypDT05TVENPTkQqLzApCgpX QVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGlu ZQojMTI2OiBGSUxFOiBzbGlycC9xdGFpbHEuaDoxMTA6Cit9IHdoaWxlICgvKkNPTlNUQ09ORCov MCkKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRpbmcgLyogb24gYSBzZXBhcmF0 ZSBsaW5lCiMxMzY6IEZJTEU6IHNsaXJwL3F0YWlscS5oOjEyMDoKK30gd2hpbGUgKC8qQ09OU1RD T05EKi8wKQoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzE2NDogRklMRTogc2xp cnAvcXRhaWxxLmg6MTQ4OgorI2RlZmluZSBRVEFJTFFfSU5fVVNFKGVsbSwgZmllbGQpICAgICAg ICAoKGVsbSktPmZpZWxkLnRxZV9jaXJjLnRxbF9wcmV2ICE9IE5VTEwpCgpXQVJOSU5HOiBsaW5l IG92ZXIgODAgY2hhcmFjdGVycwojMTcxOiBGSUxFOiBzbGlycC9xdGFpbHEuaDoxNTU6CisgICAg ICAgICgodHlwZW9mKChlbG0pLT5maWVsZC50cWVfbmV4dCkpIFFUQUlMUV9MSU5LX1BSRVYoKGVs bSktPmZpZWxkLnRxZV9jaXJjKSkKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMy MDI6IEZJTEU6IHNsaXJwL3F0YWlscS5oOjE4NjoKKyNkZWZpbmUgUVRBSUxRX1JBV19JTlNFUlRf VEFJTChoZWFkLCBlbG0sIGVudHJ5KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoK V0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzIwMzogRklMRTogc2xpcnAvcXRhaWxx Lmg6MTg3OgorICAgICAgICAqUVRBSUxRX1JBV19ORVhUKGVsbSwgZW50cnkpID0gTlVMTDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAg Y2hhcmFjdGVycwojMjA0OiBGSUxFOiBzbGlycC9xdGFpbHEuaDoxODg6CisgICAgICAgIFFUQUlM UV9SQVdfVFFFX0NJUkMoZWxtLCBlbnRyeSktPnRxbF9wcmV2ID0gUVRBSUxRX1JBV19UUUhfQ0lS QyhoZWFkKS0+dHFsX3ByZXY7IFwKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMy MDU6IEZJTEU6IHNsaXJwL3F0YWlscS5oOjE4OToKKyAgICAgICAgUVRBSUxRX1JBV19UUUhfQ0lS QyhoZWFkKS0+dHFsX3ByZXYtPnRxbF9uZXh0ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgXAoK V0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzIwNjogRklMRTogc2xpcnAvcXRhaWxx Lmg6MTkwOgorICAgICAgICBRVEFJTFFfUkFXX1RRSF9DSVJDKGhlYWQpLT50cWxfcHJldiA9IFFU QUlMUV9SQVdfVFFFX0NJUkMoZWxtLCBlbnRyeSk7ICBcCgpXQVJOSU5HOiBCbG9jayBjb21tZW50 cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2VwYXJhdGUgbGluZQojMjA3OiBGSUxFOiBzbGlycC9x dGFpbHEuaDoxOTE6Cit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKCnRvdGFsOiAyIGVycm9ycywg MTkgd2FybmluZ3MsIDIwMiBsaW5lcyBjaGVja2VkCgpQYXRjaCAyMi8zMiBoYXMgc3R5bGUgcHJv YmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBw b3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGlu IE1BSU5UQUlORVJTLgoKMjMvMzIgQ2hlY2tpbmcgY29tbWl0IDUzYjM1N2QxNGM3YSAoc2xpcnA6 IHJlcGxhY2UgUUVNVV9CVUlMRF9CVUdfT04gd2l0aCBHX1NUQVRJQ19BU1NFUlQpCjI0LzMyIENo ZWNraW5nIGNvbW1pdCAzNzI0YTkxNzc3MzEgKHNsaXJwOiBNb3ZlIGdfc3Bhd25fYXN5bmNfd2l0 aF9mZHNfcWVtdSBjb21wYXRpYmlsaXR5IHRvIHNsaXJwLykKMjUvMzIgQ2hlY2tpbmcgY29tbWl0 IDA5ZTk2NTA2N2NiYiAoc2xpcnA6IHJlcGxhY2UgcmVtYWluaW5nIHFlbXUgaGVhZGVycyBkZXBl bmRlbmN5KQoyNi8zMiBDaGVja2luZyBjb21taXQgYjY2NGMyOGIzN2FkIChzbGlycDogcHJlZmVy IGM5OSB0eXBlcyBvdmVyIEJTRCBraW5kKQpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVy IHVzZSB0YWJzCiM2MDogRklMRTogc2xpcnAvaXBfaWNtcC5oOjQ3OgorXkl1aW50OF90XklpY21w X3R5cGU7XkleSS8qIHR5cGUgb2YgbWVzc2FnZSwgc2VlIGJlbG93ICovJAoKRVJST1I6IGNvZGUg aW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjE6IEZJTEU6IHNsaXJwL2lwX2ljbXAuaDo0 ODoKK15JdWludDhfdF5JaWNtcF9jb2RlO15JXkkvKiB0eXBlIHN1YiBjb2RlICovJAoKV0FSTklO RzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzYyOiBGSUxFOiBzbGlycC9pcF9pY21wLmg6NDk6 CisgICAgICAgdWludDE2X3QgICAgICAgIGljbXBfY2tzdW07ICAgICAgICAgICAgIC8qIG9uZXMg Y29tcGxlbWVudCBja3N1bSBvZiBzdHJ1Y3QgKi8KCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzYyOiBGSUxFOiBzbGlycC9pcF9pY21wLmg6NDk6CiteSXVpbnQxNl90 XklpY21wX2Nrc3VtO15JXkkvKiBvbmVzIGNvbXBsZW1lbnQgY2tzdW0gb2Ygc3RydWN0ICovJAoK RVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjU6IEZJTEU6IHNsaXJw L2lwX2ljbXAuaDo1MToKK15JXkl1aW50OF90IGloX3BwdHI7XkleSV5JLyogSUNNUF9QQVJBTVBS T0IgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3MDogRklM RTogc2xpcnAvaXBfaWNtcC5oOjU0OgorXkleSV5JdWludDE2X3ReSWljZF9pZDskCgpFUlJPUjog Y29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3MTogRklMRTogc2xpcnAvaXBfaWNt cC5oOjU1OgorXkleSV5JdWludDE2X3ReSWljZF9zZXE7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojNzk6IEZJTEU6IHNsaXJwL2lwX2ljbXAuaDo2MToKK15JXkle SXVpbnQxNl90IGlwbV92b2lkOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzgwOiBGSUxFOiBzbGlycC9pcF9pY21wLmg6NjI6CiteSV5JXkl1aW50MTZfdCBpcG1f bmV4dG10dTskCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMxMDI6 IEZJTEU6IHNsaXJwL2lwX2lucHV0LmM6NDYxOgorXklyZWdpc3RlciBjaGFyICpvcHRzOyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEwNzogRklMRTogc2xpcnAv aXBfaW5wdXQuYzo0NjU6CiteSW9wdHMgPSAoY2hhciAqKShpcCArIDEpOyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzEzMzogRklMRTogc2xpcnAvbWJ1Zi5oOjg4 OgorXkljaGFyICptX2RhdGE7XkleSV5JLyogQ3VycmVudCBsb2NhdGlvbiBvZiBkYXRhICovJAoK RVJST1I6IHNwYWNlIHByb2hpYml0ZWQgYmVmb3JlIHRoYXQgY2xvc2UgcGFyZW50aGVzaXMgJykn CiMxNjc6IEZJTEU6IHNsaXJwL3NsaXJwLmM6OTU6CisgICAgICAgIHByaW50ZigiR2V0TmV0d29y a1BhcmFtcyBmYWlsZWQuIHJldCA9ICUwOHhcbiIsICh1bnNpZ25lZClyZXQgKTsKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzIzMTogRklMRTogc2xpcnAvc29ja2V0 LmM6NTA5OgorXkkgICAgdWludDhfdCBjb2RlPUlDTVBfVU5SRUFDSF9QT1JUOyQKCkVSUk9SOiBz cGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJz0nIChjdHg6VnhWKQojMjMxOiBGSUxFOiBzbGly cC9zb2NrZXQuYzo1MDk6CisgICAgICAgICAgIHVpbnQ4X3QgY29kZT1JQ01QX1VOUkVBQ0hfUE9S VDsKICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMjU1OiBGSUxFOiBzbGlycC9zb2NrZXQuaDo2NDoKKyAgdW5zaWduZWRe SXNvX2V4cGlyZTteSV5JLyogV2hlbiB0aGUgc29ja2V0IHdpbGwgZXhwaXJlICovJAoKRVJST1I6 ICJmb28gKiBiYXIiIHNob3VsZCBiZSAiZm9vICpiYXIiCiMyNjQ6IEZJTEU6IHNsaXJwL3NvY2tl dC5oOjE0NzoKK3N0cnVjdCBzb2NrZXQgKiB0Y3BfbGlzdGVuKFNsaXJwICosIHVpbnQzMl90LCB1 bnNpZ25lZCwgdWludDMyX3QsIHVuc2lnbmVkLAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBu ZXZlciB1c2UgdGFicwojMjg2OiBGSUxFOiBzbGlycC90Y3BfaW5wdXQuYzoyMDA6CiteSWNoYXIg Km9wdHAgPSBOVUxMOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzI5NTogRklMRTogc2xpcnAvdGNwX2lucHV0LmM6MjA4OgorXkl1aW50MzJfdCB0aXdpbjskCgpF UlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMzMDQ6IEZJTEU6IHNsaXJw L3RjcF9pbnB1dC5jOjMzMDoKK15JICBvcHRwID0gbXRvZChtLCBjaGFyICopICsgc2l6ZW9mIChz dHJ1Y3QgdGNwaXBoZHIpOyQKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVkIGJldHdlZW4gZnVuY3Rp b24gbmFtZSBhbmQgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzMwNDogRklMRTogc2xpcnAvdGNwX2lu cHV0LmM6MzMwOgorICAgICAgICAgb3B0cCA9IG10b2QobSwgY2hhciAqKSArIHNpemVvZiAoc3Ry dWN0IHRjcGlwaGRyKTsKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMK IzMxMzogRklMRTogc2xpcnAvdGNwX2lucHV0LmM6NDcyOgorXkleSXRjcF9kb29wdGlvbnModHAs ICh1aW50OF90ICopb3B0cCwgb3B0bGVuLCB0aSk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3Vs ZCBuZXZlciB1c2UgdGFicwojMzIyOiBGSUxFOiBzbGlycC90Y3BfaW5wdXQuYzo3Mjc6CiteSSAg ICB0Y3BfZG9vcHRpb25zKHRwLCAodWludDhfdCAqKW9wdHAsIG9wdGxlbiwgdGkpOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzMzMTogRklMRTogc2xpcnAvdGNw X2lucHV0LmM6MTA0MjoKK15JXkleSV5JXkl1bnNpZ25lZCB3aW4gPSQKCkVSUk9SOiBjb2RlIGlu ZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzM0MTogRklMRTogc2xpcnAvdGNwX2lucHV0LmM6 MTExMToKK15JXkkgIHJlZ2lzdGVyIHVuc2lnbmVkIGN3ID0gdHAtPnNuZF9jd25kOyQKCkVSUk9S OiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzM0MjogRklMRTogc2xpcnAvdGNw X2lucHV0LmM6MTExMjoKK15JXkkgIHJlZ2lzdGVyIHVuc2lnbmVkIGluY3IgPSB0cC0+dF9tYXhz ZWc7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMzgyOiBGSUxF OiBzbGlycC90Y3Bfb3V0cHV0LmM6NjY6CiteSXVpbnQ4X3Qgb3B0W01BWF9UQ1BPUFRMRU5dOyQK CkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzM5MTogRklMRTogc2xp cnAvdGNwX291dHB1dC5jOjI3NDoKK15JXkleSW1lbWNweSgoY2hhciAqKShvcHQgKyAyKSwgKGNo YXIgKikmbXNzLCBzaXplb2YobXNzKSk7JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojNDAwOiBGSUxFOiBzbGlycC90Y3Bfb3V0cHV0LmM6MzA0OgorXkleSXNiY29w eSgmc28tPnNvX3NuZCwgb2ZmLCAoaW50KSBsZW4sIG10b2QobSwgY2hhciAqKSArIGhkcmxlbik7 JAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNDA5OiBGSUxFOiBz bGlycC90Y3Bfb3V0cHV0LmM6MzI3OgorXkltZW1jcHkoKGNoYXIgKil0aSwgJnRwLT50X3RlbXBs YXRlLCBzaXplb2YgKHN0cnVjdCB0Y3BpcGhkcikpOyQKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVk IGJldHdlZW4gZnVuY3Rpb24gbmFtZSBhbmQgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzQwOTogRklM RTogc2xpcnAvdGNwX291dHB1dC5jOjMyNzoKKyAgICAgICBtZW1jcHkoKGNoYXIgKil0aSwgJnRw LT50X3RlbXBsYXRlLCBzaXplb2YgKHN0cnVjdCB0Y3BpcGhkcikpOwoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNDE4OiBGSUxFOiBzbGlycC90Y3Bfb3V0cHV0LmM6 MzU2OgorXkleSW1lbWNweSgoY2hhciAqKSh0aSArIDEpLCAoY2hhciAqKW9wdCwgb3B0bGVuKTsk CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM0MzE6IEZJTEU6IHNs aXJwL3RjcF9zdWJyLmM6MTY2OgorXkleSW0tPm1fZGF0YSA9IChjaGFyICopdGk7JAoKRVJST1I6 IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNDQwOiBGSUxFOiBzbGlycC90Y3Bf c3Vici5jOjE4NToKK15JdGktPnRpX2xlbiA9IGh0b25zKCh1aW50MTZfdCkoc2l6ZW9mIChzdHJ1 Y3QgdGNwaGRyKSArIHRsZW4pKTskCgpFUlJPUjogc3BhY2UgcHJvaGliaXRlZCBiZXR3ZWVuIGZ1 bmN0aW9uIG5hbWUgYW5kIG9wZW4gcGFyZW50aGVzaXMgJygnCiM0NDA6IEZJTEU6IHNsaXJwL3Rj cF9zdWJyLmM6MTg1OgorICAgICAgIHRpLT50aV9sZW4gPSBodG9ucygodWludDE2X3QpKHNpemVv ZiAoc3RydWN0IHRjcGhkcikgKyB0bGVuKSk7CgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5l dmVyIHVzZSB0YWJzCiM0NDk6IEZJTEU6IHNsaXJwL3RjcF9zdWJyLmM6NjE2OgorXkl1bnNpZ25l ZCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzQ1MzogRklMRTogc2xpcnAvdGNwX3N1YnIuYzo2MTk6CiteSXVuc2lnbmVk IGxwb3J0OyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzQ2Mjog RklMRTogc2xpcnAvdGNwX3N1YnIuYzo4NTY6CiteSV5JXkl1aW50MTZfdCBwOyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzQ3MjogRklMRTogc2xpcnAvdGNwX3N1 YnIuYzo5MTI6CiteSV5JXkleSWxwb3J0ID0gKCgodWludDhfdCopYnB0cilbMF0gPDwgOCkkCgpF UlJPUjogIihmb28qKSIgc2hvdWxkIGJlICIoZm9vICopIgojNDcyOiBGSUxFOiBzbGlycC90Y3Bf c3Vici5jOjkxMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG9ydCA9ICgoKHVp bnQ4X3QqKWJwdHIpWzBdIDw8IDgpCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVz ZSB0YWJzCiM0NzM6IEZJTEU6IHNsaXJwL3RjcF9zdWJyLmM6OTEzOgorXkleSV5JXkkrICgodWlu dDhfdCAqKWJwdHIpWzFdOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRh YnMKIzQ4MzogRklMRTogc2xpcnAvdGNwX3N1YnIuYzo5MzE6CiteSV5JXkleSSoodWludDhfdCAq KWJwdHIrKyA9IChwID4+IDgpICYgMHhmZjskCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFj dGVycwojNDk3OiBGSUxFOiBzbGlycC90Y3BfdGltZXIuYzoyMzU6CisgICAgICAgICAgICAgICAg dW5zaWduZWQgd2luID0gTUlOKHRwLT5zbmRfd25kLCB0cC0+c25kX2N3bmQpIC8gMiAvIHRwLT50 X21heHNlZzsKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzUxMDog RklMRTogc2xpcnAvdGNwX3Zhci5oOjUwOgorXkl1aW50MTZfdF5JdF9tYXhzZWc7XkleSS8qIG1h eGltdW0gc2VnbWVudCBzaXplICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1 c2UgdGFicwojNTEzOiBGSUxFOiBzbGlycC90Y3BfdmFyLmg6NTI6CiteSXVpbnQxNl90Xkl0X2Zs YWdzOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzUyMjogRklM RTogc2xpcnAvdGNwX3Zhci5oOjEwODoKK15JdWludDE2X3ReSXRfcnR0bWluO15JXkkvKiBtaW5p bXVtIHJ0dCBhbGxvd2VkICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojNTM0OiBGSUxFOiBzbGlycC90Y3BfdmFyLmg6MTE5OgorXkl1aW50OF90XklzbmRfc2Nh bGU7XkleSS8qIHdpbmRvdyBzY2FsaW5nIGZvciBzZW5kIHdpbmRvdyAqLyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzUzNTogRklMRTogc2xpcnAvdGNwX3Zhci5o OjEyMDoKK15JdWludDhfdF5JcmN2X3NjYWxlO15JXkkvKiB3aW5kb3cgc2NhbGluZyBmb3IgcmVj diB3aW5kb3cgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM1 MzY6IEZJTEU6IHNsaXJwL3RjcF92YXIuaDoxMjE6CiteSXVpbnQ4X3ReSXJlcXVlc3Rfcl9zY2Fs ZTteSS8qIHBlbmRpbmcgd2luZG93IHNjYWxpbmcgKi8kCgpFUlJPUjogY29kZSBpbmRlbnQgc2hv dWxkIG5ldmVyIHVzZSB0YWJzCiM1Mzc6IEZJTEU6IHNsaXJwL3RjcF92YXIuaDoxMjI6CiteSXVp bnQ4X3ReSXJlcXVlc3RlZF9zX3NjYWxlOyQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2 ZXIgdXNlIHRhYnMKIzU1MDogRklMRTogc2xpcnAvdWRwLmM6OTU6CiteSXVoID0gKHN0cnVjdCB1 ZHBoZHIgKikoKGNoYXIgKilpcCArIGlwaGxlbik7JAoKRVJST1I6ICJmb28gKiBiYXIiIHNob3Vs ZCBiZSAiZm9vICpiYXIiCiM1NzQ6IEZJTEU6IHNsaXJwL3VkcC5oOjgxOgorc3RydWN0IHNvY2tl dCAqIHVkcF9saXN0ZW4oU2xpcnAgKiwgdWludDMyX3QsIHVuc2lnbmVkLCB1aW50MzJfdCwgdW5z aWduZWQsCgpFUlJPUjogZXh0ZXJucyBzaG91bGQgYmUgYXZvaWRlZCBpbiAuYyBmaWxlcwojNTg3 OiBGSUxFOiB1dGlsL29zZGVwLmM6MzI6CitleHRlcm4gaW50IG1hZHZpc2UoY2hhciAqLCBzaXpl X3QsIGludCk7Cgp0b3RhbDogNTEgZXJyb3JzLCAyIHdhcm5pbmdzLCA0NTUgbGluZXMgY2hlY2tl ZAoKUGF0Y2ggMjYvMzIgaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55 IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBt YWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCjI3LzMyIENoZWNraW5n IGNvbW1pdCBiODg5N2ZjNDM0YjcgKHNsaXJwOiBpbXByb3ZlIHNlbmRfcGFja2V0KCkgY2FsbGJh Y2spCjI4LzMyIENoZWNraW5nIGNvbW1pdCAxMjcwZmNjNDQxMWYgKHNsaXJwOiByZXBsYWNlIGds b2JhbCBwb2xsaW5nIHdpdGggcGVyLWluc3RhbmNlICYgbm90aWZpZXIpCkVSUk9SOiBzcGFjZXMg cmVxdWlyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQojMjM3OiBGSUxFOiBzbGlycC9zbGly cC5jOjQ3MToKKyAgICAgICAgICAgIChzby0+c29fc25kLnNiX2NjIDwgKHNvLT5zb19zbmQuc2Jf ZGF0YWxlbi8yKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIGxlYWRpbmcgLyog b24gYSBzZXBhcmF0ZSBsaW5lCiM1NjU6IEZJTEU6IHNsaXJwL3NsaXJwLmM6NjExOgorICAgICAg ICAgICAgICAgICAgICAvKiBTb2NrZXQgZXJyb3IgbWlnaHQgaGF2ZSByZXN1bHRlZCBpbiB0aGUg c29ja2V0IGJlaW5nCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSB0cmFpbGluZyAqLyBv biBhIHNlcGFyYXRlIGxpbmUKIzU2NjogRklMRTogc2xpcnAvc2xpcnAuYzo2MTI6CisgICAgICAg ICAgICAgICAgICAgICAqIHJlbW92ZWQsIGRvIG5vdCB0cnkgdG8gZG8gYW55dGhpbmcgbW9yZSB3 aXRoIGl0LiAqLwoKV0FSTklORzogQmxvY2sgY29tbWVudHMgdXNlIGEgbGVhZGluZyAvKiBvbiBh IHNlcGFyYXRlIGxpbmUKIzU5NDogRklMRTogc2xpcnAvc2xpcnAuYzo2MzQ6CisgICAgICAgICAg ICAgICAgICAgIC8qIFNvY2tldCBlcnJvciBtaWdodCBoYXZlIHJlc3VsdGVkIGluIHRoZSBzb2Nr ZXQgYmVpbmcKCldBUk5JTkc6IEJsb2NrIGNvbW1lbnRzIHVzZSBhIHRyYWlsaW5nICovIG9uIGEg c2VwYXJhdGUgbGluZQojNTk1OiBGSUxFOiBzbGlycC9zbGlycC5jOjYzNToKKyAgICAgICAgICAg ICAgICAgICAgICogcmVtb3ZlZCwgZG8gbm90IHRyeSB0byBkbyBhbnl0aGluZyBtb3JlIHdpdGgg aXQuICovCgpXQVJOSU5HOiBCbG9jayBjb21tZW50cyB1c2UgYSBsZWFkaW5nIC8qIG9uIGEgc2Vw YXJhdGUgbGluZQojNjUzOiBGSUxFOiBzbGlycC9zbGlycC5jOjY3NToKKyAgICAgICAgICAgICAg ICAgICAgICAgIC8qIENhbGwgdGNwX291dHB1dCBpbiBjYXNlIHdlIG5lZWQgdG8gc2VuZCBhIHdp bmRvdwoKV0FSTklORzogQmxvY2sgY29tbWVudHMgdXNlIGEgdHJhaWxpbmcgKi8gb24gYSBzZXBh cmF0ZSBsaW5lCiM2NTU6IEZJTEU6IHNsaXJwL3NsaXJwLmM6Njc3OgorICAgICAgICAgICAgICAg ICAgICAgICAgICogdW50aWwgaXQgc2VuZHMgYSB3aW5kb3cgcHJvYmUuICovCgpXQVJOSU5HOiBh ZGRlZCwgbW92ZWQgb3IgZGVsZXRlZCBmaWxlKHMpLCBkb2VzIE1BSU5UQUlORVJTIG5lZWQgdXBk YXRpbmc/CiM4MTc6IApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKCnRvdGFsOiAxIGVycm9ycywg NyB3YXJuaW5ncywgODI5IGxpbmVzIGNoZWNrZWQKClBhdGNoIDI4LzMyIGhhcyBzdHlsZSBwcm9i bGVtcywgcGxlYXNlIHJldmlldy4gIElmIGFueSBvZiB0aGVzZSBlcnJvcnMKYXJlIGZhbHNlIHBv c2l0aXZlcyByZXBvcnQgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlCkNIRUNLUEFUQ0ggaW4g TUFJTlRBSU5FUlMuCgoyOS8zMiBDaGVja2luZyBjb21taXQgZDAxYzM1MWY5MDQ3IChzbGlycDog cmVtb3ZlIHNsaXJwX2luc3RhbmNlcyBsaXN0KQozMC8zMiBDaGVja2luZyBjb21taXQgMGQ4MWRk ZGM4MjFkIChzbGlycDogdXNlIHBvbGxpbmcgY2FsbGJhY2tzLCBkcm9wIGdsaWIgcmVxdWlyZW1l bnQpCjMxLzMyIENoZWNraW5nIGNvbW1pdCAzZDFjZGNmM2RhNWIgKHNsaXJwOiBwYXNzIG9wYXF1 ZSB0byBhbGwgY2FsbGJhY2tzKQpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojOTU6 IEZJTEU6IHNsaXJwL2RoY3B2Ni5jOjYyOgorICAgICAgICAgICAgc2xpcnAtPmNiLT5ndWVzdF9l cnJvcigiR3Vlc3Qgc2VudCBiYWQgREhDUHY2IHBhY2tldCEiLCBzbGlycC0+b3BhcXVlKTsKCldB Uk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMxMzE6IEZJTEU6IHNsaXJwL2lwNl9pY21w LmM6Mjg6CisgICAgc2xpcnAtPnJhX3RpbWVyID0gc2xpcnAtPmNiLT50aW1lcl9uZXcocmFfdGlt ZXJfaGFuZGxlciwgc2xpcnAsIHNsaXJwLT5vcGFxdWUpOwoKV0FSTklORzogbGluZSBvdmVyIDgw IGNoYXJhY3RlcnMKIzI3NjogRklMRTogc2xpcnAvc2xpcnAuYzo4ODg6CisgICAgICAgICAgICBp Zm0tPmV4cGlyYXRpb25fZGF0ZSA9IHNsaXJwLT5jYi0+Y2xvY2tfZ2V0X25zKHNsaXJwLT5vcGFx dWUpICsgMTAwMDAwMDAwMFVMTDsKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNl IHRhYnMKIzMxMDogRklMRTogc2xpcnAvdGNwX3N1YnIuYzozMzk6CiteSXNvLT5zbGlycC0+Y2It PnVucmVnaXN0ZXJfcG9sbF9mZChzby0+cywgc28tPnNsaXJwLT5vcGFxdWUpOyQKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzM1MDogRklMRTogc2xpcnAvdWRwLmM6 Mjk0OgorXklzby0+c2xpcnAtPmNiLT51bnJlZ2lzdGVyX3BvbGxfZmQoc28tPnMsIHNvLT5zbGly cC0+b3BhcXVlKTskCgp0b3RhbDogMiBlcnJvcnMsIDMgd2FybmluZ3MsIDI3MyBsaW5lcyBjaGVj a2VkCgpQYXRjaCAzMS8zMiBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBh bnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhl IG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKMzIvMzIgQ2hlY2tp bmcgY29tbWl0IDQ4Nzg4ZjMyYjgzYiAoc2xpcnA6IEFQSSBpcyBleHRlcm4gQykKV0FSTklORzog YXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRlZmluZXMgc2hvdWxkIGJlIGF2b2lkZWQKIzIxOiBGSUxF OiBzbGlycC9saWJzbGlycC5oOjE1OgorI2lmZGVmIF9fY3BsdXNwbHVzCgpXQVJOSU5HOiBhcmNo aXRlY3R1cmUgc3BlY2lmaWMgZGVmaW5lcyBzaG91bGQgYmUgYXZvaWRlZAojMzM6IEZJTEU6IHNs aXJwL2xpYnNsaXJwLmg6MTAzOgorI2lmZGVmIF9fY3BsdXNwbHVzCgp0b3RhbDogMCBlcnJvcnMs IDIgd2FybmluZ3MsIDE5IGxpbmVzIGNoZWNrZWQKClBhdGNoIDMyLzMyIGhhcyBzdHlsZSBwcm9i bGVtcywgcGxlYXNlIHJldmlldy4gIElmIGFueSBvZiB0aGVzZSBlcnJvcnMKYXJlIGZhbHNlIHBv c2l0aXZlcyByZXBvcnQgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlCkNIRUNLUEFUQ0ggaW4g TUFJTlRBSU5FUlMuCj09PSBPVVRQVVQgRU5EID09PQoKVGVzdCBjb21tYW5kIGV4aXRlZCB3aXRo IGNvZGU6IDEKCgpUaGUgZnVsbCBsb2cgaXMgYXZhaWxhYmxlIGF0Cmh0dHA6Ly9wYXRjaGV3Lm9y Zy9sb2dzLzIwMTkwMjA1MTgyODQ4LjI5ODg3LTEtc2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9y Zy90ZXN0aW5nLmNoZWNrcGF0Y2gvP3R5cGU9bWVzc2FnZS4KLS0tCkVtYWlsIGdlbmVyYXRlZCBh dXRvbWF0aWNhbGx5IGJ5IFBhdGNoZXcgW2h0dHA6Ly9wYXRjaGV3Lm9yZy9dLgpQbGVhc2Ugc2Vu ZCB5b3VyIGZlZWRiYWNrIHRvIHBhdGNoZXctZGV2ZWxAcmVkaGF0LmNvbQ==