From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.11.90.20160907 (pre-7.12 branch snapshot). Date: Thu, 23 Jul 2026 18:32:32 GMT Message-ID: <178483155264.1.8844285111781370556.rpms-gdb-d258670d645c@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: d258670d645c91c1124ef42a8f55bd6c810a417a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogZDI1ODY3MGQ2NDVjOTFjMTEyNGVmNDJhOGY1NWJkNmM4MTBhNDE3YQog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxNi0wOS0wN1QyMjo0Nzo0OCswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArMzQ5NS8tNDcwMSBpbiAxNyBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZDI1ODY3MGQ2 NDVjOTFjMTEyNGVmNDJhOGY1NWJkNmM4MTBhNDE3YT9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiA3LjExLjkwLjIwMTYw OTA3IChwcmUtNy4xMiBicmFuY2ggc25hcHNob3QpLgoKLSBSZWJhc2UgSW50ZWwgVkxBIHBhdGNo c2V0LgoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCAyMTRh YjYxLi43ZjllZjI4IDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAg LTEsMyArMSwzIEBACiAvZ2RiLWxpYnN0ZGMrKy12My1weXRob24tNi4xLjEtMjAxNjA4MTcudGFy Lnh6CiAvdjEuNS50YXIuZ3oKLS9nZGItNy4xMS45MC4yMDE2MDkwNC50YXIueHoKKy9nZGItNy4x MS45MC4yMDE2MDkwNy50YXIueHoKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRl LnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAppbmRleCBmZjc3Nzc1Li4yODc3 M2VjIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCisrKyBiL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKQEAgLTI4MSw2ICsyODEsMTYgQEAgSW5kZXg6IGdkYi03 LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgCiAgICAg IGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKICAJbWlfY3JlYXRlX2luZmVyaW9yX3B0 eQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbmV3LXVp LXBlbmRpbmctaW5wdXQuZXhwLW9yaWcJMjAxNi0wOS0wNyAwNDowMToxNS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL25ldy11 aS1wZW5kaW5nLWlucHV0LmV4cAkyMDE2LTA5LTA3IDIyOjM1OjM1LjgxODUzNDA2OSArMDIwMAor QEAgLTYyLDYgKzYyLDcgQEAgcHJvYyB0ZXN0X2NvbW1hbmRfbGluZV9uZXdfdWlfcGVuZGluZ19p bgorICAgICBzZXQgb3B0aW9ucyAiIgorICAgICBhcHBlbmQgb3B0aW9ucyAiIC1pZXggXCJzZXQg aGVpZ2h0IDBcIiIKKyAgICAgYXBwZW5kIG9wdGlvbnMgIiAtaWV4IFwic2V0IHdpZHRoIDBcIiIK KysgICAgYXBwZW5kIG9wdGlvbnMgIiAtaWV4IFwic2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFwiIgor ICAgICBhcHBlbmQgb3B0aW9ucyAiIC1pZXggXCJuZXctdWkgY29uc29sZSAkZXh0cmFfdHR5X25h bWVcIiIKKyAgICAgYXBwZW5kIG9wdGlvbnMgIiAtZXggXCJiICRicGxpbmVcIiIKKyAgICAgYXBw ZW5kIG9wdGlvbnMgIiAtZXggXCJydW5cIiIKIEluZGV4OiBnZGItNy4xMS41MC4yMDE2MDYzMC9n ZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdkYi03LjExLjUwLjIwMTYwNjMwLm9yaWcv Z2RiL29iamZpbGVzLmgJMjAxNi0wNy0wMyAxNDozMzoyOC4xMzAyMDU1MjggKzAyMDAKCmRpZmYg LS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTI1b2YyNS5wYXRjaAppbmRleCBlZjVlMDQ4Li5jZjVjMTdlIDEwMDY0NAotLS0g YS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0 LWJpdHBvcy0yNW9mMjUucGF0Y2gKQEAgLTQ3LDEwICs0NywxMCBAQCBDb250ZW50LVR5cGU6IHRl eHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAogQ29udGVudC1EaXNw b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Zjc3LWJvdW5kcy5wYXRjaAogCi1JbmRleDog Z2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2RiLTcuMTEuOTAuMjAx NjA5MDcvZ2RiL2YtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMTEuNTAuMjAxNjA2MzAu b3JpZy9nZGIvZi1sYW5nLmgJMjAxNi0wNy0xNiAxMDo1NjoxMS42ODI3NjI3MjIgKzAyMDAKLSsr KyBnZGItNy4xMS41MC4yMDE2MDYzMC9nZGIvZi1sYW5nLmgJMjAxNi0wNy0xNiAxMDo1NjoxNS41 NTQ3OTM3MDQgKzAyMDAKKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi9mLWxhbmcu aAkyMDE2LTA5LTA3IDIxOjQ4OjMzLjMwODYyNDAxOSArMDIwMAorKysrIGdkYi03LjExLjkwLjIw MTYwOTA3L2dkYi9mLWxhbmcuaAkyMDE2LTA5LTA3IDIxOjQ4OjQwLjk2NzY5MjQ2OSArMDIwMAog QEAgLTQ5LDkgKzQ5LDkgQEAKICAgIHN0cnVjdCBzeW1ib2wgKmNvbnRlbnRzWzFdOwogIH07CkBA IC02MywxMCArNjMsMTAgQEAgSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi9mLWxhbmcu aAogIAogIGV4dGVybiB2b2lkIGY3N19nZXRfZHluYW1pY19hcnJheV9sZW5ndGggKHN0cnVjdCB0 eXBlICopOwogIAotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi9mLXR5cGVwcmludC5j CitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2YtdHlwZXByaW50LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4xMS41MC4yMDE2MDYzMC5vcmlnL2dkYi9mLXR5cGVwcmludC5jCTIwMTYt MDctMTYgMTA6NTY6MTEuNjgyNzYyNzIyICswMjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAxNjA2MzAv Z2RiL2YtdHlwZXByaW50LmMJMjAxNi0wNy0xNiAxMDo1Njo0My43OTUwMTk2NjAgKzAyMDAKKy0t LSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi9mLXR5cGVwcmludC5jCTIwMTYtMDktMDcg MjE6NDg6MzMuMzA5NjI0MDI4ICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2Yt dHlwZXByaW50LmMJMjAxNi0wOS0wNyAyMTo0ODo0MC45Njc2OTI0NjkgKzAyMDAKIEBAIC0xNDcs NyArMTQ3LDcgQEAKICAJCQkgICAgIGludCBzaG93LCBpbnQgcGFzc2VkX2FfcHRyLCBpbnQgZGVt YW5nbGVkX2FyZ3MsCiAgCQkJICAgICBpbnQgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLCBpbnQg cHJpbnRfcmFua19vbmx5KQpAQCAtODQsNyArODQsNyBAQCBJbmRleDogZ2RiLTcuMTEuNTAuMjAx NjA2MzAvZ2RiL2YtdHlwZXByaW50LmMKICsJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg IiVzOiIsIHBsb25nZXN0IChsb3dlcl9ib3VuZCkpOwogIAogIAkgIC8qIE1ha2Ugc3VyZSB0aGF0 LCBpZiB3ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSwgd2UKLSAJICAgICBwcmludCBvdXQg YSB3YXJuaW5nIGFuZCBwcmludCB0aGUgdXBwZXJib3VuZCBhcyAnKicuICAqLworIAkgICAgICAg cHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJpbnQgdGhlIHVwcGVyYm91bmQgYXMgJyonLiAgKi8K IEBAIC0yMDQsNyArMjA0LDcgQEAKICAJICBlbHNlCiAgCSAgICB7CkBAIC0xMTIsMTAgKzExMiwx MCBAQCBJbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtdHlwZXByaW50LmMKICAJfQog ICAgICAgIGJyZWFrOwogIAotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi9mLXZhbHBy aW50LmMKK0luZGV4OiBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvZi12YWxwcmludC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMTEuNTAuMjAxNjA2MzAub3JpZy9nZGIvZi12YWxwcmludC5jCTIw MTYtMDctMTYgMTA6NTY6MTEuNjgyNzYyNzIyICswMjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAxNjA2 MzAvZ2RiL2YtdmFscHJpbnQuYwkyMDE2LTA3LTE2IDEwOjU2OjE1LjU1NDc5MzcwNCArMDIwMAor LS0tIGdkYi03LjExLjkwLjIwMTYwOTA3Lm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDE2LTA5LTA3 IDIxOjQ4OjMzLjMwOTYyNDAyOCArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi9m LXZhbHByaW50LmMJMjAxNi0wOS0wNyAyMTo0ODo0MC45Njc2OTI0NjkgKzAyMDAKIEBAIC00Myw3 ICs0Myw3IEBACiAgLyogQXJyYXkgd2hpY2ggaG9sZHMgb2Zmc2V0cyB0byBiZSBhcHBsaWVkIHRv IGdldCBhIHJvdydzIGVsZW1lbnRzCiAgICAgZm9yIGEgZ2l2ZW4gYXJyYXkuICBBcnJheSBhbHNv IGhvbGRzIHRoZSBzaXplIG9mIGVhY2ggc3ViYXJyYXkuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi12 bGEtaW50ZWwtMW9mNy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMW9mNy5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3MjkyMi4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVs LTFvZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotRnJvbSAyNmUxNTZk NjIyMTFjYTg0NThmYWEzMjZmMjE5NDBlOWZhMThjOGZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogQmVybmhhcmQgSGVja2VsIDxiZXJuaGFyZC5oZWNrZWxAaW50ZWwuY29tPgotRGF0 ZTogVHVlLCAxMiBKdWwgMjAxNiAwODoxOTozNCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvN10g Rm9ydHJhbjogVGVzdHN1aXRlLCBmaXggZGlmZmVyZW5jZXMgaW4gdHlwZSBuYW1pbmcuCi0KLUNv bnRpbnVlZCBvbiAwYzEzZjdlNTU5YWZlNWY5NzNhNTkzMTFiMGU0MDEyOTZjNDhkOTZjCi0oZm9y dHJhbjogVGVzdHN1aXRlLCBmaXggZGlmZmVyZW50IHR5cGUgbmFtaW5nIGFjcm9zcyBjb21waWxl cnMpLgotCi0yMDE2LTA2LTA4ICBCZXJuaGFyZCBIZWNrZWwgIDxiZXJuaGFyZC5oZWNrZWxAaW50 ZWwuY29tPgotCi1nZGIvVGVzdHN1aXRlL0NoYW5nZWxvZzoKLQkqIGdkYi5mb3J0cmFuL3ZsYS12 YWx1ZS5leHA6IFVzZSB0eXBlIG5hbWVzIGRlZmluZWQgaW4gbGliZm9ydHJhbi4KLQkqIGdkYi5t aS9taS12YXItY2hpbGQtZi5leHA6IExpa2V3aXNlLgotCSogZ2RiLm1pL21pLXZsYS1mb3J0cmFu LmV4cDogTGlrZXdpc2UuCi0KLUNoYW5nZS1JZDogSTdlZTk0NTg3YTk5MmFkZDI3ZmVjNzdjNzcy NmY5YTY5YzhmZGYzNzMKLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVl LmV4cCB8IDEyICsrKysrKysrLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZhci1jaGls ZC1mLmV4cCB8ICA3ICsrKy0tLS0KLSBnZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJh bi5leHAgfCAxOCArKysrKysrKysrKy0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2Vy dGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt dmFsdWUuZXhwCi1pbmRleCAwOTQ1MTgxLi4yNzVmNzM4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS12YWx1ZS5leHAKLUBAIC0xNCw2ICsxNCw3IEBACi0gIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSAKLSBzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKLStsb2FkX2xpYiAiZm9ydHJhbi5leHAi Ci0gCi0gaWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0Zmls ZX0gJHtzcmNmaWxlfSBcCi0gICAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci1AQCAtMjUsMTIg KzI2LDE1IEBAIGlmICFbcnVudG9fbWFpbl0gewotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0rIyBE ZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIGJlaW5nIHVzZWQsIHRoZSB0eXBlIG5hbWVzIGNhbiBi ZSBwcmludGVkIGRpZmZlcmVudGx5LgotK3NldCByZWFsIFtmb3J0cmFuX3JlYWw0XQotKwotICMg VHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRlZCBWTEEKLSBnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KLSBnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAidmxhMS1pbml0IgotIGdkYl90ZXN0ICJwcmludCB2bGExIiAiID0gPG5vdCBhbGxv Y2F0ZWQ+IiAicHJpbnQgbm9uLWFsbG9jYXRlZCB2bGExIgotIGdkYl90ZXN0ICJwcmludCAmdmxh MSIgXAotLSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDxu b3QgYWxsb2NhdGVkPlxcXClcXFwpXFxcKSAkaGV4IiBcCi0rICAiID0gXFxcKFBUUiBUTyAtPiBc XFwoICRyZWFsIFxcXCg8bm90IGFsbG9jYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAotICAgInBy aW50IG5vbi1hbGxvY2F0ZWQgJnZsYTEiCi0gZ2RiX3Rlc3QgInByaW50IHZsYTEoMSwxLDEpIiAi bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRcXFwpIiBcCi0g ICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxhMSAoMSkiCi1AQCAtNTEsNyArNTUs NyBAQCB3aXRoX3RpbWVvdXRfZmFjdG9yIDE1IHsKLSAJInN0ZXAgb3ZlciB2YWx1ZSBhc3NpZ25t ZW50IG9mIHZsYTEiCi0gfQotIGdkYl90ZXN0ICJwcmludCAmdmxhMSIgXAotLSAgIiA9IFxcXChQ VFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxcKVxcXClcXFwp ICRoZXgiIFwKLSsgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDEwLDEwLDEwXFxc KVxcXClcXFwpICRoZXgiIFwKLSAgICJwcmludCBhbGxvY2F0ZWQgJnZsYTEiCi0gZ2RiX3Rlc3Qg InByaW50IHZsYTEoMywgNiwgOSkiICIgPSAxMzExIiAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMyw2 LDkpIgotIGdkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTMxMSIgInByaW50IGFs bG9jYXRlZCB2bGExKDEsMyw4KSIKLUBAIC03MSw3ICs3NSw3IEBAIGdkYl90ZXN0ICJwcmludCB2 bGExKDksIDksIDkpIiAiID0gOTk5IiBcCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiB1bmRl ZmluZWQgcG9pbnRlciB0byBWTEEgKGRhbmdsaW5nKQotIGdkYl90ZXN0ICJwcmludCBwdmxhIiAi ID0gPG5vdCBhc3NvY2lhdGVkPiIgInByaW50IHVuZGVmaW5lZCBwdmxhIgotIGdkYl90ZXN0ICJw cmludCAmcHZsYSIgXAotLSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxc XCkgXFxcKDxub3QgYXNzb2NpYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAotKyAgIiA9IFxcXChQ VFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwoPG5vdCBhc3NvY2lhdGVkPlxcXClcXFwpXFxcKSAkaGV4 IiBcCi0gICAicHJpbnQgbm9uLWFzc29jaWF0ZWQgJnB2bGEiCi0gZ2RiX3Rlc3QgInByaW50IHB2 bGEoMSwgMywgOCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Igbm90IGFzc29j aWF0ZWRcXFwpIiBcCi0gICAicHJpbnQgdW5kZWZpbmVkIHB2bGEoMSwzLDgpIgotQEAgLTgwLDcg Kzg0LDcgQEAgZ2RiX3Rlc3QgInByaW50IHB2bGEoMSwgMywgOCkiICJubyBzdWNoIHZlY3RvciBl bGVtZW50IFxcXCh2ZWN0b3Igbm90IGFzc29jaWF0ZWQKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KLSBnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAicHZsYS1hc3NvY2lhdGVkIgotIGdkYl90ZXN0ICJwcmludCAmcHZsYSIgXAotLSAgIiA9 IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxcKVxc XClcXFwpICRoZXgiIFwKLSsgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDEwLDEw LDEwXFxcKVxcXClcXFwpICRoZXgiIFwKLSAgICJwcmludCBhc3NvY2lhdGVkICZwdmxhIgotIGdk Yl90ZXN0ICJwcmludCBwdmxhKDMsIDYsIDkpIiAiID0gNDIiICJwcmludCBhc3NvY2lhdGVkIHB2 bGEoMyw2LDkpIgotIGdkYl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAiID0gMTAwMSIgInBy aW50IGFzc29jaWF0ZWQgcHZsYSgxLDMsOCkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNo aWxkLWYuZXhwCi1pbmRleCBmM2VkN2MyLi5iYzQ0YzZiIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taS12YXItY2hpbGQtZi5leHAKLUBAIC0xNyw2ICsxNyw3IEBACi0gCi0gbG9hZF9saWIgbWkt c3VwcG9ydC5leHAKLSBzZXQgTUlGTEFHUyAiLWk9bWkiCi0rbG9hZF9saWIgImZvcnRyYW4uZXhw IgotIAotIGlmIHsgW3NraXBfZm9ydHJhbl90ZXN0c10gfSB7IHJldHVybiAtMSB9Ci0gCi1AQCAt NDAsMTAgKzQxLDggQEAgbWlfcnVudG8gTUFJTl9fCi0gbWlfY3JlYXRlX3Zhcm9iaiAiYXJyYXki ICJhcnJheSIgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSBhcnJheSIKLSAKLSAKLS0jIERlcGVuZGlu ZyBvbiB0aGUgY29tcGlsZXIgdmVyc2lvbiBiZWluZyB1c2VkLCB0aGUgbmFtZSBvZiB0aGUgNC1i eXRlIGludGVnZXIKLS0jIGFuZCByZWFsIHR5cGVzIGNhbiBiZSBwcmludGVkIGRpZmZlcmVudGx5 LiAgRm9yIGluc3RhbmNlLCBnZm9ydHJhbi00LjEgdXNlcwotLSMgImludDQiIHdoZXJlYXMgZ2Zv cnRyYW4tNC4zIHVzZXMgImludGVnZXIoa2luZD00KSIuCi0tc2V0IGludDQgIihpbnQ0fGludGVn ZXJcXChraW5kPTRcXCkpIgotKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWluZyB1c2Vk LCB0aGUgdHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4KLStzZXQgaW50NCBb Zm9ydHJhbl9pbnQ0XQotIAotIHNldCBjaGlsZHJlbiBbbGlzdCBbbGlzdCAiYXJyYXkuLTEiICIt MSIgMiAiJGludDQgXFwoMlxcKSJdIFwKLSAJCSAgW2xpc3QgImFycmF5LjAiICIwIiAyICIkaW50 NCBcXCgyXFwpIl0gXAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1m b3J0cmFuLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAotaW5k ZXggMzMzYjcxYS4uMTc3OWVjMCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p LXZsYS1mb3J0cmFuLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRy YW4uZXhwCi1AQCAtMTgsNiArMTgsNyBAQAotIAotIGxvYWRfbGliIG1pLXN1cHBvcnQuZXhwCi0g c2V0IE1JRkxBR1MgIi1pPW1pIgotK2xvYWRfbGliICJmb3J0cmFuLmV4cCIKLSAKLSBnZGJfZXhp dAotIGlmIFttaV9nZGJfc3RhcnRdIHsKLUBAIC0zMiw2ICszMyw5IEBAIGlmIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIFwKLSAgICAgIHJldHVybiAtMQotIH0KLSAKLSsjIERlcGVuZGluZyBvbiB0aGUgY29tcGls ZXIgYmVpbmcgdXNlZCwgdGhlIHR5cGUgbmFtZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHku Ci0rc2V0IHJlYWwgW2ZvcnRyYW5fcmVhbDRdCi0rCi0gbWlfZGVsZXRlX2JyZWFrcG9pbnRzCi0g bWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gbWlfZ2RiX2xvYWQgJHti aW5maWxlfQotQEAgLTU4LDcgKzYyLDcgQEAgbWlfZ2RiX3Rlc3QgIjUwMy12YXItZXZhbHVhdGUt ZXhwcmVzc2lvbiB2bGExX25vdF9hbGxvY2F0ZWQiIFwKLSAgICI1MDNcXF5kb25lLHZhbHVlPVwi XFxcWzBcXFxdXCIiIFwKLSAgICJldmFsIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKLSBt aV9saXN0X2FycmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJ2bGExX25vdF9hbGxvY2F0 ZWQiICIwIiAiMSIgXAotLSAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9m IHZsYTFfbm90X2FsbG9jYXRlZCIKLSsgICAgIiRyZWFsIiAiZ2V0IGNoaWxkcmVuIG9mIHZsYTFf bm90X2FsbG9jYXRlZCIKLSAKLSAKLSAKLUBAIC03MSwxMCArNzUsMTAgQEAgbWlfZXhwZWN0X3N0 b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAot IG1pX2dkYl90ZXN0ICI1MTAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKLSAgICI1 MTBcXF5kb25lLHZhbHVlPVwiXFwoLipcXClcIiIgImV2YWx1YXRlIGFsbG9jYXRlZCB2bGEiCi0g Ci0tbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHZsYTFfYWxsb2NhdGVkIHZsYTEgInJlYWxcXFwo a2luZD00XFxcKSBcXFwoNVxcXCkiIFwKLSttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9h bGxvY2F0ZWQgdmxhMSAiJHJlYWwgXFxcKDVcXFwpIiBcCi0gICAiY3JlYXRlIGxvY2FsIHZhcmlh YmxlIHZsYTFfYWxsb2NhdGVkIgotIG1pX2dkYl90ZXN0ICI1MTEtdmFyLWluZm8tdHlwZSB2bGEx X2FsbG9jYXRlZCIgXAotLSAgIjUxMVxcXmRvbmUsdHlwZT1cInJlYWxcXFwoa2luZD00XFxcKSBc XFwoNVxcXClcIiIgXAotKyAgIjUxMVxcXmRvbmUsdHlwZT1cIiRyZWFsIFxcXCg1XFxcKVwiIiBc Ci0gICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgotIG1pX2dkYl90ZXN0ICI1 MTItdmFyLXNob3ctZm9ybWF0IHZsYTFfYWxsb2NhdGVkIiBcCi0gICAiNTEyXFxeZG9uZSxmb3Jt YXQ9XCJuYXR1cmFsXCIiIFwKLUBAIC04Myw3ICs4Nyw3IEBAIG1pX2dkYl90ZXN0ICI1MTMtdmFy LWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMV9hbGxvY2F0ZWQiIFwKLSAgICI1MTNcXF5kb25lLHZh bHVlPVwiXFxcWzVcXFxdXCIiIFwKLSAgICJldmFsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgot IG1pX2xpc3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfYWxsb2NhdGVk IiAiNSIgIjEiIFwKLS0gICAgInJlYWxcXFwoa2luZD00XFxcKSIgImdldCBjaGlsZHJlbiBvZiB2 bGExX2FsbG9jYXRlZCIKLSsgICAgIiRyZWFsIiAiZ2V0IGNoaWxkcmVuIG9mIHZsYTFfYWxsb2Nh dGVkIgotIAotIAotIHNldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZmls bGVkIl0KLUBAIC0xNDgsNyArMTUyLDcgQEAgZ2RiX2V4cGVjdCB7Ci0gCSAgICAiNTgzXFxeZG9u ZSx2YWx1ZT1cIlxcXFswXFxcXVwiIiBcCi0gCSAgICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9ub3Rf YXNzb2NpYXRlZCIKLSAJbWlfbGlzdF9hcnJheV92YXJvYmpfY2hpbGRyZW5fd2l0aF9pbmRleCAi cHZsYTJfbm90X2Fzc29jaWF0ZWQiICIwIiAiMSIgXAotLQkgICAgInJlYWxcXFwoa2luZD00XFxc KSIgImdldCBjaGlsZHJlbiBvZiBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSsJICAgICIkcmVhbCIg ImdldCBjaGlsZHJlbiBvZiBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSAgICAgfQotICAgICAtcmUg IjU4MFxcXmVycm9yLG1zZz1cInZhbHVlIGNvbnRlbnRzIHRvbyBsYXJnZSBcXChcWzAtOVxdKyBi eXRlc1xcKS4qJHttaV9nZGJfcHJvbXB0fSQiIHsKLSAJIyBVbmRlZmluZWQgYmVoYXZpb3VyIGlu IGdmb3J0cmFuLgotQEAgLTE3Myw5ICsxNzcsOSBAQCBtaV9nZGJfdGVzdCAiNTkwLWRhdGEtZXZh bHVhdGUtZXhwcmVzc2lvbiBwdmxhMiIgXAotICAgImV2YWx1YXRlIGFzc29jaWF0ZWQgdmxhIgot IAotIG1pX2NyZWF0ZV92YXJvYmpfY2hlY2tlZCBwdmxhMl9hc3NvY2lhdGVkIHB2bGEyIFwKLS0g ICJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXCkiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUg cHZsYTJfYXNzb2NpYXRlZCIKLSsgICIkcmVhbCBcXFwoNSwyXFxcKSIgImNyZWF0ZSBsb2NhbCB2 YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgotIG1pX2dkYl90ZXN0ICI1OTEtdmFyLWluZm8tdHlw ZSBwdmxhMl9hc3NvY2lhdGVkIiBcCi0tICAiNTkxXFxeZG9uZSx0eXBlPVwicmVhbFxcXChraW5k PTRcXFwpIFxcXCg1LDJcXFwpXCIiIFwKLSsgICI1OTFcXF5kb25lLHR5cGU9XCIkcmVhbCBcXFwo NSwyXFxcKVwiIiBcCi0gICAiaW5mbyB0eXBlIHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCi0g bWlfZ2RiX3Rlc3QgIjU5Mi12YXItc2hvdy1mb3JtYXQgcHZsYTJfYXNzb2NpYXRlZCIgXAotICAg IjU5MlxcXmRvbmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCi0tLSAKLTIuNy40Ci0KCmRpZmYgLS1n aXQgYS9nZGItdmxhLWludGVsLTJvZjcucGF0Y2ggYi9nZGItdmxhLWludGVsLTJvZjcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYTE3N2EuLjAwMDAwMDAKLS0tIGEvZ2Ri LXZsYS1pbnRlbC0yb2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJv bSBhODc5YjI1MDFlNjFlZTNkM2VmYWRiZGI2YjMzMjEyYjU3ZDNhMmUxIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogQmVybmhhcmQgSGVja2VsIDxiZXJuaGFyZC5oZWNrZWxAaW50ZWwu Y29tPgotRGF0ZTogVHVlLCAxMiBKdWwgMjAxNiAwODoxOTozNCArMDIwMAotU3ViamVjdDogW1BB VENIIDIvN10gRm9ydHJhbjogUmVzb2x2ZSBkeW5hbWljIHByb3BlcnRpZXMgb2YgcG9pbnRlciB0 eXBlcy4KLQotSW4gRm9ydHJhbiBhIHBvaW50ZXIgbWF5IGhhdmUgYSBkeW5hbWljIGFzc29jaWF0 ZWQgcHJvcGVydHkuCi0KLTIwMTYtMDctMDggIEJlcm5oYXJkIEhlY2tlbCAgPGJlcm5oYXJkLmhl Y2tlbEBpbnRlbC5jb20+Ci0KLWdkYi9DaGFuZ2Vsb2c6Ci0JKiBnZGJ0eXBlcy5jIChyZXNvbHZl X2R5bmFtaWNfdHlwZXNfaW50ZXJuYWwpOiBSZXNvbHZlIHBvaW50ZXIgdHlwZXMuCi0JICAocmVz b2x2ZV9keW5hbWljX3BvaW50ZXIpOiBOZXcuCi0KLUNoYW5nZS1JZDogSWU0YjlkNjM5N2NmYTA4 OWVlMmUwZGIwMmJlYjE4NDE1YTc1MWMxYzAKLS0tLQotIGdkYi9nZGJ0eXBlcy5jIHwgMjkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIv Z2RidHlwZXMuYwotaW5kZXggZWM1YzE3YS4uYjUzZTY0OSAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0 eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTE4MDYsNyArMTgwNiw4IEBAIGlzX2R5 bmFtaWNfdHlwZV9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCB0b3BfbGV2ZWwpCi0g ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0gCi0gICAvKiBXZSBvbmx5IHdhbnQgdG8g cmVjb2duaXplIHJlZmVyZW5jZXMgYXQgdGhlIG91dGVybW9zdCBsZXZlbC4gICovCi0tICBpZiAo dG9wX2xldmVsICYmIFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKLSsgIGlmICh0 b3BfbGV2ZWwgJiYKLSsgICAgICAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkVGIHx8 IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUikpCi0gICAgIHR5cGUgPSBjaGVja190 eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0gCi0gICAvKiBUeXBlcyB0aGF0IGhh dmUgYSBkeW5hbWljIFRZUEVfREFUQV9MT0NBVElPTiBhcmUgY29uc2lkZXJlZAotQEAgLTIxMDUs NiArMjEwNiwyOCBAQCByZXNvbHZlX2R5bmFtaWNfc3RydWN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwK LSAgIHJldHVybiByZXNvbHZlZF90eXBlOwotIH0KLSAKLSsvKiBXb3JrZXIgZm9yIHBvaW50ZXIg dHlwZXMuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rcmVzb2x2ZV9keW5hbWljX3Bv aW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCSBzdHJ1Y3QgcHJvcGVydHlfYWRkcl9pbmZv ICphZGRyX3N0YWNrKQotK3sKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3A7Ci0rICBDT1JF X0FERFIgdmFsdWU7Ci0rCi0rICB0eXBlID0gY29weV90eXBlICh0eXBlKTsKLSsKLSsgIC8qIFJl c29sdmUgYXNzb2NpYXRlZCBwcm9wZXJ0eS4gICovCi0rICBwcm9wID0gVFlQRV9BU1NPQ0lBVEVE X1BST1AgKHR5cGUpOwotKyAgaWYgKHByb3AgIT0gTlVMTCAmJiBkd2FyZjJfZXZhbHVhdGVfcHJv cGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkpCi0rICAgIHsKLSsgICAgICBU WVBFX0RZTl9QUk9QX0FERFIgKHByb3ApID0gdmFsdWU7Ci0rICAgICAgVFlQRV9EWU5fUFJPUF9L SU5EIChwcm9wKSA9IFBST1BfQ09OU1Q7Ci0rICAgIH0KLSsKLSsgIHJldHVybiB0eXBlOwotK30K LSsKLSAvKiBXb3JrZXIgZm9yIHJlc29sdmVkX2R5bmFtaWNfdHlwZS4gICovCi0gCi0gc3RhdGlj IHN0cnVjdCB0eXBlICoKLUBAIC0yMTUzLDYgKzIxNzYsMTAgQEAgcmVzb2x2ZV9keW5hbWljX3R5 cGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICp0eXBlLAotIAkgICAgYnJlYWs7Ci0gCSAgfQotIAot KyAgICAgICAgY2FzZSBUWVBFX0NPREVfUFRSOgotKyAJICByZXNvbHZlZF90eXBlID0gcmVzb2x2 ZV9keW5hbWljX3BvaW50ZXIgKHR5cGUsIGFkZHJfc3RhY2spOwotKyAJICBicmVhazsKLSsKLSAJ Y2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0gCSAgcmVzb2x2ZWRfdHlwZSA9IHJlc29sdmVfZHluYW1p Y19hcnJheSAodHlwZSwgYWRkcl9zdGFjayk7Ci0gCSAgYnJlYWs7Ci0tLSAKLTIuNy40Ci0KCmRp ZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTNvZjcucGF0Y2ggYi9nZGItdmxhLWludGVsLTNvZjcu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTU0MDQuLjAwMDAwMDAKLS0t IGEvZ2RiLXZsYS1pbnRlbC0zb2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAg QEAKLUZyb20gZDJmZDVmZWEyYzA2MDUyYzUzZDk5YmZhMjVmZGFlZDljZjVkZDIxNyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIEhlY2tlbCA8YmVybmhhcmQuaGVja2Vs QGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTIgSnVsIDIwMTYgMDg6MTk6MzQgKzAyMDAKLVN1Ympl Y3Q6IFtQQVRDSCAzLzddIFR5cGVwcmludDogUmVzb2x2ZSBhbnkgZHluYW1pYyB0YXJnZXQgdHlw ZSBvZiBhIHBvaW50ZXIuCi0KLUJlZm9yZSBjb250aW51aW5nIHdpdGggbGFuZ3VhZ2Ugc3BlY2lm aWMgdHlwZSBwcmludGluZwotd2UgaGF2ZSB0byByZXNvbHZlIHRoZSB0YXJnZXQgdHlwZSBvZiBh IHBvaW50ZXIKLWFzIHdlIG1pZ2h0IHdhbm5hIHByaW50IG1vcmUgZGV0YWlscyBvZiB0aGUgdGFy Z2V0Ci1saWtlIHRoZSBkaW1lbnNpb24gb2YgYW4gYXJyYXkuIFdlIGhhdmUgdG8gcmVzb2x2ZSBp dCBoZXJlCi1hcyB3ZSBkb24ndCBoYXZlIGFueSBhZGRyZXNzIGluZm9ybWF0aW9uIGxhdGVyIG9u LgotCi0yMDE2LTA3LTA4ICBCZXJuaGFyZCBIZWNrZWwgIDxiZXJuaGFyZC5oZWNrZWxAaW50ZWwu Y29tPgotCi1nZGIvQ2hhbmdlbG9nOgotCSogdHlwZXByaW50LmMgKHdoYXRpc19leHApOiBSZXNv bHZlIGR5bmFtaWMgdGFyZ2V0IHR5cGUKLQkgIG9mIHBvaW50ZXJzLgotCi1nZGIvVGVzdHN1aXRl L0NoYW5nZWxvZzoKLQkqIGdkYi5jcC92bGEtY3h4LmNjOiBBZGRlZCBwb2ludGVyIHRvIGR5bmFt aWMgdHlwZS4KLQkqIGdkYi5jcC92bGEtY3h4LmV4cDogVGVzdCBwb2ludGVyIHRvIGR5bmFtaWMg dHlwZS4KLQotQ2hhbmdlLUlkOiBJZGZmMGQ2ZGQwZWFiMzEyNWI0NWQ0NzBhMTJiNWU2NmIzOTJl NDJjMwotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5jYyAgfCAgOSArKysrKysr KysKLSBnZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cCB8ICA1ICsrKysrCi0gZ2RiL3R5 cGVwcmludC5jICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gMyBm aWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC92bGEtY3h4LmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5jYwot aW5kZXggYTFmZDUxMC4uNWY4ZjhhYiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L3ZsYS1jeHguY2MKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguY2MKLUBAIC0x NSw2ICsxNSwxMCBAQAotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotK2V4 dGVybiAiQyIgewotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSt9Ci0rCi0gc3RydWN0IGNvbnRhaW5l cjsKLSAKLSBzdHJ1Y3QgZWxlbWVudAotQEAgLTQwLDExICs0NCwxNiBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCi0gICB0eXBlZGVmIHR5cGVvZiAodmxhKSAmdmxhcmVmdHlwZWRl ZjsKLSAgIHZsYXJlZnR5cGVkZWYgdmxhcmVmMiAodmxhKTsKLSAgIGNvbnRhaW5lciBjOwotKyAg dHlwZW9mICh2bGEpICpwdHIgPSBOVUxMOwotKwotKyAgLy8gQmVmb3JlIHBvaW50ZXIgYXNzaWdu bWVudAotKyAgcHRyID0gJnZsYTsKLSAKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgejsgKytpKQot ICAgICB2bGFbaV0gPSA1ICsgMiAqIGk7Ci0gCi0gICAvLyB2bGFzX2ZpbGxlZAotICAgdmxhWzBd ID0gMiAqIHZsYVswXTsKLSsKLSAgIHJldHVybiB2bGFbMl07Ci0gfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avdmxh LWN4eC5leHAKLWluZGV4IGY2MjI0ZGMuLmJhYmRmYjcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC92bGEtY3h4LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4 eC5leHAKLUBAIC0yMyw2ICsyMywxMCBAQCBpZiAhW3J1bnRvX21haW5dIHsKLSAgICAgcmV0dXJu IC0xCi0gfQotIAotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCZWZvcmUg cG9pbnRlciBhc3NpZ25tZW50Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQmVmb3Jl IHBvaW50ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHR5cGUgcHRyIiAiaW50IFxcKFxcKlxc KVxcXFt2YXJpYWJsZSBsZW5ndGhcXFxdIiAicHR5cGUgcHRyLCBCZWZvcmUgcG9pbnRlciBhc3Np Z25tZW50IgotKwotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGFzX2Zp bGxlZCJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYXNfZmlsbGVkIgotIAotQEAg LTMzLDMgKzM3LDQgQEAgZ2RiX3Rlc3QgInByaW50IHZsYXJlZiIgIiA9IFxcKGludCBcXCgmXFwp XFxcWzNcXFxdXFwpIEAkaGV4OiBcXHs1LCA3LCA5XFx9IgotICMgYnVnIGJlaW5nIHRlc3RlZCwg aXQncyBiZXR0ZXIgbm90IHRvIGRlcGVuZCBvbiB0aGUgZXhhY3Qgc3BlbGxpbmcuCi0gZ2RiX3Rl c3QgInByaW50IHZsYXJlZjIiICIgPSBcXCguKlxcKSBAJGhleDogXFx7NSwgNywgOVxcfSIKLSBn ZGJfdGVzdCAicHJpbnQgYyIgIiA9IFxce2UgPSBcXHtjID0gQCRoZXhcXH1cXH0iCi0rZ2RiX3Rl c3QgInB0eXBlIHB0ciIgImludCBcXChcXCpcXClcXFxbM1xcXF0iCi1kaWZmIC0tZ2l0IGEvZ2Ri L3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5jCi1pbmRleCBlNzc1MTNlLi5lM2Q4NGM3IDEw MDY0NAotLS0tIGEvZ2RiL3R5cGVwcmludC5jCi0rKysgYi9nZGIvdHlwZXByaW50LmMKLUBAIC00 ODUsNiArNDg1LDI1IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCi0gICAgICAg cHJpbnRmX2ZpbHRlcmVkICgiICovXG4iKTsgICAgCi0gICAgIH0KLSAKLSsgIC8qIFJlc29sdmUg YW55IGR5bmFtaWMgdGFyZ2V0IHR5cGUsIGFzIHdlIG1pZ2h0IHByaW50Ci0rICAgICBhZGRpdGlv bmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0YXJnZXQuCi0rICAgICBGb3IgZXhhbXBsZSwgaW4g Rm9ydHJhbiBhbmQgQyB3ZSBhcmUgcHJpbnRpbmcgdGhlIGRpbWVuc2lvbiBvZiB0aGUKLSsgICAg IGR5bmFtaWMgYXJyYXkgdGhlIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8uICAqLwotKyAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUgotKyAgICAgICYmIGlzX2R5bmFtaWNfdHlw ZSAodHlwZSkgPT0gMSkKLSsgICAgewotKyAgICAgIENPUkVfQUREUiBhZGRyOwotKyAgICAgIGlm IChOVUxMICE9IFRZUEVfREFUQV9MT0NBVElPTiAoVFlQRV9UQVJHRVRfVFlQRSh0eXBlKSkpCi0r CWFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOwotKyAgICAgIGVsc2UKLSsJYWRkciA9IHZhbHVl X2FzX2FkZHJlc3MgKHZhbCk7Ci0rCi0rICAgICAgaWYgKGFkZHIgIT0gMAotKwkgICYmIHR5cGVf bm90X2Fzc29jaWF0ZWQgKHR5cGUpID09IDApCi0rCVRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpID0g cmVzb2x2ZV9keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAotKwkJCQkJCQlO VUxMLCBhZGRyKTsKLSsgICAgfQotKwotICAgTEFfUFJJTlRfVFlQRSAodHlwZSwgIiIsIGdkYl9z dGRvdXQsIHNob3csIDAsICZmbGFncyk7Ci0gICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwotIAot LS0gCi0yLjcuNAotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC00b2Y3LnBhdGNoIGIvZ2Ri LXZsYS1pbnRlbC00b2Y3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmRj YTM1Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtNG9mNy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDUwOCArMCwwIEBACi1Gcm9tIGY2Mzc4MmQyNWViZDU5M2M0YzQ2NjlkNGMzOTRhMjcw NmYxNWU2NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZXJuaGFyZCBIZWNrZWwg PGJlcm5oYXJkLmhlY2tlbEBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEyIEp1bCAyMDE2IDA4OjE5 OjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC83XSBGb3J0cmFuOiBUeXBlcHJpbnQsIGZpeCBk YW5nbGluZyB0eXBlcy4KLQotU2hvdyB0aGUgdHlwZSBvZiBub3QtYWxsb2NhdGVkIGFuZC9vciBu b3QtYXNzb2NpYXRlZCB0eXBlcwotYXMgdGhpcyBpcyBrbm93bi4gIEZvciBhcnJheSB0eXBlcyBh bmQgcG9pbnRlciB0byBhcnJheSB0eXBlcwotd2UgYXJlIGdvaW5nIHRvIHByaW50IHRoZSBudW1i ZXIgb2YgcmFua3MuCi0KLTIwMTYtMDYtMzAgIEJlcm5oYXJkIEhlY2tlbCAgPGJlcm5oYXJkLmhl Y2tlbEBpbnRlbC5jb20+Ci0KLWdkYi9DaGFuZ2VMb2c6Ci0JKiBmLXR5cGVwcmludC5jIChmX3By aW50X3R5cGUpOiBEb24ndCBieXBhc3MgZGFuZ2xpbmcgdHlwZXMuCi0JICAoZl90eXBlX3ByaW50 X3ZhcnNwZWNfc3VmZml4KTogQWRkIHByaW50X3JhbmsgcGFyYW1ldGVyLgotCSAgKGZfdHlwZV9w cmludF92YXJzcGVjX3N1ZmZpeCk6IFByaW50IHJhbmtzIG9mIGFycmF5IHR5cGVzCi0JICBpbiBj YXNlIHRoZXkgZGFuZ2xpbmcuCi0JICAoZl90eXBlX3ByaW50X2Jhc2UpOiBBZGQgcHJpbnRfcmFu ayBwYXJhbWV0ZXIuCi0KLWdkYi9UZXN0c3VpdGUvQ2hhbmdlTG9nOgotCSogZ2RiLmZvcnRyYW4v cG9pbnRlcnMuZjkwOiBOZXcuCi0JKiBnZGIuZm9ydHJhbi9wcmludF90eXBlLmV4cDogTmV3Lgot CSogZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4cDogQWRhcHQgZXhwZWN0ZWQgcmVzdWx0cy4KLQkq IGdkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cDogTGlrZXdpc2UuCi0JKiBnZGIuZm9ydHJhbi92bGEt dmFsdWUuZXhwOiBMaWtld2lzZS4KLQkqIGdkYi5taS9taS12bGEtZm9ydHJhbi5leHA6IExpa2V3 aXNlLgotCi1DaGFuZ2UtSWQ6IEliNTVmMjhiNDA5MmNmODhlMzQ5MTg0NDlhMmViYjZlNWRhYWZl NTEyCi0tLS0KLSBnZGIvZi10eXBlcHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDk1 ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9wb2ludGVycy5mOTAgICB8ICA4MCArKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludF90eXBlLmV4cCB8IDEwMCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhw ICB8ICAxMiArKy0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAgICB8 ICAgNyArKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAgIHwgICA0 ICstCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwICB8ICAgOSArLS0K LSA3IGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKLSBj cmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5mOTAK LSBjcmVhdGUgbW9kZSAxMDA3NTUgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludF90eXBl LmV4cAotCi1JbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL2YtdHlwZXByaW50LmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4xMS41MC4yMDE2MDYzMC5vcmlnL2dkYi9mLXR5cGVwcmludC5j CTIwMTYtMDctMTYgMTA6NTQ6NDguNzQ5MDk5MTUwICswMjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAx NjA2MzAvZ2RiL2YtdHlwZXByaW50LmMJMjAxNi0wNy0xNiAxMDo1NTo1OS43NjM2NjczNTUgKzAy MDAKLUBAIC0zNyw3ICszNyw3IEBACi0gI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQgZl90eXBlX3By aW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQs Ci0tCQkJCQkgaW50LCBpbnQsIGludCk7Ci0rCQkJCQkgaW50LCBpbnQsIGludCwgaW50KTsKLSAK LSB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHVpX2ZpbGUgKiwKLSAJCQkJICBpbnQsIGludCk7Ci1AQCAtNTQsMTggKzU0LDYgQEAKLSAgIGVu dW0gdHlwZV9jb2RlIGNvZGU7Ci0gICBpbnQgZGVtYW5nbGVkX2FyZ3M7Ci0gCi0tICBpZiAodHlw ZV9ub3RfYXNzb2NpYXRlZCAodHlwZSkpCi0tICAgIHsKLS0gICAgICB2YWxfcHJpbnRfbm90X2Fz c29jaWF0ZWQgKHN0cmVhbSk7Ci0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tCi0tICBpZiAodHlw ZV9ub3RfYWxsb2NhdGVkICh0eXBlKSkKLS0gICAgewotLSAgICAgIHZhbF9wcmludF9ub3RfYWxs b2NhdGVkIChzdHJlYW0pOwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLQotICAgZl90eXBlX3By aW50X2Jhc2UgKHR5cGUsIHN0cmVhbSwgc2hvdywgbGV2ZWwpOwotICAgY29kZSA9IFRZUEVfQ09E RSAodHlwZSk7Ci0gICBpZiAoKHZhcnN0cmluZyAhPSBOVUxMICYmICp2YXJzdHJpbmcgIT0gJ1ww JykKLUBAIC04Nyw3ICs3NSw3IEBACi0gICAgICAgICAgc28gZG9uJ3QgcHJpbnQgYW4gYWRkaXRp b25hbCBwYWlyIG9mICgpJ3MuICAqLwotIAotICAgICAgIGRlbWFuZ2xlZF9hcmdzID0gdmFyc3Ry aW5nW3N0cmxlbiAodmFyc3RyaW5nKSAtIDFdID09ICcpJzsgCi0tICAgICAgZl90eXBlX3ByaW50 X3ZhcnNwZWNfc3VmZml4ICh0eXBlLCBzdHJlYW0sIHNob3csIDAsIGRlbWFuZ2xlZF9hcmdzLCAw KTsKLSsgICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHR5cGUsIHN0cmVhbSwgc2hv dywgMCwgZGVtYW5nbGVkX2FyZ3MsIDAsIDApOwotICAgIH0KLSB9Ci0gCi1AQCAtMTU3LDcgKzE0 NSw3IEBACi0gc3RhdGljIHZvaWQKLSBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAkJCSAgICAgaW50IHNob3cs IGludCBwYXNzZWRfYV9wdHIsIGludCBkZW1hbmdsZWRfYXJncywKLS0JCQkgICAgIGludCBhcnJh eXByaW50X3JlY3Vyc2VfbGV2ZWwpCi0rCQkJICAgICBpbnQgYXJyYXlwcmludF9yZWN1cnNlX2xl dmVsLCBpbnQgcHJpbnRfcmFua19vbmx5KQotIHsKLSAgIGludCB1cHBlcl9ib3VuZCwgbG93ZXJf Ym91bmQ7Ci0gCi1AQCAtMTgxLDM0ICsxNjksNTAgQEAKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiKCIpOwotIAotICAgICAgIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkICh0eXBlKSkKLS0g ICAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKLSsJcHJpbnRfcmFua19v bmx5ID0gMTsKLSAgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQgKHR5cGUpKQotLSAg ICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7Ci0rCXByaW50X3Jhbmtfb25s eSA9IDE7Ci0rICAgICAgZWxzZSBpZiAoKFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKQotKwkJ JiYgUFJPUF9DT05TVCAhPSBUWVBFX0RZTl9QUk9QX0tJTkQgKFRZUEVfQVNTT0NJQVRFRF9QUk9Q ICh0eXBlKSkpCi0rCSAgICAgIHx8IChUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKQotKwkJJiYg UFJPUF9DT05TVCAhPSBUWVBFX0RZTl9QUk9QX0tJTkQgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5 cGUpKSkKLSsJICAgICAgfHwgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkKLSsJCSAgJiYgUFJP UF9DT05TVCAhPSBUWVBFX0RZTl9QUk9QX0tJTkQgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkp KSkKLSsJLyogVGhpcyBjYXNlIGV4aXN0IHdoZW4gd2UgcHR5cGUgYSB0eXBlbmFtZSB3aGljaCBo YXMgdGhlCi0rCSAgIGR5bmFtaWMgcHJvcGVydGllcyBidXQgY2Fubm90IGJlIHJlc29sdmVkIGFz IHRoZXJlIGlzCi0rCSAgIG5vIG9iamVjdC4gICovCi0rCXByaW50X3Jhbmtfb25seSA9IDE7Ci0r Ci0rICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpID09IFRZUEVf Q09ERV9BUlJBWSkKLSsJZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSwgc3RyZWFtLCAwLAotKwkJCQkgICAgIDAsIDAsIGFycmF5cHJpbnRfcmVjdXJz ZV9sZXZlbCwKLSsJCQkJICAgICBwcmludF9yYW5rX29ubHkpOwotKwotKyAgICAgIGlmIChwcmlu dF9yYW5rX29ubHkgPT0gMSkKLSsJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiOiIpOwotICAg ICAgIGVsc2UKLS0gICAgICAgIHsKLS0gICAgICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkpID09IFRZUEVfQ09ERV9BUlJBWSkKLS0gICAgICAgICAgICBmX3R5cGVf cHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGFycmF5cHJp bnRfcmVjdXJzZV9sZXZlbCk7Ci0tCi0tICAgICAgICAgIGxvd2VyX2JvdW5kID0gZjc3X2dldF9s b3dlcmJvdW5kICh0eXBlKTsKLS0gICAgICAgICAgaWYgKGxvd2VyX2JvdW5kICE9IDEpCS8qIE5v dCB0aGUgZGVmYXVsdC4gICovCi0tICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiJWQ6IiwgbG93ZXJfYm91bmQpOwotLQotLSAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCwg aWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCi0tICAgICAgICAgICAgIHByaW50 IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCi0tCi0t ICAgICAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkp Ci0tICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOwotLSAgICAgICAg ICBlbHNlCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgdXBwZXJfYm91bmQgPSBmNzdf Z2V0X3VwcGVyYm91bmQgKHR5cGUpOwotLSAgICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiJWQiLCB1cHBlcl9ib3VuZCk7Ci0tICAgICAgICAgICAgfQotLQotLSAgICAgICAg ICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX0FS UkFZKQotLSAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsKLS0gICAgICAgIH0K LSsJewotKwkgIGxvd2VyX2JvdW5kID0gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKLSsJICBp ZiAobG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAgKi8KLSsJICAgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkOiIsIGxvd2VyX2JvdW5kKTsKLSsKLSsJICAvKiBNYWtl IHN1cmUgdGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCi0rCSAgICAg cHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJpbnQgdGhlIHVwcGVyYm91bmQgYXMgJyonLiAgKi8K LSsKLSsJICBpZiAoVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQot KwkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOwotKwkgIGVsc2UKLSsJICAgIHsK LSsJICAgICAgdXBwZXJfYm91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOwotKwkgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVwcGVyX2JvdW5kKTsKLSsJICAgIH0K LSsJfQotKwotKyAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSAh PSBUWVBFX0NPREVfQVJSQVkpCi0rCWZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwKLSsJCQkJICAgICAwLCAwLCBhcnJheXByaW50 X3JlY3Vyc2VfbGV2ZWwsCi0rCQkJCSAgICAgcHJpbnRfcmFua19vbmx5KTsKLSsKLSAgICAgICBp ZiAoYXJyYXlwcmludF9yZWN1cnNlX2xldmVsID09IDEpCi0gCWZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIikiKTsKLSAgICAgICBlbHNlCi1AQCAtMjE5LDEzICsyMjMsMTQgQEAKLSAgICAgY2Fz ZSBUWVBFX0NPREVfUFRSOgotICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6Ci0gICAgICAgZl90eXBl X3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAw LCAxLCAwLAotLQkJCQkgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOwotKwkJCQkgICBhcnJh eXByaW50X3JlY3Vyc2VfbGV2ZWwsIDApOwotICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIikiKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBUWVBFX0NPREVfRlVOQzoKLSAg ICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp LCBzdHJlYW0sIDAsCi0tCQkJCSAgIHBhc3NlZF9hX3B0ciwgMCwgYXJyYXlwcmludF9yZWN1cnNl X2xldmVsKTsKLSsJCQkJICAgcGFzc2VkX2FfcHRyLCAwLCBhcnJheXByaW50X3JlY3Vyc2VfbGV2 ZWwsCi0rCQkJCSAgIDApOwotICAgICAgIGlmIChwYXNzZWRfYV9wdHIpCi0gCWZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIikiKTsKLSAKLUBAIC0zNzYsNyArMzgxLDcgQEAKLSAJICAgICAgZnB1 dHNfZmlsdGVyZWQgKCIgOjogIiwgc3RyZWFtKTsKLSAJICAgICAgZnB1dHNfZmlsdGVyZWQgKFRZ UEVfRklFTERfTkFNRSAodHlwZSwgaW5kZXgpLCBzdHJlYW0pOwotIAkgICAgICBmX3R5cGVfcHJp bnRfdmFyc3BlY19zdWZmaXggKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaW5kZXgpLAotLQkJCQkJ ICAgc3RyZWFtLCBzaG93IC0gMSwgMCwgMCwgMCk7Ci0rCQkJCQkgICBzdHJlYW0sIHNob3cgLSAx LCAwLCAwLCAwLCAwKTsKLSAJICAgICAgZnB1dHNfZmlsdGVyZWQgKCJcbiIsIHN0cmVhbSk7Ci0g CSAgICB9Ci0gCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsLCBzdHJlYW0sICJFbmQgVHlwZSAi KTsKLUluZGV4OiBnZGItNy4xMS41MC4yMDE2MDYzMC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3BvaW50ZXJzLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCTIwMTYtMDctMTYgMTA6NTU6NDIuMDc5NTI1ODYw ICswMjAwCi1AQCAtMCwwICsxLDgwIEBACi0rISBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsh IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSsh IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot K3Byb2dyYW0gcG9pbnRlcnMKLSsKLSsgIHR5cGUgOjogdHdvCi0rICAgIGludGVnZXIsIGFsbG9j YXRhYmxlIDo6IGl2bGExICg6KQotKyAgICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBpdmxhMiAo OiwgOikKLSsgIGVuZCB0eXBlIHR3bwotKwotKyAgbG9naWNhbCwgdGFyZ2V0IDo6IGxvZ3YKLSsg IGNvbXBsZXgsIHRhcmdldCA6OiBjb212Ci0rICBjaGFyYWN0ZXIsIHRhcmdldCA6OiBjaGFydgot KyAgY2hhcmFjdGVyIChsZW49MyksIHRhcmdldCA6OiBjaGFyYQotKyAgaW50ZWdlciwgdGFyZ2V0 IDo6IGludHYKLSsgIGludGVnZXIsIHRhcmdldCwgZGltZW5zaW9uICgxMCwyKSA6OiBpbnRhCi0r ICByZWFsLCB0YXJnZXQgICAgOjogcmVhbHYKLSsgIHR5cGUodHdvKSwgdGFyZ2V0ICA6OiB0d292 Ci0rCi0rICBsb2dpY2FsLCBwb2ludGVyIDo6IGxvZ3AKLSsgIGNvbXBsZXgsIHBvaW50ZXIgOjog Y29tcAotKyAgY2hhcmFjdGVyLCBwb2ludGVyOjogY2hhcnAKLSsgIGNoYXJhY3RlciAobGVuPTMp LCBwb2ludGVyOjogY2hhcmFwCi0rICBpbnRlZ2VyLCBwb2ludGVyIDo6IGludHAKLSsgIGludGVn ZXIsIHBvaW50ZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBpbnRhcAotKyAgcmVhbCwgcG9pbnRlciA6 OiByZWFscAotKyAgdHlwZSh0d28pLCBwb2ludGVyIDo6IHR3b3AKLSsKLSsgIG51bGxpZnkgKGxv Z3ApCi0rICBudWxsaWZ5IChjb21wKQotKyAgbnVsbGlmeSAoY2hhcnApCi0rICBudWxsaWZ5IChj aGFyYXApCi0rICBudWxsaWZ5IChpbnRwKQotKyAgbnVsbGlmeSAoaW50YXApCi0rICBudWxsaWZ5 IChyZWFscCkKLSsgIG51bGxpZnkgKHR3b3ApCi0rCi0rICBsb2dwID0+IGxvZ3YgICAgISBCZWZv cmUgcG9pbnRlciBhc3NpZ25tZW50Ci0rICBjb21wID0+IGNvbXYKLSsgIGNoYXJwID0+IGNoYXJ2 Ci0rICBjaGFyYXAgPT4gY2hhcmEKLSsgIGludHAgPT4gaW50dgotKyAgaW50YXAgPT4gaW50YQot KyAgcmVhbHAgPT4gcmVhbHYKLSsgIHR3b3AgPT4gdHdvdgotKwotKyAgbG9ndiA9IGFzc29jaWF0 ZWQobG9ncCkgICAgICEgQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQKLSsgIGNvbXYgPSBjbXBseCgx LDIpCi0rICBjaGFydiA9ICJhIgotKyAgY2hhcmEgPSAiYWJjIgotKyAgaW50diA9IDEwCi0rICBp bnRhKDosOikgPSAxCi0rICBpbnRhKDMsMSkgPSAzCi0rICByZWFsdiA9IDMuMTQKLSsKLSsgIGFs bG9jYXRlICh0d292JWl2bGExKDMpKQotKyAgYWxsb2NhdGUgKHR3b3YlaXZsYTIoMiwyKSkKLSsg IHR3b3YlaXZsYTEoMSkgPSAxMQotKyAgdHdvdiVpdmxhMSgyKSA9IDEyCi0rICB0d292JWl2bGEx KDMpID0gMTMKLSsgIHR3b3YlaXZsYTIoMSwxKSA9IDIxMQotKyAgdHdvdiVpdmxhMigyLDEpID0g MjIxCi0rICB0d292JWl2bGEyKDEsMikgPSAyMTIKLSsgIHR3b3YlaXZsYTIoMiwyKSA9IDIyMgot KwotKyAgaW50diA9IGludHYgKyAxICEgQWZ0ZXIgdmFsdWUgYXNzaWdubWVudAotKwotK2VuZCBw cm9ncmFtIHBvaW50ZXJzCi1JbmRleDogZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9wcmludF90eXBlLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjExLjUwLjIwMTYw NjMwL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcHJpbnRfdHlwZS5leHAJMjAxNi0wNy0xNiAx MDo1NTo0Mi4wNzk1MjU4NjAgKzAyMDAKLUBAIC0wLDAgKzEsMTAwIEBACi0rIyBDb3B5cmlnaHQg MjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInBvaW50ZXJzLmY5MCIKLStsb2Fk X2xpYiBmb3J0cmFuLmV4cAotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0Zmls ZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0g fSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAg dW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot KyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBj YW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4KLStzZXQgbG9naWNhbCBbZm9ydHJhbl9sb2dpY2Fs NF0KLStzZXQgcmVhbCBbZm9ydHJhbl9yZWFsNF0KLStzZXQgaW50IFtmb3J0cmFuX2ludDRdCi0r c2V0IGNvbXBsZXggW2ZvcnRyYW5fY29tcGxleDRdCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgIkJlZm9yZSBwb2ludGVyIGFzc2lnbm1lbnQiXQotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50IgotK2dkYl90ZXN0ICJw dHlwZSBsb2dwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGxvZ2ljYWwgXFwpIiAicHR5cGUgbG9n cCwgbm90IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIGNvbXAiICJ0eXBlID0gUFRSIFRP IC0+IFxcKCAkY29tcGxleCBcXCkiICJwdHlwZSBjb21wLCBub3QgYXNzb2NpYXRlZCIKLStnZGJf dGVzdCAicHR5cGUgY2hhcnAiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoxIFxc KSIgInB0eXBlIGNoYXJwLCBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgY2hhcmFw IiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiICJwdHlwZSBjaGFyYXAs IG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSBpbnRwIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggJGludCBcXCkiICJwdHlwZSBpbnRwLCBub3QgYXNzb2NpYXRlZCIKLStzZXQgdGVzdCAi cHR5cGUgaW50YXAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0X211bHRpcGxlICJwdHlwZSBp bnRhcCIgJHRlc3QgewotKyAgICAtcmUgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRpbnQgXFwoOiw6 XFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgIHBhc3MgJHRlc3QKLSsgICAgfQot KyAgICAtcmUgInR5cGUgPSAkaW50IFxcKDosOlxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAg ICAgICBwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rZ2RiX3Rlc3QgInB0eXBlIHJlYWxwIiAidHlw ZSA9IFBUUiBUTyAtPiBcXCggJHJlYWwgXFwpIiAicHR5cGUgcmVhbHAsIG5vdCBhc3NvY2lhdGVk IgotK2dkYl90ZXN0ICJwdHlwZSB0d29wIiBcCi0rICAgIFttdWx0aV9saW5lICJ0eXBlID0gUFRS IFRPIC0+IFxcKCBUeXBlIHR3byIgXAotKyAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZs YTFcXCg6XFwpIiBcCi0rICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxhMlxcKDosOlxc KSIgXAotKyAgICAgICAgICAgICAgICAiRW5kIFR5cGUgdHdvIFxcKSJdIFwKLSsgICAgInB0eXBl IHR3b3AsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB0d28iIFwKLSsgICAgW211 bHRpX2xpbmUgInR5cGUgPSBUeXBlIHR3byIgXAotKyAgICAgICAgICAgICAgICAiICAgICRpbnQg OjogaXZsYTFcXCg6XFwpIiBcCi0rICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxhMlxc KDosOlxcKSIgXAotKyAgICAgICAgICAgICAgICAiRW5kIFR5cGUgdHdvIl0KLSsKLSsKLStnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCZWZvcmUgdmFsdWUgYXNzaWdubWVudCIK LStnZGJfdGVzdCAicHR5cGUgdHdvcCIgXAotKyAgICBbbXVsdGlfbGluZSAidHlwZSA9IFBUUiBU TyAtPiBcXCggVHlwZSB0d28iIFwKLSsgICAgICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2bGEx XFwoOlxcKSIgXAotKyAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYTJcXCg6LDpcXCki IFwKLSsgICAgICAgICAgICAgICAgIkVuZCBUeXBlIHR3byBcXCkiXQotKwotKwotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJBZnRlciB2YWx1ZSBhc3NpZ25tZW50Il0KLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCIKLStnZGJf dGVzdCAicHR5cGUgbG9ndiIgInR5cGUgPSAkbG9naWNhbCIKLStnZGJfdGVzdCAicHR5cGUgY29t diIgInR5cGUgPSAkY29tcGxleCIKLStnZGJfdGVzdCAicHR5cGUgY2hhcnYiICJ0eXBlID0gY2hh cmFjdGVyXFwqMSIKLStnZGJfdGVzdCAicHR5cGUgY2hhcmEiICJ0eXBlID0gY2hhcmFjdGVyXFwq MyIKLStnZGJfdGVzdCAicHR5cGUgaW50diIgInR5cGUgPSAkaW50IgotK2dkYl90ZXN0ICJwdHlw ZSBpbnRhIiAidHlwZSA9ICRpbnQgXFwoMTAsMlxcKSIKLStnZGJfdGVzdCAicHR5cGUgcmVhbHYi ICJ0eXBlID0gJHJlYWwiCi0rCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGxvZ3AiICJ0eXBlID0gUFRS IFRPIC0+IFxcKCAkbG9naWNhbCBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGNvbXAiICJ0eXBlID0g UFRSIFRPIC0+IFxcKCAkY29tcGxleCBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGNoYXJwIiAidHlw ZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGNo YXJhcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpIgotK2dkYl90ZXN0 ICJwdHlwZSBpbnRwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGludCBcXCkiCi0rc2V0IHRlc3Qg InB0eXBlIGludGFwIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJl ICJ0eXBlID0gJGludCBcXCgxMCwyXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgIHBh c3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRpbnQgXFwo MTAsMlxcKVxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICBwYXNzICR0ZXN0Ci0rICAg IH0KLSt9Ci0rZ2RiX3Rlc3QgInB0eXBlIHJlYWxwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJHJl YWwgXFwpIgotSW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXB0eXBlLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjExLjUwLjIwMTYwNjMw Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwCTIwMTYtMDctMTYg MTA6NTQ6NDguNzQ5MDk5MTUwICswMjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwCTIwMTYtMDctMTYgMTA6NTU6NDIuMDc5 NTI1ODYwICswMjAwCi1AQCAtMzIsOSArMzIsOSBAQAotICMgQ2hlY2sgdGhlIHB0eXBlIG9mIHZh cmlvdXMgVkxBIHN0YXRlcyBhbmQgcG9pbnRlciB0byBWTEEncy4KLSBnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KLSBnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAidmxhMS1pbml0IgotLWdkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IDxub3QgYWxs b2NhdGVkPiIgInB0eXBlIHZsYTEgbm90IGluaXRpYWxpemVkIgotLWdkYl90ZXN0ICJwdHlwZSB2 bGEyIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTIgbm90IGluaXRpYWxpemVk IgotLWdkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9IDxub3QgYXNzb2NpYXRlZD4iICJwdHlw ZSBwdmxhIG5vdCBpbml0aWFsaXplZCIKLStnZGJfdGVzdCAicHR5cGUgdmxhMSIgInR5cGUgPSAk cmVhbCBcXCg6LDosOlxcKSIgInB0eXBlIHZsYTEgbm90IGluaXRpYWxpemVkIgotK2dkYl90ZXN0 ICJwdHlwZSB2bGEyIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAicHR5cGUgdmxhMiBub3Qg aW5pdGlhbGl6ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gJHJlYWwgXFwoOiw6 LDpcXCkiICJwdHlwZSBwdmxhIG5vdCBpbml0aWFsaXplZCIKLSBnZGJfdGVzdCAicHR5cGUgdmxh MSgzLCA2LCA5KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3QgYWxsb2Nh dGVkXFxcKSIgXAotICAgInB0eXBlIHZsYTEoMywgNiwgOSkgbm90IGluaXRpYWxpemVkIgotIGdk Yl90ZXN0ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkiIFwKLUBAIC04MSwyMCArODEsMjAgQEAKLSAK LSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0ZWQi XQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKLS1nZGJf dGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5cGUgcHZsYSBk ZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gJHJlYWwgXFwoOiw6 LDpcXCkiICJwdHlwZSBwdmxhIGRlYXNzb2NpYXRlZCIKLSBnZGJfdGVzdCAicHR5cGUgcHZsYSg1 LCA0NSwgMjApIiBcCi0gICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBh c3NvY2lhdGVkXFxcKSIgXAotICAgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSBub3QgYXNzb2NpYXRl ZCIKLSAKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1kZWFsbG9j YXRlZCJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQiCi0t Z2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxh MSBub3QgYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9ICRyZWFsIFxc KDosOiw6XFwpIiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgotIGdkYl90ZXN0ICJwdHlwZSB2 bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBhbGxv Y2F0ZWRcXFwpIiBcCi0gICAicHR5cGUgdmxhMSgzLCA2LCA5KSBub3QgYWxsb2NhdGVkIgotIAot IGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWRlYWxsb2NhdGVkIl0K LSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1kZWFsbG9jYXRlZCIKLS1nZGJfdGVz dCAicHR5cGUgdmxhMiIgInR5cGUgPSA8bm90IGFsbG9jYXRlZD4iICJwdHlwZSB2bGEyIG5vdCBh bGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gJHJlYWwgXFwoOiw6LDpc XCkiICJwdHlwZSB2bGEyIG5vdCBhbGxvY2F0ZWQiCi0gZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwg NDUsIDIwKSIgXAotICAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3QgYWxs b2NhdGVkXFxcKSIgXAotICAgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSBub3QgYWxsb2NhdGVkIgot SW5kZXg6IGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXR5cGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMTEuNTAuMjAxNjA2MzAub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAkyMDE2LTA3LTE2IDEwOjU0OjQ4Ljc0 OTA5OTE1MCArMDIwMAotKysrIGdkYi03LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXR5cGUuZXhwCTIwMTYtMDctMTYgMTA6NTU6NDIuMDgwNTI1ODY4ICswMjAw Ci1AQCAtMTMyLDcgKzEzMiwxMCBAQAotICAgICAgICAgICAgICAgICAgICAgICJFbmQgVHlwZSBv bmUiIF0KLSAKLSAjIENoZWNrIGFsbG9jYXRpb24gc3RhdHVzIG9mIGR5bmFtaWMgYXJyYXkgYW5k IGl0J3MgZHluYW1pYyBtZW1iZXJzCi0tZ2RiX3Rlc3QgInB0eXBlIGZpdmVkeW5hcnIiICJ0eXBl ID0gPG5vdCBhbGxvY2F0ZWQ+IgotK2dkYl90ZXN0ICJwdHlwZSBmaXZlZHluYXJyIiBcCi0rICAg ICAgICAgW211bHRpX2xpbmUgInR5cGUgPSBUeXBlIGZpdmUiIFwKLSsgICAgICAgICAgICAgICAg ICAgICAiICAgIFR5cGUgb25lIDo6IHRvbmUiIFwKLSsgICAgICAgICAgICAgICAgICAgICAiRW5k IFR5cGUgZml2ZSBcXCg6XFwpIiBdCi0gZ2RiX3Rlc3QgIm5leHQiICIiCi0gZ2RiX3Rlc3QgInB0 eXBlIGZpdmVkeW5hcnIoMikiIFwKLSAgICAgICAgICBbbXVsdGlfbGluZSAidHlwZSA9IFR5cGUg Zml2ZSIgXAotQEAgLTE0MSw3ICsxNDQsNyBAQAotICAgICAgICAgICJwdHlwZSBmaXZlZHluYXJy KDIpLCB0b25lIGlzIG5vdCBhbGxvY2F0ZWQiCi0gZ2RiX3Rlc3QgInB0eXBlIGZpdmVkeW5hcnIo MikldG9uZSIgXAotICAgICAgICAgIFttdWx0aV9saW5lICJ0eXBlID0gVHlwZSBvbmUiIFwKLS0g ICAgICAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYVxcKDxub3QgYWxsb2NhdGVkPlxc KSIgXAotKyAgICAgICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxhXFwoOiw6LDpcXCki IFwKLSAgICAgICAgICAgICAgICAgICAgICAiRW5kIFR5cGUgb25lIiBdIFwKLSAgICAgICAgICAi cHR5cGUgZml2ZWR5bmFycigyKSV0b25lLCBub3QgYWxsb2NhdGVkIgotIAotSW5kZXg6IGdkYi03 LjExLjUwLjIwMTYwNjMwL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLmV4cAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjExLjUwLjIwMTYwNjMwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCTIwMTYtMDctMTYgMTA6NTQ6NDguNzQ5MDk5MTUwICsw MjAwCi0rKysgZ2RiLTcuMTEuNTAuMjAxNjA2MzAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtdmFsdWUuZXhwCTIwMTYtMDctMTYgMTA6NTU6NDIuMDgwNTI1ODY4ICswMjAwCi1AQCAtMzQs NyArMzQsNyBAQAotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCi0gZ2Ri X3Rlc3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4iICJwcmludCBub24tYWxsb2Nh dGVkIHZsYTEiCi0gZ2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCi0tICAiID0gXFxcKFBUUiBUTyAt PiBcXFwoICRyZWFsIFxcXCg8bm90IGFsbG9jYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAotKyAg IiA9IFxcXChQVFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwoOiw6LDpcXFwpXFxcKVxcXCkgJGhleCIg XAotICAgInByaW50IG5vbi1hbGxvY2F0ZWQgJnZsYTEiCi0gZ2RiX3Rlc3QgInByaW50IHZsYTEo MSwxLDEpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRc XFwpIiBcCi0gICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxhMSAoMSkiCi1AQCAt NzUsNyArNzUsNyBAQAotICMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gdW5kZWZpbmVkIHBvaW50 ZXIgdG8gVkxBIChkYW5nbGluZykKLSBnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IDxub3QgYXNz b2NpYXRlZD4iICJwcmludCB1bmRlZmluZWQgcHZsYSIKLSBnZGJfdGVzdCAicHJpbnQgJnB2bGEi IFwKLS0gICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDxub3QgYXNzb2NpYXRlZD5c XFwpXFxcKVxcXCkgJGhleCIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwo Oiw6LDpcXFwpXFxcKVxcXCkgJGhleCIgXAotICAgInByaW50IG5vbi1hc3NvY2lhdGVkICZwdmxh IgotIGdkYl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBcXFwodmVjdG9yIG5vdCBhc3NvY2lhdGVkXFxcKSIgXAotICAgInByaW50IHVuZGVmaW5lZCBw dmxhKDEsMyw4KSIKLUluZGV4OiBnZGItNy4xMS41MC4yMDE2MDYzMC9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taS12bGEtZm9ydHJhbi5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xMS41MC4yMDE2 MDYzMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAkyMDE2LTA3 LTE2IDEwOjU0OjQ4Ljc0OTA5OTE1MCArMDIwMAotKysrIGdkYi03LjExLjUwLjIwMTYwNjMwL2dk Yi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAkyMDE2LTA3LTE2IDEwOjU1OjQy LjA4MDUyNTg2OCArMDIwMAotQEAgLTE3LDYgKzE3LDcgQEAKLSAjIEFycmF5IChWTEEpLgotIAot IGxvYWRfbGliIG1pLXN1cHBvcnQuZXhwCi0rbG9hZF9saWIgZm9ydHJhbi5leHAKLSBzZXQgTUlG TEFHUyAiLWk9bWkiCi0gbG9hZF9saWIgImZvcnRyYW4uZXhwIgotIAotQEAgLTUwLDEwICs1MSwx MCBAQAotIG1pX2dkYl90ZXN0ICI1MDAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwK LSAgICI1MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiICJldmFsdWF0ZSBub3Qg YWxsb2NhdGVkIHZsYSIKLSAKLS1taV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9ub3RfYWxs b2NhdGVkIHZsYTEgIjxub3QgYWxsb2NhdGVkPiIgXAotK21pX2NyZWF0ZV92YXJvYmpfY2hlY2tl ZCB2bGExX25vdF9hbGxvY2F0ZWQgdmxhMSAiJHJlYWwgXFwoOlxcKSIgXAotICAgImNyZWF0ZSBs b2NhbCB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0ZWQiCi0gbWlfZ2RiX3Rlc3QgIjUwMS12YXIt aW5mby10eXBlIHZsYTFfbm90X2FsbG9jYXRlZCIgXAotLSAgIjUwMVxcXmRvbmUsdHlwZT1cIjxu b3QgYWxsb2NhdGVkPlwiIiBcCi0rICAiNTAxXFxeZG9uZSx0eXBlPVwiJHJlYWwgXFwoOlxcKVwi IiBcCi0gICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKLSBtaV9nZGJf dGVzdCAiNTAyLXZhci1zaG93LWZvcm1hdCB2bGExX25vdF9hbGxvY2F0ZWQiIFwKLSAgICI1MDJc XF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAotQEAgLTE0MCwxMCArMTQxLDEwIEBACi0gICAg IC1yZSAiNTgwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYXNzb2NpYXRlZD5cIi4qJHttaV9nZGJfcHJv bXB0fSQiIHsKLSAJcGFzcyAkdGVzdAotIAotLQltaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZs YTJfbm90X2Fzc29jaWF0ZWQgcHZsYTIgIjxub3QgYXNzb2NpYXRlZD4iIFwKLSsJbWlfY3JlYXRl X3Zhcm9ial9jaGVja2VkIHB2bGEyX25vdF9hc3NvY2lhdGVkIHB2bGEyICIkcmVhbCBcXCg6LDpc XCkiIFwKLSAJICAgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQi Ci0gCW1pX2dkYl90ZXN0ICI1ODEtdmFyLWluZm8tdHlwZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIg XAotLQkgICAgIjU4MVxcXmRvbmUsdHlwZT1cIjxub3QgYXNzb2NpYXRlZD5cIiIgXAotKwkgICAg IjU4MVxcXmRvbmUsdHlwZT1cIiRyZWFsIFxcKDosOlxcKVwiIiBcCi0gCSAgICAiaW5mbyB0eXBl IHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgotIAltaV9nZGJfdGVzdCAiNTgyLXZhci1z aG93LWZvcm1hdCBwdmxhMl9ub3RfYXNzb2NpYXRlZCIgXAotIAkgICAgIjU4MlxcXmRvbmUsZm9y bWF0PVwibmF0dXJhbFwiIiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC01b2Y3LnBhdGNo IGIvZ2RiLXZsYS1pbnRlbC01b2Y3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA2OGNmYzU3Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtNW9mNy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDM0NSArMCwwIEBACi1Gcm9tIGI2ZTY2OGNjZDM1NmVhM2U3NWQzMGYyMDMx NDMzNGIxMjAzYzIyZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZXJuaGFyZCBI ZWNrZWwgPGJlcm5oYXJkLmhlY2tlbEBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEyIEp1bCAyMDE2 IDA4OjE5OjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNS83XSBSZXNvbHZlIGR5bmFtaWMgdGFy Z2V0IHR5cGVzIG9mIHBvaW50ZXJzLgotCi1XaGVuIGRlcmVmZXJlbmNpbmcgcG9pbnRlcnMgdG8g ZHluYW1pYyB0YXJnZXQgdHlwZXMsCi1yZXNvbHZlIHRoZSB0YXJnZXQgdHlwZS4KLQotMjAxNi0w Ni0zMCAgQmVybmhhcmQgSGVja2VsICA8YmVybmhhcmQuaGVja2VsQGludGVsLmNvbT4KLQotZ2Ri L0NoYW5nZWxvZzoKLQkqIE5FV1M6IEFkZGVkIGVudHJ5LgotCSogYy12YWxwcmludC5jIChjX3By aW50X3ZhbCk6IFJlc29sdmUgZHluYW1pYyB0YXJnZXQgdHlwZXMuCi0JKiB2YWxvcHMuYyAodmFs dWVfaW5kKTogUmVzb2x2ZSBkeW5hbWljIHRhcmdldCB0eXBlcy4KLQkqIHZhbHByaW50LmMgKGNo ZWNrX3ByaW50YWJsZSk6IERvbid0IHNob3J0Y3V0IG5vdCBhc3NvY2lhdGVkCi0JICBwb2ludGVy cy4KLQotZ2RiL1Rlc3RzdWl0ZS9DaGFuZ2Vsb2c6Ci0JKiBwb2ludGVycy5mOTA6IEFkZGVkIHBv aW50ZXIgdG8gZHluYW1pYyB0eXBlcy4KLQkqIGdkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cDogTmV3 LgotCi1DaGFuZ2UtSWQ6IEk5OThkNGRhNGE1YmE0ODk5YjhjYjIxMTU1NzZmNDRlZmE3NDFlNjk4 Ci0tLS0KLSBnZGIvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0g Z2RiL2MtdmFscHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjIgKysrKysrCi0gZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5leHAgICAgICAgfCAgIDQgKysKLSBnZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cCB8IDEyMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmY5MCB8ICAx NyArKysrKwotIGdkYi92YWxvcHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsr KystCi0gZ2RiL3ZhbHByaW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgLS0KLSA3 IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cAotCi1J bmRleDogZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xMS45MC4yMDE2MDgwNy5vcmlnL2dkYi9ORVdTCTIwMTYtMDgtMDcgMjE6MTg6NDQuMDMyNDA5 MDY1ICswMjAwCi0rKysgZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL05FV1MJMjAxNi0wOC0wNyAy MToxOToxNy4xNzg3MTUxMTYgKzAyMDAKLUBAIC0xLDYgKzEsOCBAQAotIAkJV2hhdCBoYXMgY2hh bmdlZCBpbiBHREI/Ci0gCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0r KiBGb3J0cmFuOiBTdXBwb3J0IHBvaW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMuCi0rCi0gKioqIENo YW5nZXMgaW4gR0RCIDcuMTIKLSAKLSAqIEdEQiBhbmQgR0RCc2VydmVyIG5vdyBidWlsZCB3aXRo IGEgQysrIGNvbXBpbGVyIGJ5IGRlZmF1bHQuCi1JbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA4MDcv Z2RiL2MtdmFscHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjExLjkwLjIwMTYwODA3Lm9y aWcvZ2RiL2MtdmFscHJpbnQuYwkyMDE2LTA4LTA3IDIxOjE4OjQ0LjAzMjQwOTA2NSArMDIwMAot KysrIGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi9jLXZhbHByaW50LmMJMjAxNi0wOC0wNyAyMTox ODo1MS4wODc0NzQyMDcgKzAyMDAKLUBAIC02NDUsNiArNjQ1LDI4IEBACi0gICAgICAgZWxzZQot IAl7Ci0gCSAgLyogbm9ybWFsIGNhc2UgKi8KLSsJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfUFRSCi0rCSAgICAgICYmIDEgPT0gaXNfZHluYW1pY190eXBlICh0eXBlKSkKLSsJ ICAgIHsKLSsJICAgICAgQ09SRV9BRERSIGFkZHI7Ci0rCSAgICAgIGlmIChOVUxMICE9IFRZUEVf REFUQV9MT0NBVElPTiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpKQotKwkJYWRkciA9IHZhbHVl X2FkZHJlc3MgKHZhbCk7Ci0rCSAgICAgIGVsc2UKLSsJCWFkZHIgPSB2YWx1ZV9hc19hZGRyZXNz ICh2YWwpOwotKwotKwkgICAgICAvKiBXZSByZXNvbHZlIHRoZSB0YXJnZXQtdHlwZSBvbmx5IHdo ZW4gdGhlCi0rCSAgICAgICAgIHBvaW50ZXIgaXMgYXNzb2NpYXRlZC4gICovCi0rCSAgICAgIGlm ICgoYWRkciAhPSAwKQotKwkJICAmJiAoMCA9PSB0eXBlX25vdF9hc3NvY2lhdGVkICh0eXBlKSkp Ci0rCQkgIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpID0KLSsJCSAgICAgIHJlc29sdmVfZHluYW1p Y190eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkJCSAgICBOVUxMLCBhZGRyKTsK LSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIERvIG5vdGhpbmcuIFJlZmVy ZW5jZXMgYXJlIGFscmVhZHkgcmVzb2x2ZWQgZnJvbSB0aGUgYmVnaW5uaW5nLAotKwkgICAgICAg ICBvbmx5IHBvaW50ZXJzIGFyZSByZXNvbHZlZCB3aGVuIHdlIGFjdHVhbCBuZWVkIHRoZSB0YXJn ZXQuICAqLwotKwkgICAgfQotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsKLSAJ ICB0eXBlX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCAiIiwgc3RyZWFtLCAtMSk7Ci0gCSAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKLUluZGV4OiBnZGItNy4xMS45MC4yMDE2MDgw Ny9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjExLjkwLjIwMTYwODA3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5leHAJMjAx Ni0wOC0wNyAyMToxODo0NC4wMzM0MDkwNzQgKzAyMDAKLSsrKyBnZGItNy4xMS45MC4yMDE2MDgw Ny9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cAkyMDE2LTA4LTA3IDIxOjE4OjUxLjA4 ODQ3NDIxNiArMDIwMAotQEAgLTI2LDYgKzI2LDggQEAKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCJdCi0gZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgIkJlZm9yZSBwb2ludGVyIGFzc2lnbm1lbnQiCi0gZ2RiX3Rlc3QgInB0 eXBlIHB0ciIgImludCBcXChcXCpcXClcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgInB0eXBlIHB0 ciwgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHRyIiAiXFwo aW50IFxcKFxcKlxcKVxcXFt2YXJpYWJsZSBsZW5ndGhcXFxdXFwpIDB4MCIgInByaW50IHB0ciwg QmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHJpbnQgKnB0ciIgIkNhbm5v dCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwIiAicHJpbnQgKnB0ciwgQmVmb3JlIHBvaW50 ZXIgYXNzaWdubWVudCIKLSAKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmxhc19maWxsZWQiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGFzX2ZpbGxlZCIK LUBAIC0zOCwzICs0MCw1IEBACi0gZ2RiX3Rlc3QgInByaW50IHZsYXJlZjIiICIgPSBcXCguKlxc KSBAJGhleDogXFx7NSwgNywgOVxcfSIKLSBnZGJfdGVzdCAicHJpbnQgYyIgIiA9IFxce2UgPSBc XHtjID0gQCRoZXhcXH1cXH0iCi0gZ2RiX3Rlc3QgInB0eXBlIHB0ciIgImludCBcXChcXCpcXClc XFxbM1xcXF0iCi0rZ2RiX3Rlc3QgInByaW50IHB0ciIgIlxcKGludCBcXChcXCpcXClcXFxbM1xc XF1cXCkgJGhleCIKLStnZGJfdGVzdCAicHJpbnQgKnB0ciIgIiA9IFxcezUsIDcsIDlcXH0iCi1J bmRleDogZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2lu dGVycy5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4xMS45MC4yMDE2MDgwNy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3BvaW50ZXJzLmV4cAkyMDE2LTA4LTA3IDIxOjE4OjUxLjA4ODQ3NDIxNiArMDIw MAotQEAgLTAsMCArMSwxMjMgQEAKLSsjIENvcHlyaWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdGFu ZGFyZF90ZXN0ZmlsZSAicG9pbnRlcnMuZjkwIgotK2xvYWRfbGliIGZvcnRyYW4uZXhwCi0rCi0r aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtz cmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0 byBtYWluIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBEZXBlbmRpbmcgb24gdGhlIGNvbXBp bGVyIGJlaW5nIHVzZWQsIHRoZSB0eXBlIG5hbWVzIGNhbiBiZSBwcmludGVkIGRpZmZlcmVudGx5 LgotK3NldCBsb2dpY2FsIFtmb3J0cmFuX2xvZ2ljYWw0XQotK3NldCByZWFsIFtmb3J0cmFuX3Jl YWw0XQotK3NldCBpbnQgW2ZvcnRyYW5faW50NF0KLStzZXQgY29tcGxleCBbZm9ydHJhbl9jb21w bGV4NF0KLSsKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQmVmb3Jl IHBvaW50ZXIgYXNzaWdubWVudCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJlZm9y ZSBwb2ludGVyIGFzc2lnbm1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IGxvZ3AiICI9IFxcKFBUUiBU TyAtPiBcXCggJGxvZ2ljYWwgXFwpXFwpIDB4MCIgInByaW50IGxvZ3AsIG5vdCBhc3NvY2lhdGVk IgotK2dkYl90ZXN0ICJwcmludCAqbG9ncCIgIkNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJl c3MgMHgwIiAicHJpbnQgKmxvZ3AsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCBj b21wIiAiPSBcXChQVFIgVE8gLT4gXFwoICRjb21wbGV4IFxcKVxcKSAweDAiICJwcmludCBjb21w LCBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgKmNvbXAiICJDYW5ub3QgYWNjZXNz IG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICpjb21wLCBub3QgYXNzb2NpYXRlZCIKLStn ZGJfdGVzdCAicHJpbnQgY2hhcnAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBc XClcXCkgMHgwIiAicHJpbnQgY2hhcnAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmlu dCAqY2hhcnAiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICpj aGFycCwgbm90IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IGNoYXJhcCIgIj0gXFwoUFRS IFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKVxcKSAweDAiICJwcmludCBjaGFyYXAsIG5vdCBh c3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCAqY2hhcmFwIiAiQ2Fubm90IGFjY2VzcyBtZW1v cnkgYXQgYWRkcmVzcyAweDAiICJwcmludCAqY2hhcmFwLCBub3QgYXNzb2NpYXRlZCIKLStnZGJf dGVzdCAicHJpbnQgaW50cCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKVxcKSAweDAiICJw cmludCBpbnRwLCBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgKmludHAiICJDYW5u b3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICppbnRwLCBub3QgYXNzb2Np YXRlZCIKLStzZXQgdGVzdCAicHJpbnQgaW50YXAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0 X211bHRpcGxlICJwcmludCBpbnRhcCIgJHRlc3QgewotKyAgLXJlICIgPSBcXChQVFIgVE8gLT4g XFwoICRpbnQgXFwoOiw6XFwpXFwpXFwpIDxub3QgYXNzb2NpYXRlZD5cclxuJGdkYl9wcm9tcHQg JCIgewotKyAgICBwYXNzICR0ZXN0Ci0rICB9Ci0rICAtcmUgIiA9IDxub3QgYXNzb2NpYXRlZD5c clxuJGdkYl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0Ci0rICB9Ci0rfQotK2dkYl90ZXN0 ICJwcmludCByZWFscCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkcmVhbCBcXClcXCkgMHgwIiAicHJp bnQgcmVhbHAsIG5vdCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCAqcmVhbHAiICJDYW5u b3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICpyZWFscCwgbm90IGFzc29j aWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IFwkbXlfdmFyID0gaW50cCIgIj0gXFwoUFRSIFRPIC0+ IFxcKCAkaW50IFxcKVxcKSAweDAiCi0rCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgIkJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Il0KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQiCi0rZ2RiX3Rlc3QgInByaW50ICoodHdv cCklaXZsYTIiICI9IDxub3QgYWxsb2NhdGVkPiIKLSsKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgIkFmdGVyIHZhbHVlIGFzc2lnbm1lbnQiCi0rZ2RiX3Rlc3QgInByaW50 IGxvZ3AiICI9IFxcKFBUUiBUTyAtPiBcXCggJGxvZ2ljYWwgXFwpXFwpICRoZXhcKCA8Lio+XCk/ IgotK2dkYl90ZXN0ICJwcmludCAqbG9ncCIgIj0gXFwuVFJVRVxcLiIKLStnZGJfdGVzdCAicHJp bnQgY29tcCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkY29tcGxleCBcXClcXCkgJGhleFwoIDwuKj5c KT8iCi0rZ2RiX3Rlc3QgInByaW50ICpjb21wIiAiPSBcXCgxLDJcXCkiCi0rZ2RiX3Rlc3QgInBy aW50IGNoYXJwIiAiPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEgXFwpXFwpICRoZXhc KCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqY2hhcnAiICI9ICdhJyIKLStnZGJfdGVzdCAi cHJpbnQgY2hhcmFwIiAiPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpXFwpICRo ZXhcKCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqY2hhcmFwIiAiPSAnYWJjJyIKLStnZGJf dGVzdCAicHJpbnQgaW50cCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKVxcKSAkaGV4XCgg PC4qPlwpPyIKLStnZGJfdGVzdCAicHJpbnQgKmludHAiICI9IDEwIgotK3NldCB0ZXN0X25hbWUg InByaW50IGludGFwLCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBpbnRh cCIgJHRlc3RfbmFtZSB7Ci0rICAtcmUgIj0gXFwoXFwoIDEsIDEsIDMoLCAxKXs3fVxcKSBcXCgg MSgsIDEpezl9XFwpIFxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIHBhc3MgJHRlc3RfbmFt ZQotKyAgfQotKyAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggJGludCBcXCgxMCwyXFwpXFwpXFwp ICRoZXhcKCA8Lio+XCk/XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgZ2RiX3Rlc3QgInByaW50 ICppbnRhcCIgIj0gXFwoXFwoIDEsIDEsIDMoLCAxKXs3fVxcKSBcXCggMSgsIDEpezl9XFwpIFxc KSIKLSsgICAgcGFzcyAkdGVzdF9uYW1lCi0rICB9Ci0rfQotK3NldCB0ZXN0X25hbWUgInByaW50 IGludHZsYXAsIGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IGludHZsYXAi ICR0ZXN0X25hbWUgewotKyAgLXJlICI9IFxcKDIsIDIsIDIsIDQoLCAyKXs2fVxcKVxyXG4kZ2Ri X3Byb21wdCAkIiB7Ci0rICAgIHBhc3MgJHRlc3RfbmFtZQotKyAgfQotKyAgLXJlICI9IFxcKFBU UiBUTyAtPiBcXCggJGludCBcXCgxMFxcKVxcKVxcKSAkaGV4XCggPC4qPlwpP1xyXG4kZ2RiX3By b21wdCAkIiB7Ci0rICAgIGdkYl90ZXN0ICJwcmludCAqaW50dmxhcCIgIj0gXFwoMiwgMiwgMiwg NCgsIDIpezZ9XFwpIgotKyAgICBwYXNzICR0ZXN0X25hbWUKLSsgIH0KLSt9Ci0rZ2RiX3Rlc3Qg InByaW50IHJlYWxwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRyZWFsIFxcKVxcKSAkaGV4XCggPC4q PlwpPyIKLStnZGJfdGVzdCAicHJpbnQgKnJlYWxwIiAiPSAzXFwuMTQwMDBcXGQrIgotK2dkYl90 ZXN0ICJwcmludCBhcnJheU9mUHRyKDIpJXAiICI9IFxcKFBUUiBUTyAtPiBcXCggVHlwZSB0d28g XFwpXFwpICRoZXhcKCA8Lio+XCk/IgotK2dkYl90ZXN0ICJwcmludCAqKGFycmF5T2ZQdHIoMikl cCkiICI9IFxcKCBpdmxhMSA9IFxcKDExLCAxMiwgMTNcXCksIGl2bGEyID0gXFwoXFwoIDIxMSwg MjIxXFwpIFxcKCAyMTIsIDIyMlxcKSBcXCkgXFwpIgotK3NldCB0ZXN0X25hbWUgInByaW50IGFy cmF5T2ZQdHIoMyklcCIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdF9uYW1lICR0ZXN0X25hbWUg ewotKyAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggVHlwZSB0d28gXFwpXFwpIDxub3QgYXNzb2Np YXRlZD5cclxuJGdkYl9wcm9tcHQgJCIgewotKyAgICBwYXNzICR0ZXN0X25hbWUKLSsgIH0KLSsg IC1yZSAiPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdHdvIFxcKVxcKSAweDBcclxuJGdkYl9wcm9t cHQgJCIgewotKyAgICBwYXNzICR0ZXN0X25hbWUKLSsgIH0KLSt9Ci0rc2V0IHRlc3RfbmFtZSAi cHJpbnQgKihhcnJheU9mUHRyKDMpJXApLCBhc3NvY2lhdGVkIgotK2dkYl90ZXN0X211bHRpcGxl ICJwcmludCAqKGFycmF5T2ZQdHIoMyklcCkiICR0ZXN0X25hbWUgewotKyAgLXJlICJDYW5ub3Qg YWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MFxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIHBh c3MgJHRlc3RfbmFtZQotKyAgfQotKyAgLXJlICJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2Yg YSBub3QgYXNzb2NpYXRlZCBwb2ludGVyLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIHBhc3Mg JHRlc3RfbmFtZQotKyAgfQotK30KLStnZGJfdGVzdCAicHJpbnQgKigoaW50ZWdlciopICZpbnRh ICsgMikiICI9IDMiICJwcmludCB0ZW1wb3JhcnkgcG9pbnRlciwgYXJyYXkiCi0rZ2RiX3Rlc3Qg InByaW50ICooKGludGVnZXIqKSAmaW50dmxhICsgMykiICI9IDQiICJwcmludCB0ZW1wb3Jhcnkg cG9pbnRlciwgYWxsb2NhdGVkIHZsYSIKLStnZGJfdGVzdCAicHJpbnQgXCRwYyIgIj0gXFwoUFRS IFRPIC0+IFxcKCB2b2lkIFxcKFxcKVxcKFxcKVxcKVxcKSAkaGV4IDxwb2ludGVyc1xcK1xcZCs+ IiAiUHJpbnQgcHJvZ3JhbSBjb3VudGVyIgotSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwODA3L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMTEuOTAuMjAxNjA4MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJz LmY5MAkyMDE2LTA4LTA3IDIxOjE4OjQ0LjAzMzQwOTA3NCArMDIwMAotKysrIGdkYi03LjExLjkw LjIwMTYwODA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCTIwMTYtMDgt MDcgMjE6MTg6NTEuMDg4NDc0MjE2ICswMjAwCi1AQCAtMjAsMTQgKzIwLDIwIEBACi0gICAgIGlu dGVnZXIsIGFsbG9jYXRhYmxlIDo6IGl2bGEyICg6LCA6KQotICAgZW5kIHR5cGUgdHdvCi0gCi0r ICB0eXBlIDo6IHR3b1B0cgotKyAgICB0eXBlICh0d28pLCBwb2ludGVyIDo6IHAKLSsgIGVuZCB0 eXBlIHR3b1B0cgotKwotICAgbG9naWNhbCwgdGFyZ2V0IDo6IGxvZ3YKLSAgIGNvbXBsZXgsIHRh cmdldCA6OiBjb212Ci0gICBjaGFyYWN0ZXIsIHRhcmdldCA6OiBjaGFydgotICAgY2hhcmFjdGVy IChsZW49MyksIHRhcmdldCA6OiBjaGFyYQotICAgaW50ZWdlciwgdGFyZ2V0IDo6IGludHYKLSAg IGludGVnZXIsIHRhcmdldCwgZGltZW5zaW9uICgxMCwyKSA6OiBpbnRhCi0rICBpbnRlZ2VyLCB0 YXJnZXQsIGFsbG9jYXRhYmxlLCBkaW1lbnNpb24gKDopIDo6IGludHZsYQotICAgcmVhbCwgdGFy Z2V0ICAgIDo6IHJlYWx2Ci0gICB0eXBlKHR3byksIHRhcmdldCAgOjogdHdvdgotKyAgdHlwZSh0 d29QdHIpIDo6IGFycmF5T2ZQdHIgKDMpCi0gCi0gICBsb2dpY2FsLCBwb2ludGVyIDo6IGxvZ3AK LSAgIGNvbXBsZXgsIHBvaW50ZXIgOjogY29tcAotQEAgLTM1LDYgKzQxLDcgQEAKLSAgIGNoYXJh Y3RlciAobGVuPTMpLCBwb2ludGVyOjogY2hhcmFwCi0gICBpbnRlZ2VyLCBwb2ludGVyIDo6IGlu dHAKLSAgIGludGVnZXIsIHBvaW50ZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBpbnRhcAotKyAgaW50 ZWdlciwgcG9pbnRlciwgZGltZW5zaW9uICg6KSA6OiBpbnR2bGFwCi0gICByZWFsLCBwb2ludGVy IDo6IHJlYWxwCi0gICB0eXBlKHR3byksIHBvaW50ZXIgOjogdHdvcAotIAotQEAgLTQ0LDggKzUx LDEyIEBACi0gICBudWxsaWZ5IChjaGFyYXApCi0gICBudWxsaWZ5IChpbnRwKQotICAgbnVsbGlm eSAoaW50YXApCi0rICBudWxsaWZ5IChpbnR2bGFwKQotICAgbnVsbGlmeSAocmVhbHApCi0gICBu dWxsaWZ5ICh0d29wKQotKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigxKSVwKQotKyAgbnVsbGlmeSAo YXJyYXlPZlB0cigyKSVwKQotKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigzKSVwKQotIAotICAgbG9n cCA9PiBsb2d2ICAgICEgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudAotICAgY29tcCA9PiBjb212 Ci1AQCAtNTMsOCArNjQsMTAgQEAKLSAgIGNoYXJhcCA9PiBjaGFyYQotICAgaW50cCA9PiBpbnR2 Ci0gICBpbnRhcCA9PiBpbnRhCi0rICBpbnR2bGFwID0+IGludHZsYQotICAgcmVhbHAgPT4gcmVh bHYKLSAgIHR3b3AgPT4gdHdvdgotKyAgYXJyYXlPZlB0cigyKSVwID0+IHR3b3YKLSAKLSAgIGxv Z3YgPSBhc3NvY2lhdGVkKGxvZ3ApICAgICAhIEJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Ci0gICBj b212ID0gY21wbHgoMSwyKQotQEAgLTYzLDYgKzc2LDEwIEBACi0gICBpbnR2ID0gMTAKLSAgIGlu dGEoOiw6KSA9IDEKLSAgIGludGEoMywxKSA9IDMKLSsgIGFsbG9jYXRlIChpbnR2bGEoMTApKQot KyAgaW50dmxhKDopID0gMgotKyAgaW50dmxhKDQpID0gNAotKyAgaW50dmxhcCA9PiBpbnR2bGEK LSAgIHJlYWx2ID0gMy4xNAotIAotICAgYWxsb2NhdGUgKHR3b3YlaXZsYTEoMykpCi1JbmRleDog Z2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL3ZhbG9wcy5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MTEuOTAuMjAxNjA4MDcub3JpZy9nZGIvdmFsb3BzLmMJMjAxNi0wOC0wNyAyMToxODo0NC4wMzU0 MDkwOTMgKzAyMDAKLSsrKyBnZGItNy4xMS45MC4yMDE2MDgwNy9nZGIvdmFsb3BzLmMJMjAxNi0w OC0wNyAyMToxODo1MS4wODk0NzQyMjUgKzAyMDAKLUBAIC0xNTYyLDYgKzE1NjIsMTkgQEAKLSAg IGlmIChUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0gVFlQRV9DT0RFX1BUUikKLSAgICAgewotICAg ICAgIHN0cnVjdCB0eXBlICplbmNfdHlwZTsKLSsgICAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsg ICAgICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAoYmFzZV90eXBlKSkKLSsgICAgICAgIGVycm9y IChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub3QgYXNzb2NpYXRlZCBwb2ludGVy LiIpKTsKLSsKLSsgICAgICBpZiAoTlVMTCAhPSBUWVBFX0RBVEFfTE9DQVRJT04gKFRZUEVfVEFS R0VUX1RZUEUgKGJhc2VfdHlwZSkpKQotKwlhZGRyID0gdmFsdWVfYWRkcmVzcyAoYXJnMSk7Ci0r ICAgICAgZWxzZQotKwlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoYXJnMSk7Ci0rCi0rICAgICAg aWYgKGFkZHIgIT0gMCkKLSsJVFlQRV9UQVJHRVRfVFlQRSAoYmFzZV90eXBlKSA9Ci0rCSAgICBy ZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAoYmFzZV90eXBlKSwgTlVMTCwg YWRkcik7Ci0gCi0gICAgICAgLyogV2UgbWF5IGJlIHBvaW50aW5nIHRvIHNvbWV0aGluZyBlbWJl ZGRlZCBpbiBhIGxhcmdlciBvYmplY3QuCi0gICAgICAgICAgR2V0IHRoZSByZWFsIHR5cGUgb2Yg dGhlIGVuY2xvc2luZyBvYmplY3QuICAqLwotQEAgLTE1NzcsOCArMTU5MCw3IEBACi0gICAgICAg ZWxzZQotIAkvKiBSZXRyaWV2ZSB0aGUgZW5jbG9zaW5nIG9iamVjdCBwb2ludGVkIHRvLiAgKi8K LSAJYXJnMiA9IHZhbHVlX2F0X2xhenkgKGVuY190eXBlLCAKLS0JCQkgICAgICAodmFsdWVfYXNf YWRkcmVzcyAoYXJnMSkKLS0JCQkgICAgICAgLSB2YWx1ZV9wb2ludGVkX3RvX29mZnNldCAoYXJn MSkpKTsKLSsJCQkgICAgICAoYWRkciAtIHZhbHVlX3BvaW50ZWRfdG9fb2Zmc2V0IChhcmcxKSkp OwotIAotICAgICAgIGVuY190eXBlID0gdmFsdWVfdHlwZSAoYXJnMik7Ci0gICAgICAgcmV0dXJu IHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKGFyZzIsIGVuY190eXBlLCBiYXNlX3R5cGUs IGFyZzEpOwotSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi92YWxwcmludC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMTEuOTAuMjAxNjA4MDcub3JpZy9nZGIvdmFscHJpbnQuYwkyMDE2 LTA4LTA3IDA0OjAwOjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjExLjkwLjIwMTYwODA3 L2dkYi92YWxwcmludC5jCTIwMTYtMDgtMDcgMjE6MTg6NTEuMDkwNDc0MjM1ICswMjAwCi1AQCAt MTE0MSwxMiArMTE0MSw2IEBACi0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLS0gIGlmICh0 eXBlX25vdF9hc3NvY2lhdGVkICh2YWx1ZV90eXBlICh2YWwpKSkKLS0gICAgewotLSAgICAgIHZh bF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKLS0gICAgICByZXR1cm4gMDsKLS0gICAg fQotLQotICAgaWYgKHR5cGVfbm90X2FsbG9jYXRlZCAodmFsdWVfdHlwZSAodmFsKSkpCi0gICAg IHsKLSAgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKCmRpZmYgLS1naXQg YS9nZGItdmxhLWludGVsLTZvZjcucGF0Y2ggYi9nZGItdmxhLWludGVsLTZvZjcucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1OTY4ZTkuLjAwMDAwMDAKLS0tIGEvZ2RiLXZs YS1pbnRlbC02b2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20g ODY2NTM0NGMxNGI5YWU4YjJlMGMzN2JhMDZkNjg4MWE1NDZkMWEzNyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIEhlY2tlbCA8YmVybmhhcmQuaGVja2VsQGludGVsLmNv bT4KLURhdGU6IFR1ZSwgMTIgSnVsIDIwMTYgMDg6MTk6MzQgKzAyMDAKLVN1YmplY3Q6IFtQQVRD SCA2LzddIEZvcnRyYW46IFRlc3RzdWl0ZSwgYWRkIGN5Y2xpYyBwb2ludGVycy4KLQotMjAxNi0w NS0yNSAgQmVybmhhcmQgSGVja2VsICA8YmVybmhhcmQuaGVja2VsQGludGVsLmNvbT4KLQotZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2Vsb2c6Ci0JKiBwb2ludGVycy5mOTA6IEFkZCBjeWxpYyBwb2ludGVy cy4KLQkqIHBvaW50ZXJzLmV4cDogQWRkIHByaW50IG9mIGN5Y2xpYyBwb2ludGVycy4KLQotQ2hh bmdlLUlkOiBJYzNiNjE4N2M1OTgwZmQ2YzM3ZTJlOTQ3ODdmODMyMWU1YjdmMmQ3NQotLS0tCi0g Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5leHAgfCAyMCArKysrKysrKysrKysr KysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwIHwgMTIgKysr KysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZXhwCi1pbmRleCBjMTlkN2UwLi42N2NmOTk5IDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZXhwCi1AQCAtNTcsNiArNTcsMjQgQEAg Z2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IGludGFwIiAkdGVzdCB7Ci0gZ2RiX3Rlc3QgInByaW50 IHJlYWxwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRyZWFsIFxcKVxcKSAweDAiICJwcmludCByZWFs cCwgbm90IGFzc29jaWF0ZWQiCi0gZ2RiX3Rlc3QgInByaW50ICpyZWFscCIgIkNhbm5vdCBhY2Nl c3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwIiAicHJpbnQgKnJlYWxwLCBub3QgYXNzb2NpYXRlZCIK LSBnZGJfdGVzdCAicHJpbnQgXCRteV92YXIgPSBpbnRwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRp bnQgXFwpXFwpIDB4MCIKLStzZXQgdGVzdCAicHJpbnQgY3ljbGljcDEsIG5vdCBhc3NvY2lhdGVk IgotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBjeWNsaWNwMSIgJHRlc3QgewotKyAgLXJlICI9 IFxcKCBpID0gLT9cXGQrLCBwID0gMHgwIFxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIHBh c3MgJHRlc3QKLSsgIH0KLSsgIC1yZSAiPSBcXCggaSA9IC0/XFxkKywgcCA9IDxub3QgYXNzb2Np YXRlZD4gXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgcGFzcyAkdGVzdAotKyAgfQotK30K LStzZXQgdGVzdCAicHJpbnQgY3ljbGljcDElcCwgbm90IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3Rf bXVsdGlwbGUgInByaW50IGN5Y2xpY3AxJXAiICR0ZXN0IHsKLSsgIC1yZSAiPSBcXChQVFIgVE8g LT4gXFwoIFR5cGUgdHlwZXdpdGhwb2ludGVyIFxcKVxcKSAweDBcclxuJGdkYl9wcm9tcHQgJCIg ewotKyAgICBwYXNzICR0ZXN0Ci0rICB9Ci0rICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxcKCBUeXBl IHR5cGV3aXRocG9pbnRlciBcXClcXCkgPG5vdCBhc3NvY2lhdGVkPlxyXG4kZ2RiX3Byb21wdCAk IiB7Ci0rICAgIHBhc3MgJHRlc3QKLSsgIH0KLSt9Ci0gCi0gCi0gZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Il0KLUBAIC0xMTgsNiAr MTM2LDggQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICooYXJyYXlPZlB0cigzKSVwKSIgJHRl c3RfbmFtZSB7Ci0gICAgIHBhc3MgJHRlc3RfbmFtZQotICAgfQotIH0KLStnZGJfdGVzdCAicHJp bnQgY3ljbGljcDEiICI9IFxcKCBpID0gMSwgcCA9ICRoZXhcKCA8Lio+XCk/IFxcKSIKLStnZGJf dGVzdCAicHJpbnQgY3ljbGljcDElcCIgIj0gXFwoUFRSIFRPIC0+IFxcKCBUeXBlIHR5cGV3aXRo cG9pbnRlciBcXClcXCkgJGhleFwoIDwuKj5cKT8iCi0gZ2RiX3Rlc3QgInByaW50ICooKGludGVn ZXIqKSAmaW50YSArIDIpIiAiPSAzIiAicHJpbnQgdGVtcG9yYXJ5IHBvaW50ZXIsIGFycmF5Igot IGdkYl90ZXN0ICJwcmludCAqKChpbnRlZ2VyKikgJmludHZsYSArIDMpIiAiPSA0IiAicHJpbnQg dGVtcG9yYXJ5IHBvaW50ZXIsIGFsbG9jYXRlZCB2bGEiCi0gZ2RiX3Rlc3QgInByaW50IFwkcGMi ICI9IFxcKFBUUiBUTyAtPiBcXCggdm9pZCBcXChcXClcXChcXClcXClcXCkgJGhleCA8cG9pbnRl cnNcXCtcXGQrPiIgIlByaW50IHByb2dyYW0gY291bnRlciIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vcG9pbnRlcnMuZjkwCi1pbmRleCAwMDAxOTNjLi42MjQwYzg3IDEwMDY0NAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5mOTAKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vcG9pbnRlcnMuZjkwCi1AQCAtMjAsNiArMjAsMTEgQEAgcHJvZ3JhbSBwb2lu dGVycwotICAgICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBpdmxhMiAoOiwgOikKLSAgIGVuZCB0 eXBlIHR3bwotIAotKyAgdHlwZSA6OiB0eXBlV2l0aFBvaW50ZXIKLSsgICAgaW50ZWdlciBpCi0r ICAgIHR5cGUodHlwZVdpdGhQb2ludGVyKSwgcG9pbnRlcjo6IHAKLSsgIGVuZCB0eXBlIHR5cGVX aXRoUG9pbnRlcgotKwotICAgdHlwZSA6OiB0d29QdHIKLSAgICAgdHlwZSAodHdvKSwgcG9pbnRl ciA6OiBwCi0gICBlbmQgdHlwZSB0d29QdHIKLUBAIC0zNCw2ICszOSw3IEBAIHByb2dyYW0gcG9p bnRlcnMKLSAgIHJlYWwsIHRhcmdldCAgICA6OiByZWFsdgotICAgdHlwZSh0d28pLCB0YXJnZXQg IDo6IHR3b3YKLSAgIHR5cGUodHdvUHRyKSA6OiBhcnJheU9mUHRyICgzKQotKyAgdHlwZSh0eXBl V2l0aFBvaW50ZXIpLCB0YXJnZXQ6OiBjeWNsaWNwMSxjeWNsaWNwMgotIAotICAgbG9naWNhbCwg cG9pbnRlciA6OiBsb2dwCi0gICBjb21wbGV4LCBwb2ludGVyIDo6IGNvbXAKLUBAIC01Nyw2ICs2 Myw4IEBAIHByb2dyYW0gcG9pbnRlcnMKLSAgIG51bGxpZnkgKGFycmF5T2ZQdHIoMSklcCkKLSAg IG51bGxpZnkgKGFycmF5T2ZQdHIoMiklcCkKLSAgIG51bGxpZnkgKGFycmF5T2ZQdHIoMyklcCkK LSsgIG51bGxpZnkgKGN5Y2xpY3AxJXApCi0rICBudWxsaWZ5IChjeWNsaWNwMiVwKQotIAotICAg bG9ncCA9PiBsb2d2ICAgICEgQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudAotICAgY29tcCA9PiBj b212Ci1AQCAtNjgsNiArNzYsMTAgQEAgcHJvZ3JhbSBwb2ludGVycwotICAgcmVhbHAgPT4gcmVh bHYKLSAgIHR3b3AgPT4gdHdvdgotICAgYXJyYXlPZlB0cigyKSVwID0+IHR3b3YKLSsgIGN5Y2xp Y3AxJWkgPSAxCi0rICBjeWNsaWNwMSVwID0+IGN5Y2xpY3AyCi0rICBjeWNsaWNwMiVpID0gMgot KyAgY3ljbGljcDIlcCA9PiBjeWNsaWNwMQotIAotICAgbG9ndiA9IGFzc29jaWF0ZWQobG9ncCkg ICAgICEgQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQKLSAgIGNvbXYgPSBjbXBseCgxLDIpCi0tLSAK LTIuNy40Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTdvZjcucGF0Y2ggYi9nZGItdmxh LWludGVsLTdvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMGNhNjAu LjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC03b2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNTIxICswLDAgQEAKLUZyb20gMWU1YmQ5YWVjOWVlMDJjMmY3NzFlNGRjOTk3NTcwYzgyZDc0 YjNiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIEhlY2tlbCA8YmVy bmhhcmQuaGVja2VsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTIgSnVsIDIwMTYgMDg6MTk6MzQg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA3LzddIGZvcnRfZHluX2FycmF5OiBGb3J0cmFuIGR5bmFt aWMgc3RyaW5nIHN1cHBvcnQKLQotVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBzZW1hbnRpYyBvZiB0 aGUgRHdhcmYgc3RyaW5nIGxlbmd0aAotYXR0cmlidXRlIHRvIHJlZmxlY3QgdGhlIHN0YW5kYXJk IGFzIHdlbGwgYXMgZW5hYmxlcwotY29ycmVjdCBzdHJpbmcgbGVuZ3RoIGNhbGN1bGF0aW9uIG9m IGR5bmFtaWMgc3RyaW5ncy4gQWRkCi10ZXN0cyBmb3IgdmFyb3VzIGR5bmFtaWMgc3RyaW5nIGV2 YWx1YXRpb25zLgotCi1PbGQ6Ci0oZ2RiKSBwIG15X2R5bl9zdHJpbmcKLUNhbm5vdCBhY2Nlc3Mg bWVtb3J5IGF0IGFkZHJlc3MgMHg2MDVmYzAKLQotTmV3OgotKGdkYikgcCAqbXlfZHluX3N0cmlu ZwotJDEgPSAnZm9vJwotCi1nZGIvQ2hhbmdsb2c6Ci0JKiBkd2FyZjJyZWFkLmMgKHJlYWRfdGFn X3N0cmluZ190eXBlKTogY2hhbmdlZAotCXNlbWFudGljIG9mIERXX0FUX3N0cmluZ19sZW5ndGgg dG8gYmUgYWJsZSB0bwotCWhhbmRsZSBEd2FyZiBibG9ja3MgYXMgd2VsbC4gU3VwcG9ydCBmb3IK LQlEV19BVF9ieXRlX2xlbmd0aCBhZGRlZCB0byBnZXQgY29ycmVjdCBsZW5ndGgKLQlpZiBzcGVj aWZpZWQgaW4gY29tYmluYXRpb24gd2l0aAotCURXX0FUX3N0cmluZ19sZW5ndGguCi0JKGF0dHJf dG9fZHluYW1pY19wcm9wKTogYWRkZWQKLQlmdW5jdGlvbmFsaXR5IHRvIGFkZCBEd2FyZiBvcGVy YXRvcnMgdG8gYmF0b24KLQlkYXRhIGF0dHJpYnV0ZS4gQWRkZWQgcG9zdCB2YWx1ZXMgdG8gYmF0 b24KLQlhcyByZXF1aXJlZCBieSB0aGUgc3RyaW5nIGV2YWx1YXRpb24gY2FzZS4KLQkocmVhZF9z dWJyYW5nZV90eXBlKTogQWRhcHQgY2FsbGVyLgotCShzZXRfZGllX3R5cGUpOiBBZGFwdCBjYWxs ZXIuCi0JKGFkZF9wb3N0X3ZhbHVlc190b19iYXRvbik6IE5ldyBmdW5jdGlvbi4KLSAgICAJKiBn ZGJ0eXBlcy5jIChyZXNvbHZlX2R5bmFtaWNfdHlwZSk6IEFkZAotICAgIAljb25kaXRpb25zIHRv IHN1cHBvcnQgc3RyaW5nIHR5cGVzLgotICAgIAkocmVzb2x2ZV9keW5hbWljX2FycmF5KTogQWRk IGNvbmRpdGlvbnMgZm9yIGR5bmFtaWMKLSAgICAJc3RyaW5ncyBhbmQgY3JlYXRlIGEgbmV3IHN0 cmluZyB0eXBlLgotICAgIAkoaXNfZHluYW1pY190eXBlKTogRm9sbG93IHBvaW50ZXIgaWYgYSBz dHJpbmcgdHlwZQotICAgIAl3YXMgZGV0ZWN0ZWQsIGFzIEZvcnRyYW4gc3RyaW5ncyBhcmUgcmVw cmVzZW50ZWQKLSAgICAJYXMgcG9pbnRlcnMgdG8gc3RyaW5ncyBpbnRlcm5hbGx5LgotCi1nZGIv dGVzdHN1aXRlL0NoYW5nZWxvZzoKLQkqIHZsYS1zdHJpbmdzLmY5MDogTmV3IGZpbGUuCi0JKiB2 bGEtc3RyaW5ncy5leHA6IE5ldyBmaWxlLgotCi1DaGFuZ2UtSWQ6IEk3ZDdmNDdjN2E0OTAwYTdm ZGI1MTEwMjAzMjQ1NWI1M2Q2MGU2MGQ3Ci0tLS0KLSBnZGIvZHdhcmYycmVhZC5jICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSBn ZGIvZ2RidHlwZXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArKy0KLSBnZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cCB8IDEwMyArKysrKysrKysrKysr KysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5mOTAgfCAgMzkg KysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDI4NSBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlv bnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt c3RyaW5ncy5leHAKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtc3RyaW5ncy5mOTAKLQotSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi9kd2Fy ZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xMS45MC4yMDE2MDgwNy5vcmlnL2dkYi9k d2FyZjJyZWFkLmMJMjAxNi0wOC0yNSAxNjowODoxNy4zOTc3MTQ5MzYgKzAyMDAKLSsrKyBnZGIt Ny4xMS45MC4yMDE2MDgwNy9nZGIvZHdhcmYycmVhZC5jCTIwMTYtMDgtMjUgMTY6MDk6NTYuNzAz NTgwNTk3ICswMjAwCi1AQCAtMTc2NCw3ICsxNzY0LDggQEAKLSAKLSBzdGF0aWMgaW50IGF0dHJf dG9fZHluYW1pY19wcm9wIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAotIAkJCQkgc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotLQkJCQkgc3RydWN0IGR5 bmFtaWNfcHJvcCAqcHJvcCk7Ci0rCQkJCSBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBjb25z dCBnZGJfYnl0ZSAqYWRkaXRpb25hbF9kYXRhLAotKwkJCQkgaW50IGFkZGl0aW9uYWxfZGF0YV9z aXplKTsKLSAKLSAvKiBtZW1vcnkgYWxsb2NhdGlvbiBpbnRlcmZhY2UgKi8KLSAKLUBAIC0xMTQ0 Niw3ICsxMTQ0Nyw3IEBACi0gICAgIHsKLSAgICAgICBuZXdvYmotPnN0YXRpY19saW5rCi0gCT0g WE9CTkVXICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgZHluYW1pY19wcm9wKTsK LS0gICAgICBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgbmV3b2JqLT5zdGF0 aWNfbGluayk7Ci0rICAgICAgYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsIG5l d29iai0+c3RhdGljX2xpbmssIE5VTEwsIDApOwotICAgICB9Ci0gCi0gICBjdS0+bGlzdF9pbl9z Y29wZSA9ICZsb2NhbF9zeW1ib2xzOwotQEAgLTE0NTEyLDI5ICsxNDUxMyw5NCBAQAotICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKLSAgIHN0 cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7Ci0g ICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAgdW5zaWduZWQgaW50IGxlbmd0aDsKLSsgIHVu c2lnbmVkIGludCBsZW5ndGggPSBVSU5UX01BWDsKLSAKLSsgIGluZGV4X3R5cGUgPSBvYmpmaWxl X3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKLSsgIHJhbmdlX3R5cGUgPSBjcmVhdGVfc3Rh dGljX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Ci0rCi0rICAvKiBJ ZiBEV19BVF9zdHJpbmdfbGVuZ3RoIGlzIGRlZmluZWQsIHRoZSBsZW5ndGggaXMgc3RvcmVkIGlu IG1lbW9yeS4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xl bmd0aCwgY3UpOwotICAgaWYgKGF0dHIpCi0gICAgIHsKLS0gICAgICBsZW5ndGggPSBEV19VTlNO RCAoYXR0cik7Ci0rICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rCXsKLSsJ ICBzdHJ1Y3QgYXR0cmlidXRlICpieXRlX3NpemUsICpiaXRfc2l6ZTsKLSsJICBzdHJ1Y3QgZHlu YW1pY19wcm9wIGhpZ2g7Ci0rCi0rCSAgYnl0ZV9zaXplID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdf QVRfYnl0ZV9zaXplLCBjdSk7Ci0rCSAgYml0X3NpemUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9iaXRfc2l6ZSwgY3UpOwotKwotKwkgIC8qIERXX0FUX2J5dGVfc2l6ZSBzaG91bGQgbmV2ZXIg b2NjdXIgaW4gY29tYmluYXRpb24gd2l0aAotKwkgICAgIERXX0FUX2JpdF9zaXplLiAgKi8KLSsJ ICBpZiAoYnl0ZV9zaXplICE9IE5VTEwgJiYgYml0X3NpemUgIT0gTlVMTCkKLSsJICAgIGNvbXBs YWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSAgICAgICBfKCJEV19BVF9ieXRlX3NpemUg QU5EICIKLSsJCQkgIkRXX0FUX2JpdF9zaXplIGZvdW5kIHRvZ2V0aGVyIGF0IHRoZSBzYW1lIHRp bWUuIikpOwotKwotKwkgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggQU5EIERXX0FUX2J5dGVf c2l6ZSBleGlzdCB0b2dldGhlciwKLSsJICAgICBEV19BVF9ieXRlX3NpemUgZGVzY3JpYmVzIHRo ZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBzaG91bGQgYmUgcmVhZAotKwkgICAgIGZyb20gdGhlIGxl bmd0aCBtZW1vcnkgbG9jYXRpb24uICAqLwotKwkgIGlmIChieXRlX3NpemUgIT0gTlVMTCkKLSsJ ICAgIHsKLSsJICAgICAgLyogQnVpbGQgbmV3IGR3YXJmMl9sb2NleHByX2JhdG9uIHN0cnVjdHVy ZSB3aXRoIGFkZGl0aW9ucyB0byB0aGUKLSsJCSBkYXRhIGF0dHJpYnV0ZSwgdG8gcmVmbGVjdCBE V0FSRiBzcGVjaWFsaXRpZXMgdG8gZ2V0IGFkZHJlc3MKLSsJCSBzaXplcy4gICovCi0rCSAgICAg IGNvbnN0IGdkYl9ieXRlIGFwcGVuZF9vcHNbXSA9Ci0rCQl7Ci0rCQkvKiBEV19PUF9kZXJlZl9z aXplOiBzaXplIG9mIGFuIGFkZHJlc3Mgb24gdGhlIHRhcmdldCBtYWNoaW5lCi0rCQkgICAoYnl0 ZXMpLCB3aGVyZSB0aGUgc2l6ZSB3aWxsIGJlIHNwZWNpZmllZCBieSB0aGUgbmV4dAotKwkJICAg b3BlcmFuZC4gICovCi0rCQlEV19PUF9kZXJlZl9zaXplLAotKwkJLyogT3BlcmFuZCBmb3IgRFdf T1BfZGVyZWZfc2l6ZS4gICovCi0rCQlEV19VTlNORChieXRlX3NpemUpIH07Ci0rCi0rCSAgICAg IGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoLCBhcHBlbmRf b3BzLAotKwkJCQkJIEFSUkFZX1NJWkUoYXBwZW5kX29wcykpKQotKwkJY29tcGxhaW50ICgmc3lt ZmlsZV9jb21wbGFpbnRzLAotKwkJCSAgIF8oIkNvdWxkIG5vdCBwYXJzZSBEV19BVF9ieXRlX3Np emUiKSk7Ci0rCSAgICB9Ci0rCSAgZWxzZSBpZiAoYml0X3NpemUgIT0gTlVMTCkKLSsJICAgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSAgICAgICBfKCJEV19BVF9zdHJpbmdf bGVuZ3RoIEFORCAiCi0rCQkJICJEV19BVF9iaXRfc2l6ZSBmb3VuZCBidXQgbm90IHN1cHBvcnRl ZCB5ZXQuIikpOwotKwkgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggV0lUSE9VVCBEV19BVF9i eXRlX3NpemUgZXhpc3QsIHRoZSBkZWZhdWx0Ci0rCSAgICAgaXMgdGhlIGFkZHJlc3Mgc2l6ZSBv ZiB0aGUgdGFyZ2V0IG1hY2hpbmUuICAqLwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgY29u c3QgZ2RiX2J5dGUgYXBwZW5kX29wc1tdID0KLSsJCXsgRFdfT1BfZGVyZWYgfTsKLSsKLSsJICAg ICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIGFwcGVu ZF9vcHMsCi0rCQkJCQkgQVJSQVlfU0laRShhcHBlbmRfb3BzKSkpCi0rCQljb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsCi0rCQkJICAgXygiQ291bGQgbm90IHBhcnNlIERXX0FUX3N0cmlu Z19sZW5ndGgiKSk7Ci0rCSAgICB9Ci0rCi0rCSAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBl KS0+aGlnaCA9IGhpZ2g7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBUWVBFX0hJR0hfQk9V TkQgKHJhbmdlX3R5cGUpID0gRFdfVU5TTkQoYXR0cik7Ci0rCSAgVFlQRV9ISUdIX0JPVU5EX0tJ TkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05TVDsKLSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAg IHsKLS0gICAgICAvKiBDaGVjayBmb3IgdGhlIERXX0FUX2J5dGVfc2l6ZSBhdHRyaWJ1dGUuICAq LwotKyAgICAgIC8qIENoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0dHJpYnV0ZSwgd2hp Y2ggcmVwcmVzZW50cyB0aGUgbGVuZ3RoCi0rCSBpbiB0aGlzIGNhc2UuICAqLwotICAgICAgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKLSAgICAgICBpZiAo YXR0cikKLS0gICAgICAgIHsKLS0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOwot LSAgICAgICAgfQotKwl7Ci0rCSAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IERXX1VO U05EKGF0dHIpOwotKwkgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBST1Bf Q09OU1Q7Ci0rCX0KLSAgICAgICBlbHNlCi0tICAgICAgICB7Ci0tICAgICAgICAgIGxlbmd0aCA9 IDE7Ci0tICAgICAgICB9Ci0rCXsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0g MTsKLSsJICBUWVBFX0hJR0hfQk9VTkRfS0lORCAocmFuZ2VfdHlwZSkgPSBQUk9QX0NPTlNUOwot Kwl9Ci0gICAgIH0KLSAKLS0gIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5i dWlsdGluX2ludDsKLS0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKE5V TEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Ci0gICBjaGFyX3R5cGUgPSBsYW5ndWFnZV9zdHJp bmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7Ci0gICB0eXBlID0gY3Jl YXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOwotIAotQEAgLTE0 ODY0LDcgKzE0OTMwLDggQEAKLSAKLSBzdGF0aWMgaW50Ci0gYXR0cl90b19keW5hbWljX3Byb3Ag KGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAotLQkJ ICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3ApCi0r CQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwK LSsJCSAgICAgIGNvbnN0IGdkYl9ieXRlICphZGRpdGlvbmFsX2RhdGEsIGludCBhZGRpdGlvbmFs X2RhdGFfc2l6ZSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRvbjsK LSAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrID0gJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2s7Ci1AQCAtMTQ4NzQsMTQgKzE0OTQxLDMzIEBACi0gCi0gICBpZiAoYXR0cl9mb3JtX2lzX2Js b2NrIChhdHRyKSkKLSAgICAgewotLSAgICAgIGJhdG9uID0gWE9CTkVXIChvYnN0YWNrLCBzdHJ1 Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uKTsKLSsgICAgICBiYXRvbiA9IFhPQk5FVyhvYnN0YWNr LCBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uKTsKLSAgICAgICBiYXRvbi0+cmVmZXJlbmNl ZF90eXBlID0gTlVMTDsKLSAgICAgICBiYXRvbi0+bG9jZXhwci5wZXJfY3UgPSBjdS0+cGVyX2N1 OwotLSAgICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0t ICAgICAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKLSsKLSsg ICAgICBpZiAoYWRkaXRpb25hbF9kYXRhICE9IE5VTEwgJiYgYWRkaXRpb25hbF9kYXRhX3NpemUg PiAwKQotKwl7Ci0rCSAgZ2RiX2J5dGUgKmRhdGE7Ci0rCi0rCSAgZGF0YSA9IChnZGJfYnl0ZSAq KSBvYnN0YWNrX2FsbG9jKAotKwkgICAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywK LSsJICAgICAgRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgYWRkaXRpb25hbF9kYXRhX3NpemUpOwot KwkgIG1lbWNweSAoZGF0YSwgRFdfQkxPQ0sgKGF0dHIpLT5kYXRhLCBEV19CTE9DSyAoYXR0cikt PnNpemUpOwotKwkgIG1lbWNweSAoZGF0YSArIERXX0JMT0NLIChhdHRyKS0+c2l6ZSwgYWRkaXRp b25hbF9kYXRhLAotKwkJICBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7Ci0rCi0rCSAgYmF0b24tPmxv Y2V4cHIuZGF0YSA9IGRhdGE7Ci0rCSAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLIChh dHRyKS0+c2l6ZSArIGFkZGl0aW9uYWxfZGF0YV9zaXplOwotKwl9Ci0rICAgICAgZWxzZQotKwl7 Ci0rCSAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKLSsJICBi YXRvbi0+bG9jZXhwci5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwotKwl9Ci0rCi0gICAg ICAgcHJvcC0+ZGF0YS5iYXRvbiA9IGJhdG9uOwotICAgICAgIHByb3AtPmtpbmQgPSBQUk9QX0xP Q0VYUFI7Ci0tICAgICAgZ2RiX2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKLSsg ICAgICBnZGJfYXNzZXJ0KHByb3AtPmRhdGEuYmF0b24gIT0gTlVMTCk7Ci0gICAgIH0KLSAgIGVs c2UgaWYgKGF0dHJfZm9ybV9pc19yZWYgKGF0dHIpKQotICAgICB7Ci1AQCAtMTQ5MTQsOCArMTUw MDAsMjggQEAKLSAJCWJhdG9uID0gWE9CTkVXIChvYnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3Byb3Bl cnR5X2JhdG9uKTsKLSAJCWJhdG9uLT5yZWZlcmVuY2VkX3R5cGUgPSBkaWVfdHlwZSAodGFyZ2V0 X2RpZSwgdGFyZ2V0X2N1KTsKLSAJCWJhdG9uLT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7 Ci0tCQliYXRvbi0+bG9jZXhwci5zaXplID0gRFdfQkxPQ0sgKHRhcmdldF9hdHRyKS0+c2l6ZTsK LS0JCWJhdG9uLT5sb2NleHByLmRhdGEgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5kYXRhOwot KwotKwkJaWYgKGFkZGl0aW9uYWxfZGF0YSAhPSBOVUxMICYmIGFkZGl0aW9uYWxfZGF0YV9zaXpl ID4gMCkKLSsJCSAgewotKwkJICAgIGdkYl9ieXRlICpkYXRhOwotKwotKwkJICAgIGRhdGEgPSAo Z2RiX2J5dGUgKikgb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss Ci0rCQkJICAgIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUgKyBhZGRpdGlvbmFsX2RhdGFf c2l6ZSk7Ci0rCQkgICAgbWVtY3B5IChkYXRhLCBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5kYXRh LAotKwkJCSAgICBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplKTsKLSsJCSAgICBtZW1jcHkg KGRhdGEgKyBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplLAotKwkJCSAgICBhZGRpdGlvbmFs X2RhdGEsIGFkZGl0aW9uYWxfZGF0YV9zaXplKTsKLSsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5k YXRhID0gZGF0YTsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5zaXplID0gKERXX0JMT0NLICh0YXJn ZXRfYXR0ciktPnNpemUKLSsJCQkJCSAgICsgYWRkaXRpb25hbF9kYXRhX3NpemUpOwotKwkJICB9 Ci0rCQllbHNlCi0rCQkgIHsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sg KHRhcmdldF9hdHRyKS0+ZGF0YTsKLSsJCSAgICBiYXRvbi0+bG9jZXhwci5zaXplID0gRFdfQkxP Q0sgKHRhcmdldF9hdHRyKS0+c2l6ZTsKLSsJCSAgfQotKwotIAkJcHJvcC0+ZGF0YS5iYXRvbiA9 IGJhdG9uOwotIAkJcHJvcC0+a2luZCA9IFBST1BfTE9DRVhQUjsKLSAJCWdkYl9hc3NlcnQgKHBy b3AtPmRhdGEuYmF0b24gIT0gTlVMTCk7Ci1AQCAtMTUwMjcsMjQgKzE1MTMzLDI0IEBACi0gCi0g ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKLSAgIGlm IChhdHRyKQotLSAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAm c3RyaWRlKSkKLSsgICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg JnN0cmlkZSwgTlVMTCwgMCkpCi0gICAgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsIF8oIk1pc3NpbmcgRFdfQVRfYnl0ZV9zdHJpZGUgIgotICAgICAgICAgICAgICAgICAgICIt IERJRSBhdCAweCV4IFtpbiBtb2R1bGUgJXNdIiksCi0gICAgICAgICAgICAgIGRpZS0+b2Zmc2V0 LnNlY3Rfb2ZmLCBvYmpmaWxlX25hbWUgKGN1LT5vYmpmaWxlKSk7Ci0gCi0gICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLSAgIGlmIChhdHRyKQotLSAg ICBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmxvdyk7Ci0rICAgIGF0dHJf dG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93LCBOVUxMLCAwKTsKLSAgIGVsc2Ug aWYgKCFsb3dfZGVmYXVsdF9pc192YWxpZCkKLSAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLCBfKCJNaXNzaW5nIERXX0FUX2xvd2VyX2JvdW5kICIKLSAJCQkJICAgICAgIi0gRElF IGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKLSAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rfb2Zm LCBvYmpmaWxlX25hbWUgKGN1LT5vYmpmaWxlKSk7Ci0gCi0gICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmICghYXR0cl90b19keW5hbWljX3By b3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoKSkKLSsgIGlmICghYXR0cl90b19keW5hbWljX3Byb3Ag KGF0dHIsIGRpZSwgY3UsICZoaWdoLCBOVUxMLCAwKSkKLSAgICAgewotICAgICAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOwotLSAgICAgIGlmIChhdHRyX3RvX2R5 bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gpKQotKyAgICAgIGlmIChhdHRyX3RvX2R5 bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEwsIDApKQotIAl7Ci0gCSAgLyog SWYgYm91bmRzIGFyZSBjb25zdGFudCBkbyB0aGUgZmluYWwgY2FsY3VsYXRpb24gaGVyZS4gICov Ci0gCSAgaWYgKGxvdy5raW5kID09IFBST1BfQ09OU1QgJiYgaGlnaC5raW5kID09IFBST1BfQ09O U1QpCi1AQCAtMjI0MTYsNyArMjI1MjIsNyBAQAotICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2FsbG9jYXRlZCwgY3UpOwotICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp Ci0gICAgIHsKLS0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3Us ICZwcm9wKSkKLSsgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3Us ICZwcm9wLCBOVUxMLCAwKSkKLSAgICAgICAgIGFkZF9keW5fcHJvcCAoRFlOX1BST1BfQUxMT0NB VEVELCBwcm9wLCB0eXBlLCBvYmpmaWxlKTsKLSAgICAgfQotICAgZWxzZSBpZiAoYXR0ciAhPSBO VUxMKQotQEAgLTIyNDMxLDcgKzIyNTM3LDcgQEAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7Ci0gICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSkKLSAgICAgewotLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBj dSwgJnByb3ApKQotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBj dSwgJnByb3AsIE5VTEwsIDApKQotICAgICAgICAgYWRkX2R5bl9wcm9wIChEWU5fUFJPUF9BU1NP Q0lBVEVELCBwcm9wLCB0eXBlLCBvYmpmaWxlKTsKLSAgICAgfQotICAgZWxzZSBpZiAoYXR0ciAh PSBOVUxMKQotQEAgLTIyNDQ0LDcgKzIyNTUwLDcgQEAKLSAKLSAgIC8qIFJlYWQgRFdfQVRfZGF0 YV9sb2NhdGlvbiBhbmQgc2V0IGluIHR5cGUuICAqLwotICAgYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKLS0gIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJv cCAoYXR0ciwgZGllLCBjdSwgJnByb3ApKQotKyAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChh dHRyLCBkaWUsIGN1LCAmcHJvcCwgTlVMTCwgMCkpCi0gICAgIGFkZF9keW5fcHJvcCAoRFlOX1BS T1BfREFUQV9MT0NBVElPTiwgcHJvcCwgdHlwZSwgb2JqZmlsZSk7Ci0gCi0gICBpZiAoZHdhcmYy X3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID09IE5VTEwpCi1JbmRleDogZ2RiLTcuMTEuOTAu MjAxNjA4MDcvZ2RiL2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xMS45MC4yMDE2 MDgwNy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTYtMDgtMjUgMTY6MDg6MTcuMzk3NzE0OTM2ICsw MjAwCi0rKysgZ2RiLTcuMTEuOTAuMjAxNjA4MDcvZ2RiL2dkYnR5cGVzLmMJMjAxNi0wOC0yNSAx NjowOToxMS42MjMxODc2MjYgKzAyMDAKLUBAIC0xODUxLDYgKzE4NTEsNyBAQAotICAgICAgIH0K LSAKLSAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0rICAgIGNhc2UgVFlQRV9DT0RFX1NUUklO RzoKLSAgICAgICB7Ci0gCWdkYl9hc3NlcnQgKFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMSk7Ci0g Ci1AQCAtMTk2NCw3ICsxOTY1LDggQEAKLSAgIHN0cnVjdCB0eXBlICphcnlfZGltOwotICAgc3Ry dWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLSAKLS0gIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX0FSUkFZCi0rCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX1NUUklORyk7Ci0gCi0gICB0eXBlID0gY29weV90eXBlICh0eXBlKTsKLSAKLUBAIC0xOTg5 LDEzICsxOTkxLDE3IEBACi0gCi0gICBhcnlfZGltID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJH RVRfVFlQRSAoZWx0X3R5cGUpKTsKLSAKLS0gIGlmIChhcnlfZGltICE9IE5VTEwgJiYgVFlQRV9D T0RFIChhcnlfZGltKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0rICBpZiAoYXJ5X2RpbSAhPSBOVUxM ICYmIChUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9BUlJBWQotKyAgICAgIHx8IFRZ UEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX1NUUklORykpCi0gICAgIGVsdF90eXBlID0g cmVzb2x2ZV9keW5hbWljX2FycmF5IChhcnlfZGltLCBhZGRyX3N0YWNrKTsKLSAgIGVsc2UKLSAg ICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLSAKLS0gIHJldHVybiBjcmVh dGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAodHlwZSwgZWx0X3R5cGUsIHJhbmdlX3R5cGUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfRklFTERfQklUU0la RSAodHlwZSwgMCkpOwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUklO RykKLSsgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlwZSAodHlwZSwgZWx0X3R5cGUsIHJhbmdl X3R5cGUpOwotKyAgZWxzZQotKyAgICByZXR1cm4gY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9zdHJp ZGUgKHR5cGUsIGVsdF90eXBlLCByYW5nZV90eXBlLAotKwkJCQkJICBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUsIDApKTsKLSB9Ci0gCi0gLyogUmVzb2x2ZSBkeW5hbWljIGJvdW5kcyBvZiBtZW1i ZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRpYwotQEAgLTIyMDAsNiArMjIwNiw3IEBACi0g IAkgIGJyZWFrOwotIAotIAljYXNlIFRZUEVfQ09ERV9BUlJBWToKLSsJY2FzZSBUWVBFX0NPREVf U1RSSU5HOgotIAkgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHR5cGUs IGFkZHJfc3RhY2spOwotIAkgIGJyZWFrOwotIAotSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwODA3 L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMTEuOTAuMjAxNjA4MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5l eHAJMjAxNi0wOC0yNSAxNjowOToxMS42MjQxODc2MzUgKzAyMDAKLUBAIC0wLDAgKzEsMTAzIEBA Ci0rIyBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAi Ci0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0Zmls ZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFyZCBkYXRhdHlwZXMg d2lsbCBiZQotKyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBWTEEncwotKwotK2lm ICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZhcl9jaGFyLWFsbG9jYXRlZC0xIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyX2NoYXItYWxsb2NhdGVkLTEiCi0rc2V0IHRlc3QgIndoYXRpcyB2YXJfY2hhciBmaXJzdCB0 aW1lIgotK2dkYl90ZXN0X211bHRpcGxlICJ3aGF0aXMgdmFyX2NoYXIiICR0ZXN0IHsKLSsgICAg LXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoxMCBcXClcclxuJGdkYl9wcm9t cHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAidHlwZSA9IGNoYXJh Y3RlclxcKjEwXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQot K30KLStzZXQgdGVzdCAicHR5cGUgdmFyX2NoYXIgZmlyc3QgdGltZSIKLStnZGJfdGVzdF9tdWx0 aXBsZSAicHR5cGUgdmFyX2NoYXIiICR0ZXN0IHsKLSsgICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+ IFxcKCBjaGFyYWN0ZXJcXCoxMCBcXClcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAk dGVzdAotKyAgICB9Ci0rICAgIC1yZSAidHlwZSA9IGNoYXJhY3RlclxcKjEwXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLSsKLStnZGJfdGVzdCAi bmV4dCIgIlxcZCsuKnZhcl9jaGFyID0gJ2ZvbycuKiIgXAotKyAgIm5leHQgdG8gYWxsb2NhdGlv biBzdGF0dXMgb2YgdmFyX2NoYXIiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwu IiAicHJpbnQgYWxsb2NhdGlvbiBzdGF0dXMgZmlyc3QgdGltZSIKLSsKLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXItZmlsbGVkLTEiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJ2YXJfY2hhci1maWxsZWQtMSIKLStzZXQgdGVzdCAicHJpbnQg dmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0xIgotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCB2 YXJfY2hhciIgJHRlc3QgewotKyAgICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJc XCozIFxcKVxcKSAkaGV4XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgIGdkYl90ZXN0ICJw cmludCAqdmFyX2NoYXIiICI9ICdmb28nIiAicHJpbnQgKnZhcl9jaGFyLCB2YXJfY2hhci1maWxs ZWQtMSIKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIj0gJ2ZvbydcclxuJGdk Yl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK3NldCB0ZXN0ICJw dHlwZSB2YXJfY2hhciwgdmFyX2NoYXItZmlsbGVkLTEiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInB0 eXBlIHZhcl9jaGFyIiAkdGVzdCB7Ci0rICAgIC1yZSAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hh cmFjdGVyXFwqMyBcXClcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKyAg ICB9Ci0rICAgIC1yZSAidHlwZSA9IGNoYXJhY3RlclxcKjNcclxuJGdkYl9wcm9tcHQgJCIgewot KwkgICAgcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhcigx KSIgIiA9IDEwMiAnZiciICJwcmludCB2YXJfY2hhcigxKSIKLStnZGJfdGVzdCAicHJpbnQgdmFy X2NoYXIoMykiICIgPSAxMTEgJ28nIiAicHJpbnQgdmFyX2NoYXIoMykiCi0rCi0rCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWZpbGxlZC0yIl0KLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZmlsbGVkLTIiCi0rc2V0IHRlc3QgInBy aW50IHZhcl9jaGFyLCB2YXJfY2hhci1maWxsZWQtMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAicHJp bnQgdmFyX2NoYXIiICR0ZXN0IHsKLSsgICAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFj dGVyXFwqNiBcXClcXCkgJGhleFxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICBnZGJfdGVz dCAicHJpbnQgKnZhcl9jaGFyIiAiPSAnZm9vYmFyJyIgInByaW50ICp2YXJfY2hhciwgdmFyX2No YXItZmlsbGVkLTIiCi0rCSAgICBwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICI9ICdmb29i YXInXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotK30KLStz ZXQgdGVzdCAicHR5cGUgdmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0yIgotK2dkYl90ZXN0X211 bHRpcGxlICJwdHlwZSB2YXJfY2hhciIgJHRlc3QgewotKyAgICAtcmUgInR5cGUgPSBQVFIgVE8g LT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3Mg JHRlc3QKLSsgICAgfQotKyAgICAtcmUgInR5cGUgPSBjaGFyYWN0ZXJcXCo2XHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsgICAgfQotK30KLUluZGV4OiBnZGItNy4xMS45 MC4yMDE2MDgwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjExLjkwLjIwMTYwODA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXN0cmluZ3MuZjkwCTIwMTYtMDgtMjUgMTY6MDk6MTEuNjI0MTg3NjM1ICswMjAwCi1AQCAtMCww ICsxLDM5IEBACi0rISBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Byb2dyYW0gdmxhX3N0 cmluZ3MKLSsgIGNoYXJhY3RlcihsZW49OiksIHRhcmdldCwgYWxsb2NhdGFibGUgICA6OiB2YXJf Y2hhcgotKyAgY2hhcmFjdGVyKGxlbj06KSwgcG9pbnRlciAgICAgICAgICAgICAgIDo6IHZhcl9j aGFyX3AKLSsgIGxvZ2ljYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBsCi0r Ci0rICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTEwKSA6OiB2YXJfY2hhcikKLSsgIGwgPSBhbGxv Y2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRlZC0xCi0r ICB2YXJfY2hhciA9ICdmb28nCi0rICBkZWFsbG9jYXRlKHZhcl9jaGFyKSAgICAgICAgICAgICAg ICAgICAgISB2YXJfY2hhci1maWxsZWQtMQotKyAgbCA9IGFsbG9jYXRlZCh2YXJfY2hhcikgICAg ICAgICAgICAgICAgICEgdmFyX2NoYXItZGVhbGxvY2F0ZWQKLSsgIGFsbG9jYXRlKGNoYXJhY3Rl cihsZW49NDIpIDo6IHZhcl9jaGFyKQotKyAgbCA9IGFsbG9jYXRlZCh2YXJfY2hhcikKLSsgIHZh cl9jaGFyID0gJ2Zvb2JhcicKLSsgIHZhcl9jaGFyID0gJycgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhcl9jaGFyLWZpbGxlZC0yCi0rICB2YXJfY2hhciA9ICdiYXInICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJfY2hhci1lbXB0eQotKyAgZGVhbGxvY2F0ZSh2YXJfY2hhcikKLSsg IGFsbG9jYXRlKGNoYXJhY3RlcihsZW49MjEpIDo6IHZhcl9jaGFyKQotKyAgbCA9IGFsbG9jYXRl ZCh2YXJfY2hhcikgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItYWxsb2NhdGVkLTMKLSsgIHZh cl9jaGFyID0gJ2pvaG5kb2UnCi0rICB2YXJfY2hhcl9wID0+IHZhcl9jaGFyCi0rICBsID0gYXNz b2NpYXRlZCh2YXJfY2hhcl9wKSAgICAgICAgICAgICAgISB2YXJfY2hhcl9wLWFzc29jaWF0ZWQK LSsgIHZhcl9jaGFyX3AgPT4gbnVsbCgpCi0rICBsID0gYXNzb2NpYXRlZCh2YXJfY2hhcl9wKSAg ICAgICAgICAgICAgISB2YXJfY2hhcl9wLW5vdC1hc3NvY2lhdGVkCi0rZW5kIHByb2dyYW0gdmxh X3N0cmluZ3MKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLWJyYW5jaC1maXgtc3RyaWRlLTFv ZjIucGF0Y2ggYi9nZGItdmxhLWludGVsLWJyYW5jaC1maXgtc3RyaWRlLTFvZjIucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YzY2NzAuLjAwMDAwMDAKLS0tIGEvZ2RiLXZs YS1pbnRlbC1icmFuY2gtZml4LXN0cmlkZS0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NjQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTYtMDgv bXNnMDAyNzguaHRtbAotU3ViamVjdDogUmU6IFtWNCAwMC8yMV0gRm9ydHJhbiBkeW5hbWljIGFy cmF5IHN1cHBvcnQKLQotCi0tLVgxYk9KM0s3REo1WWtCclQKLUNvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lCi0KLU9u IFRodSwgMjUgQXVnIDIwMTYgMTk6MjI6MTcgKzAyMDAsIEphbiBLcmF0b2NodmlsIHdyb3RlOgot PiBJIHNlZSB0aGUgc291cmNlIGhhbmRsZXMgbmVnYXRpdmUgc3RpZGUgc3BlY2lhbGx5LiAgUGFy dGljdWxhcmx5IHRoZSBjb21tZW50Ci0+IGhlcmUgZG9lcyBub3QgZXhwbGFpbiB0aGUgY29kZSBp dCBjb21tZW50czoKLQotV2l0aCB0aGUgYXR0YWNoZWQgcGF0Y2ggZGlzYWJsaW5nIHRoZXNlIGNh c2VzIHN0aWxsIHRoZSBzdXBwbGllZAotZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAgYW5k IGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwIFBBU1MgKG9uIEZlZG9yYSAyNAoteDg2XzY0KS4K LQotCi1KYW4KLQotLS1YMWJPSjNLN0RKNVlrQnJUCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9 MQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXgg ODg4MDFhYy4uNjk1ODI1YSAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIv Z2RidHlwZXMuYwotQEAgLTIxOTcsMTIgKzIxOTcsMTQgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGVf aW50ZXJuYWwgKHN0cnVjdCB0eXBlICp0eXBlLAotICAgICB7Ci0gICAgICAgc3RydWN0IHR5cGUg KnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHJlc29sdmVkX3R5cGUpOwotIAotKyNpZiAw IC8vIEZlZG9yYTogZ2RiLXZsYS1pbnRlbC1icmFuY2gtZml4LXN0cmlkZS5wYXRjaAotICAgICAg IC8qIEFkanVzdCB0aGUgZGF0YSBsb2NhdGlvbiB3aXRoIHRoZSB2YWx1ZSBvZiBieXRlIHN0cmlk ZSBpZiBzZXQsIHdoaWNoCi0gICAgICAgICAgY2FuIGRlc2NyaWJlIHRoZSBzZXBhcmF0aW9uIGJl dHdlZW4gc3VjY2Vzc2l2ZSBlbGVtZW50cyBhbG9uZyB0aGUKLSAgICAgICAgICBkaW1lbnNpb24u ICAqLwotICAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSA8IDApCi0gICAg ICAgICB2YWx1ZSArPSAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9XX0JP VU5EIChyYW5nZV90eXBlKSkKLSAgICAgICAgICAgICAgICAgICAqIFRZUEVfQllURV9TVFJJREUg KHJhbmdlX3R5cGUpOwotKyNlbmRpZgotIAotICAgICAgIFRZUEVfREFUQV9MT0NBVElPTl9BRERS IChyZXNvbHZlZF90eXBlKSA9IHZhbHVlOwotICAgICAgIFRZUEVfREFUQV9MT0NBVElPTl9LSU5E IChyZXNvbHZlZF90eXBlKSA9IFBST1BfQ09OU1Q7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRo LmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggOTA5Mzk2OS4uZWNhNzk5MiAxMDA2NDQKLS0tLSBh L2dkYi92YWxhcml0aC5jCi0rKysgYi9nZGIvdmFsYXJpdGguYwotQEAgLTE5OSwxMiArMTk5LDE0 IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VT VCBpbmRleCwgaW50IGxvd2VyYm91bmQpCi0gCi0gICBpZiAoZWx0X3N0cmlkZSA+IDApCi0gICAg IGVsdF9vZmZzICo9IGVsdF9zdHJpZGU7Ci0rI2lmIDAgLy8gRmVkb3JhOiBnZGItdmxhLWludGVs LWJyYW5jaC1maXgtc3RyaWRlLnBhdGNoCi0gICBlbHNlIGlmIChlbHRfc3RyaWRlIDwgMCkKLSAg ICAgewotICAgICAgIGludCBvZmZzID0gKGVsdF9vZmZzICsgMSkgKiBlbHRfc3RyaWRlOwotIAot ICAgICAgIGVsdF9vZmZzID0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpICsgb2ZmczsKLSAgICAg fQotKyNlbmRpZgotICAgZWxzZQotICAgICBlbHRfb2ZmcyAqPSBlbHRfc2l6ZTsKLSAKLQotLS1Y MWJPSjNLN0RKNVlrQnJULS0KLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtYnJhbmNoLWZp eC1zdHJpZGUtMm9mMi5wYXRjaCBiL2dkYi12bGEtaW50ZWwtYnJhbmNoLWZpeC1zdHJpZGUtMm9m Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0MGQwZS4uMDAwMDAwMAot LS0gYS9nZGItdmxhLWludGVsLWJyYW5jaC1maXgtc3RyaWRlLTJvZjIucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw5MjkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTYtMDgvbXNnMDAyNzQuaHRtbAotU3ViamVjdDogUmU6IFtWNCAwMC8yMV0gRm9ydHJh biBkeW5hbWljIGFycmF5IHN1cHBvcnQKLQotCi0tLVZiSmtuOVl4QnZudUNINUoKLUNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjog aW5saW5lCi0KLU9uIFR1ZSwgMjMgQXVnIDIwMTYgMTU6MzQ6MDkgKzAyMDAsIEJlcm5oYXJkIEhl Y2tlbCB3cm90ZToKLT4gY3JlYXRlZCBhIGJyYW5jaCB3aXRoIGFsbCBzdHJpZGUgcGF0Y2hlcy4K LQotdXNlcnMvYmhlY2tlbC9mb3J0cmFuLXN0cmlkZXMKLTJjMzkyZDQxYTNmMmUzOGRlZWI5ZGI1 YjdhOTNjYTQ1NjgyYmJlM2IKLQotPiBJIGRvbid0IHNlZSByZWdyZXNzaW9uIG9uIFJINy4xLCBn Y2MgNC44LjMtOQotCi1JIHNlZSBhIHJlZ3Jlc3Npb24gZm9yIDMyLWJpdCB0YXJnZXRzICh4ODZf NjQtbTMyIG9yIG5hdGl2ZSBpNjg2KQotb24gRmVkb3JhIDI0IChnY2MtZ2ZvcnRyYW4tNi4xLjEt My5mYzI0Lng4Nl82NCkuICBJIGRvIG5vdCBzZWUgdGhlIHJlZ3Jlc3Npb24KLW9uIENlbnRPUy03 LjIgKHg4Nl82NC1tMzIpLgotCi1wcmludCBwdmxhXk0KLXZhbHVlIHJlcXVpcmVzIDQyOTQ5Njcy ODggYnl0ZXMsIHdoaWNoIGlzIG1vcmUgdGhhbiBtYXgtdmFsdWUtc2l6ZV5NCi0oZ2RiKSBGQUlM OiBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cDogcHJpbnQgc2luZ2xlLWVsZW1lbnQKLQotSSBo YXZlIGF0dGFjaGVkIGEgZml4LgotCi1JdCBpcyBiZWNhdXNlOgotICAgIDwxMTU+ICAgRFdfQVRf bG93ZXJfYm91bmQgOiA0IGJ5dGUgYmxvY2s6IDk3IDIzIDEwIDYgICAgICAgIChEV19PUF9wdXNo X29iamVjdF9hZGRyZXNzOyBEV19PUF9wbHVzX3Vjb25zdDogMTY7IERXX09QX2RlcmVmKQotICAg IDwxMWE+ICAgRFdfQVRfdXBwZXJfYm91bmQgOiA0IGJ5dGUgYmxvY2s6IDk3IDIzIDE0IDYgICAg ICAgIChEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOyBEV19PUF9wbHVzX3Vjb25zdDogMjA7IERX X09QX2RlcmVmKQotICAgIDwxMWY+ICAgRFdfQVRfYnl0ZV9zdHJpZGUgOiA2IGJ5dGUgYmxvY2s6 IDk3IDIzIGMgNiAzNCAxZSAgIChEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOyBEV19PUF9wbHVz X3Vjb25zdDogMTI7IERXX09QX2RlcmVmOyBEV19PUF9saXQ0OyBEV19PUF9tdWwpCi0JRFdfQVRf bG93ZXJfYm91bmQgPT0gMQotCURXX0FUX3VwcGVyX2JvdW5kID09IDEKLQlEV19BVF9ieXRlX3N0 cmlkZSA9PSAoLTIpICogNCA9PSAtOAotCi1JIGFtIG5vdCBzdXJlIGlmIGdmb3J0cmFuIGlzIHJl YWxseSB3cm9uZyBvciBub3QgYnV0IGEgc3RyaWRlIGRvZXMgbm90IG1ha2UKLXNlbnNlIGZvciBt ZSBmb3IgYSBzaW5nbGUgcm93IGFycmF5LgotCi1BdHRhY2hpbmcgYWxzbyBnZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmY5MCBmcm9tIHlvdXIgYnJhbmNoIGJ1aWx0IHdpdGgKLWdjYy1nZm9ydHJhbi02 LjEuMS0zLmZjMjQueDg2XzY0IG9uIEZlZG9yYSAyNCB4ODZfNjQgaW4gLW0zMiBtb2RlLgotCi1C ZXNpZGVzIHRoYXQgSSBzZWUgb24gYWxsIGFyY2hzCi0JLUZBSUw6IGdkYi5wYXNjYWwvYXJyYXlz LmV4cDogUHJpbnQgZHluYW1pYyBhcnJheSBvZiBzdHJpbmcKLQkrRkFJTDogZ2RiLnBhc2NhbC9h cnJheXMuZXhwOiBQcmludCBkeW5hbWljIGFycmF5IG9mIHN0cmluZyAoR0RCIGludGVybmFsIGVy cm9yKQotYnV0IHRoYXQgdGVzdGNhc2UgaXMgb25seSBpbiBGZWRvcmEgYW5kIHRoZSBQYXNjYWwg KGZwYykgc3VwcG9ydCBoYXMgYmVlbiBub3QKLXdlbGwgbWFpbnRhaW5lZCBzbyBmYXIgc28gSSBh bSBPSyB3aXRoIHRoYXQuCi0KLQotVGhhbmtzLAotSmFuCi0KLS0tVmJKa245WXhCdm51Q0g1Sgot Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bv c2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPTEKLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5j IGIvZ2RiL2dkYnR5cGVzLmMKLWluZGV4IDg4ODAxYWMuLjFmYmY2OWEgMTAwNjQ0Ci0tLS0gYS9n ZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0xMTAzLDEwICsxMTAzLDEy IEBAIGNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5 cGUsCi0gICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCi0gCVRZUEVfTEVOR1RIIChy ZXN1bHRfdHlwZSkgPSAwOwotICAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKLS0JVFlQ RV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3df Ym91bmQgKyAxKTsKLSsJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IChieXRlX3N0cmlkZSAq IChoaWdoX2JvdW5kIC0gbG93X2JvdW5kKQotKwkJCQkgICAgICsgVFlQRV9MRU5HVEggKGVsZW1l bnRfdHlwZSkpOwotICAgICAgIGVsc2UgaWYgKGJpdF9zdHJpZGUgPiAwKQotIAlUWVBFX0xFTkdU SCAocmVzdWx0X3R5cGUpID0KLS0JICAoYml0X3N0cmlkZSAqIChoaWdoX2JvdW5kIC0gbG93X2Jv dW5kICsgMSkgKyA3KSAvIDg7Ci0rCSAgKChiaXRfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3df Ym91bmQpICsgNykgLyA4Ci0rCSAgICsgVFlQRV9MRU5HVEggKGVsZW1lbnRfdHlwZSkpOwotICAg ICAgIGVsc2UKLSAJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0gCSAgVFlQRV9MRU5HVEgg KGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwotCi0tLVZiSmtu OVl4QnZudUNINUoKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQot Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InZsYS1zdHJpZGUucyIK LQotCS5maWxlCSJ2bGEtc3RyaWRlLmY5MCIKLQkudGV4dAotLkx0ZXh0MDoKLQkuc2VjdGlvbgku cm9kYXRhCi0JLmFsaWduIDQKLS5MQzA6Ci0JLnN0cmluZwkiSW50ZWdlciBvdmVyZmxvdyB3aGVu IGNhbGN1bGF0aW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRvIGFsbG9jYXRlIgotLkxDMToKLQku c3RyaW5nCSJ2bGEiCi0JLmFsaWduIDQKLS5MQzI6Ci0JLnN0cmluZwkiQXR0ZW1wdGluZyB0byBh bGxvY2F0ZSBhbHJlYWR5IGFsbG9jYXRlZCB2YXJpYWJsZSAnJXMnIgotCS5hbGlnbiA0Ci0uTEMz OgotCS5zdHJpbmcJIkF0IGxpbmUgMjAgb2YgZmlsZSBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5 MCIKLQkuYWxpZ24gNAotLkxDNDoKLQkuc3RyaW5nCSJBbGxvY2F0aW9uIHdvdWxkIGV4Y2VlZCBt ZW1vcnkgbGltaXQiCi0JLnRleHQKLQkudHlwZQlNQUlOX18sIEBmdW5jdGlvbgotTUFJTl9fOgot LkxGQjA6Ci0JLmZpbGUgMSAiZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAiCi0JIyBnZGIuZm9y dHJhbi92bGEtc3RyaWRlLmY5MDoxNgotCS5sb2MgMSAxNiAwCi0JLmNmaV9zdGFydHByb2MKLSMg QkxPQ0sgMiBzZXE6MAotIyBQUkVEOiBFTlRSWSAoRkFMTFRIUlUpCi0JcHVzaGwJJWVicAotCS5j ZmlfZGVmX2NmYV9vZmZzZXQgOAotCS5jZmlfb2Zmc2V0IDUsIC04Ci0JbW92bAklZXNwLCAlZWJw Ci0JLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDUKLQlwdXNobAklZWRpCi0JcHVzaGwJJWVzaQotCXB1 c2hsCSVlYngKLQlzdWJsCSQ2MCwgJWVzcAotCS5jZmlfb2Zmc2V0IDcsIC0xMgotCS5jZmlfb2Zm c2V0IDYsIC0xNgotCS5jZmlfb2Zmc2V0IDMsIC0yMAotCSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlk ZS5mOTA6MTcKLQkubG9jIDEgMTcgMAotCW1vdmwJJDAsIC03MiglZWJwKQotLkxCQjI6Ci0JIyBn ZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMAotCS5sb2MgMSAyMCAwCi0JbW92bAkkMCwgJWVh eAotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMyAoRkFMTFRIUlUpIDQKLQlqZQkuTDIKLSMg QkxPQ0sgMyBzZXE6MQotIyBQUkVEOiAyIChGQUxMVEhSVSkKLQkjIGdkYi5mb3J0cmFuL3ZsYS1z dHJpZGUuZjkwOjIwCi0JLmxvYyAxIDIwIDAgaXNfc3RtdCAwIGRpc2NyaW1pbmF0b3IgMQotCXN1 YmwJJDEyLCAlZXNwCi0JcHVzaGwJJC5MQzAKLSMgU1VDQzoKLQljYWxsCV9nZm9ydHJhbl9ydW50 aW1lX2Vycm9yCi0jIEJMT0NLIDQgc2VxOjIKLSMgUFJFRDogMgotLkwyOgotCSMgZ2RiLmZvcnRy YW4vdmxhLXN0cmlkZS5mOTA6MjAKLQkubG9jIDEgMjAgMCBkaXNjcmltaW5hdG9yIDIKLQltb3Zs CS03MiglZWJwKSwgJWVheAotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogNSAoRkFMTFRIUlUp IDYKLQlqZQkuTDMKLSMgQkxPQ0sgNSBzZXE6MwotIyBQUkVEOiA0IChGQUxMVEhSVSkKLQkjIGdk Yi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjIwCi0JLmxvYyAxIDIwIDAgZGlzY3JpbWluYXRvciAz Ci0Jc3VibAkkNCwgJWVzcAotCXB1c2hsCSQuTEMxCi0JcHVzaGwJJC5MQzIKLQlwdXNobAkkLkxD MwotIyBTVUNDOgotCWNhbGwJX2dmb3J0cmFuX3J1bnRpbWVfZXJyb3JfYXQKLSMgQkxPQ0sgNiBz ZXE6NAotIyBQUkVEOiA0Ci0uTDM6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMAot CS5sb2MgMSAyMCAwIGRpc2NyaW1pbmF0b3IgNAotCXN1YmwJJDEyLCAlZXNwCi0JcHVzaGwJJDQw Ci0JY2FsbAltYWxsb2MKLQlhZGRsCSQxNiwgJWVzcAotCW1vdmwJJWVheCwgLTcyKCVlYnApCi0J bW92bAktNzIoJWVicCksICVlYXgKLQl0ZXN0bAklZWF4LCAlZWF4Ci0jIFNVQ0M6IDcgKEZBTExU SFJVKSA4Ci0Jam5lCS5MNAotIyBCTE9DSyA3IHNlcTo1Ci0jIFBSRUQ6IDYgKEZBTExUSFJVKQot CSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjAKLQkubG9jIDEgMjAgMCBkaXNjcmltaW5h dG9yIDUKLQlzdWJsCSQxMiwgJWVzcAotCXB1c2hsCSQuTEM0Ci0jIFNVQ0M6Ci0JY2FsbAlfZ2Zv cnRyYW5fb3NfZXJyb3IKLSMgQkxPQ0sgOCBzZXE6NgotIyBQUkVEOiA2Ci0uTDQ6Ci0JIyBnZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMAotCS5sb2MgMSAyMCAwIGRpc2NyaW1pbmF0b3IgNgot CW1vdmwJJDI2NSwgLTY0KCVlYnApCi0JbW92bAkkMSwgLTU2KCVlYnApCi0JbW92bAkkMTAsIC01 MiglZWJwKQotCW1vdmwJJDEsIC02MCglZWJwKQotCW1vdmwJJC0xLCAtNjgoJWVicCkKLS5MQkIz OgotCSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjEKLQkubG9jIDEgMjEgMCBpc19zdG10 IDEgZGlzY3JpbWluYXRvciA2Ci0JbW92bAktNzIoJWVicCksICVlZHgKLQltb3ZsCS02OCglZWJw KSwgJWVzaQotCW1vdmwJLTU2KCVlYnApLCAlZWJ4Ci0uTEJCNDoKLS5MQkI1OgotCW1vdmwJLTcy KCVlYnApLCAlZWF4Ci0JdGVzdGwJJWVheCwgJWVheAotCXNldGUJJWFsCi0JbW92emJsCSVhbCwg JWVheAotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMTAgOSAoRkFMTFRIUlUpCi0Jam5lCS5M NQotIyBCTE9DSyA5IHNlcTo3Ci0jIFBSRUQ6IDggKEZBTExUSFJVKQotCSMgZ2RiLmZvcnRyYW4v dmxhLXN0cmlkZS5mOTA6MjEKLQkubG9jIDEgMjEgMCBpc19zdG10IDAgZGlzY3JpbWluYXRvciAy Ci0JbW92bAktNTYoJWVicCksICVlY3gKLQlsZWFsCTkoJWVjeCksICVlZGkKLQltb3ZsCS01Migl ZWJwKSwgJWVjeAotCWNtcGwJJWVjeCwgJWVkaQotIyBTVUNDOiAxMCAoRkFMTFRIUlUpIDE4Ci0J amUJLkw2Ci0jIEJMT0NLIDEwIHNlcTo4Ci0jIFBSRUQ6IDggOSAoRkFMTFRIUlUpCi0uTDU6Ci0J IyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0 b3IgMwotCXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMTEgKEZBTExUSFJVKSAxMgotCWplCS5M NwotIyBCTE9DSyAxMSBzZXE6OQotIyBQUkVEOiAxMCAoRkFMTFRIUlUpCi0JIyBnZGIuZm9ydHJh bi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgNAotCW1vdmwJ JDAsICVlYXgKLSMgU1VDQzogMTMgWzEwMC4wJV0gCi0Jam1wCS5MOAotIyBCTE9DSyAxMiBzZXE6 MTAKLSMgUFJFRDogMTAKLS5MNzoKLQkjIGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjIxCi0J LmxvYyAxIDIxIDAgZGlzY3JpbWluYXRvciA1Ci0JbW92bAktNTIoJWVicCksICVlZHgKLQltb3Zs CS01NiglZWJwKSwgJWVheAotCXN1YmwJJWVheCwgJWVkeAotCW1vdmwJJWVkeCwgJWVheAotCWFk ZGwJJDEsICVlYXgKLQltb3ZsCSQwLCAlZWR4Ci0JdGVzdGwJJWVheCwgJWVheAotIyBTVUNDOiAx MyAoRkFMTFRIUlUpCi0JY21vdnMJJWVkeCwgJWVheAotIyBCTE9DSyAxMyBzZXE6MTEKLSMgUFJF RDogMTIgKEZBTExUSFJVKSAxMSBbMTAwLjAlXSAKLS5MODoKLQkjIGdkYi5mb3J0cmFuL3ZsYS1z dHJpZGUuZjkwOjIxCi0JLmxvYyAxIDIxIDAgZGlzY3JpbWluYXRvciA3Ci0JY21wbAkkMTAsICVl YXgKLQlzZXRuZQklYWwKLQltb3Z6YmwJJWFsLCAlZWF4Ci0JbW92bAkkMSwgLTU2KCVlYnApCi0J bW92bAkkMTAsIC01MiglZWJwKQotCW1vdmwJJDEsIC02MCglZWJwKQotCW1vdmwJLTU2KCVlYnAp LCAlZWR4Ci0JbmVnbAklZWR4Ci0JbW92bAklZWR4LCAtNjgoJWVicCkKLQltb3ZsCS02OCglZWJw KSwgJWVzaQotCW1vdmwJLTU2KCVlYnApLCAlZWJ4Ci0JbW92bAktNzIoJWVicCksICVlZHgKLQl0 ZXN0bAklZWR4LCAlZWR4Ci0jIFNVQ0M6IDE0IChGQUxMVEhSVSkgMTUKLQlqbmUJLkw5Ci0jIEJM T0NLIDE0IHNlcToxMgotIyBQUkVEOiAxMyAoRkFMTFRIUlUpCi0JIyBnZGIuZm9ydHJhbi92bGEt c3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgOAotCXN1YmwJJDEyLCAl ZXNwCi0JcHVzaGwJJDQwCi0JY2FsbAltYWxsb2MKLQlhZGRsCSQxNiwgJWVzcAotCW1vdmwJJWVh eCwgLTcyKCVlYnApCi0JbW92bAkkMjY1LCAtNjQoJWVicCkKLSMgU1VDQzogMTcgWzEwMC4wJV0g Ci0Jam1wCS5MMTAKLSMgQkxPQ0sgMTUgc2VxOjEzCi0jIFBSRUQ6IDEzCi0uTDk6Ci0JIyBnZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgOQot CXRlc3RsCSVlYXgsICVlYXgKLSMgU1VDQzogMTYgKEZBTExUSFJVKSAxNwotCWplCS5MMTAKLSMg QkxPQ0sgMTYgc2VxOjE0Ci0jIFBSRUQ6IDE1IChGQUxMVEhSVSkKLQkjIGdkYi5mb3J0cmFuL3Zs YS1zdHJpZGUuZjkwOjIxCi0JLmxvYyAxIDIxIDAgZGlzY3JpbWluYXRvciAxMQotCW1vdmwJLTcy KCVlYnApLCAlZWF4Ci0Jc3VibAkkOCwgJWVzcAotCXB1c2hsCSQ0MAotCXB1c2hsCSVlYXgKLQlj YWxsCXJlYWxsb2MKLQlhZGRsCSQxNiwgJWVzcAotIyBTVUNDOiAxNyAoRkFMTFRIUlUpCi0JbW92 bAklZWF4LCAtNzIoJWVicCkKLSMgQkxPQ0sgMTcgc2VxOjE1Ci0jIFBSRUQ6IDE2IChGQUxMVEhS VSkgMTUgMTQgWzEwMC4wJV0gCi0uTDEwOgotIyBTVUNDOiAxOCAoRkFMTFRIUlUpCi0JIyBnZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgMTMK LQltb3ZsCS03MiglZWJwKSwgJWVkeAotIyBCTE9DSyAxOCBzZXE6MTYKLSMgUFJFRDogOSAxNyAo RkFMTFRIUlUpCi0uTDY6Ci0uTEJFNToKLSMgU1VDQzogMTkgKEZBTExUSFJVKQotCSMgZ2RiLmZv cnRyYW4vdmxhLXN0cmlkZS5mOTA6MjEKLQkubG9jIDEgMjEgMCBkaXNjcmltaW5hdG9yIDE0Ci0J bW92bAkkMCwgJWVheAotIyBCTE9DSyAxOSBzZXE6MTcKLSMgUFJFRDogMTggKEZBTExUSFJVKSAy MCBbMTAwLjAlXSAKLS5MMTI6Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5s b2MgMSAyMSAwIGRpc2NyaW1pbmF0b3IgMTcKLQljbXBsCSQ5LCAlZWF4Ci0jIFNVQ0M6IDIxIDIw IChGQUxMVEhSVSkKLQlqZwkuTDExCi0jIEJMT0NLIDIwIHNlcToxOAotIyBQUkVEOiAxOSAoRkFM TFRIUlUpCi0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMQotCS5sb2MgMSAyMSAwIGRp c2NyaW1pbmF0b3IgMTYKLQlsZWFsCSglZWF4LCVlYngpLCAlZWN4Ci0JbGVhbAkoJWVjeCwlZXNp KSwgJWVkaQotCW1vdmwJQS4xLjMzNjgoLCVlYXgsNCksICVlY3gKLQltb3ZsCSVlY3gsICglZWR4 LCVlZGksNCkKLQlhZGRsCSQxLCAlZWF4Ci0jIFNVQ0M6IDE5IFsxMDAuMCVdIAotCWptcAkuTDEy Ci0jIEJMT0NLIDIxIHNlcToxOQotIyBQUkVEOiAxOQotLkwxMToKLS5MQkU0OgotLkxCRTM6Ci0J IyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyMwotCS5sb2MgMSAyMyAwIGlzX3N0bXQgMQot CW1vdmwJJDI2NSwgLTQwKCVlYnApCi0JbW92bAkkMSwgLTMyKCVlYnApCi0JbW92bAkkMTAsIC0y OCglZWJwKQotCW1vdmwJJC0xLCAtMzYoJWVicCkKLQltb3ZsCS03MiglZWJwKSwgJWVheAotCW1v dmwJLTU2KCVlYnApLCAlZWR4Ci0JbW92bAkkMTAsICVlY3gKLQlzdWJsCSVlZHgsICVlY3gKLQlt b3ZsCSVlY3gsICVlZHgKLQlzYWxsCSQyLCAlZWR4Ci0JYWRkbAklZWR4LCAlZWF4Ci0JbW92bAkl ZWF4LCAtNDgoJWVicCkKLQltb3ZsCSQxLCAtNDQoJWVicCkKLS5MQkI2OgotCSMgZ2RiLmZvcnRy YW4vdmxhLXN0cmlkZS5mOTA6MjQKLQkubG9jIDEgMjQgMAotCW1vdmwJJDI2NSwgLTQwKCVlYnAp Ci0JbW92bAktMzYoJWVicCksICVlYXgKLQltb3ZsCSQxLCAtMzIoJWVicCkKLQltb3ZsCSQxMCwg LTI4KCVlYnApCi0JbW92bAklZWF4LCAlZWR4Ci0JbmVnbAklZWR4Ci0JbW92bAklZWR4LCAtMzYo JWVicCkKLQltb3ZsCS00OCglZWJwKSwgJWVkeAotCW1vdmwJLTMyKCVlYnApLCAlZWN4Ci0JbW92 bAkkMTAsICVlYngKLQlzdWJsCSVlY3gsICVlYngKLQltb3ZsCSVlYngsICVlY3gKLQlpbXVsbAkl ZWF4LCAlZWN4Ci0Jc2FsbAkkMiwgJWVjeAotCWFkZGwJJWVjeCwgJWVkeAotCW1vdmwJJWVkeCwg LTQ4KCVlYnApCi0JbW92bAklZWF4LCAtNDQoJWVicCkKLS5MQkU2OgotCSMgZ2RiLmZvcnRyYW4v dmxhLXN0cmlkZS5mOTA6MjUKLQkubG9jIDEgMjUgMAotCW1vdmwJJDI2NSwgLTQwKCVlYnApCi0J bW92bAkkMSwgLTMyKCVlYnApCi0JbW92bAkkNSwgLTI4KCVlYnApCi0JbW92bAkkMiwgLTM2KCVl YnApCi0JbW92bAktNzIoJWVicCksICVlYXgKLQltb3ZsCS01NiglZWJwKSwgJWVkeAotCW1vdmwJ JDEsICVlY3gKLQlzdWJsCSVlZHgsICVlY3gKLQltb3ZsCSVlY3gsICVlZHgKLQlzYWxsCSQyLCAl ZWR4Ci0JYWRkbAklZWR4LCAlZWF4Ci0JbW92bAklZWF4LCAtNDgoJWVicCkKLQltb3ZsCSQtMiwg LTQ0KCVlYnApCi0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyNgotCS5sb2MgMSAyNiAw Ci0JbW92bAkkMjY1LCAtNDAoJWVicCkKLQltb3ZsCSQxLCAtMzIoJWVicCkKLQltb3ZsCSQxLCAt MjgoJWVicCkKLQltb3ZsCSQtMiwgLTM2KCVlYnApCi0JbW92bAktNzIoJWVicCksICVlYXgKLQlt b3ZsCS01NiglZWJwKSwgJWVkeAotCW1vdmwJJDUsICVlY3gKLQlzdWJsCSVlZHgsICVlY3gKLQlt b3ZsCSVlY3gsICVlZHgKLQlzYWxsCSQyLCAlZWR4Ci0JYWRkbAklZWR4LCAlZWF4Ci0JbW92bAkl ZWF4LCAtNDgoJWVicCkKLQltb3ZsCSQyLCAtNDQoJWVicCkKLQkjIGdkYi5mb3J0cmFuL3ZsYS1z dHJpZGUuZjkwOjI4Ci0JLmxvYyAxIDI4IDAKLQltb3ZsCSQwLCAtNDgoJWVicCkKLS5MQkUyOgot CSMgZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTA6MjkKLQkubG9jIDEgMjkgMAotCW5vcAotCWxl YWwJLTEyKCVlYnApLCAlZXNwCi0JcG9wbAklZWJ4Ci0JLmNmaV9yZXN0b3JlIDMKLQlwb3BsCSVl c2kKLQkuY2ZpX3Jlc3RvcmUgNgotCXBvcGwJJWVkaQotCS5jZmlfcmVzdG9yZSA3Ci0JcG9wbAkl ZWJwCi0JLmNmaV9yZXN0b3JlIDUKLQkuY2ZpX2RlZl9jZmEgNCwgNAotIyBTVUNDOiBFWElUIFsx MDAuMCVdIAotCXJldAotCS5jZmlfZW5kcHJvYwotLkxGRTA6Ci0JLnNpemUJTUFJTl9fLCAuLU1B SU5fXwotCS5nbG9ibAltYWluCi0JLnR5cGUJbWFpbiwgQGZ1bmN0aW9uCi1tYWluOgotLkxGQjE6 Ci0JIyBnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MDoyOQotCS5sb2MgMSAyOSAwCi0JLmNmaV9z dGFydHByb2MKLSMgQkxPQ0sgMiBzZXE6MAotIyBQUkVEOiBFTlRSWSAoRkFMTFRIUlUpCi0JbGVh bAk0KCVlc3ApLCAlZWN4Ci0JLmNmaV9kZWZfY2ZhIDEsIDAKLQlhbmRsCSQtMTYsICVlc3AKLQlw dXNobAktNCglZWN4KQotCXB1c2hsCSVlYnAKLQkuY2ZpX2VzY2FwZSAweDEwLDB4NSwweDIsMHg3 NSwwCi0JbW92bAklZXNwLCAlZWJwCi0JcHVzaGwJJWVjeAotCS5jZmlfZXNjYXBlIDB4ZiwweDMs MHg3NSwweDdjLDB4NgotCXN1YmwJJDQsICVlc3AKLQltb3ZsCSVlY3gsICVlYXgKLQkjIGdkYi5m b3J0cmFuL3ZsYS1zdHJpZGUuZjkwOjI5Ci0JLmxvYyAxIDI5IDAKLQlzdWJsCSQ4LCAlZXNwCi0J cHVzaGwJNCglZWF4KQotCXB1c2hsCSglZWF4KQotCWNhbGwJX2dmb3J0cmFuX3NldF9hcmdzCi0J YWRkbAkkMTYsICVlc3AKLQlzdWJsCSQ4LCAlZXNwCi0JcHVzaGwJJG9wdGlvbnMuMy4zMzgyCi0J cHVzaGwJJDkKLQljYWxsCV9nZm9ydHJhbl9zZXRfb3B0aW9ucwotCWFkZGwJJDE2LCAlZXNwCi0J Y2FsbAlNQUlOX18KLQltb3ZsCSQwLCAlZWF4Ci0JbW92bAktNCglZWJwKSwgJWVjeAotCS5jZmlf ZGVmX2NmYSAxLCAwCi0JbGVhdmUKLQkuY2ZpX3Jlc3RvcmUgNQotCWxlYWwJLTQoJWVjeCksICVl c3AKLQkuY2ZpX2RlZl9jZmEgNCwgNAotIyBTVUNDOiBFWElUIFsxMDAuMCVdIAotCXJldAotCS5j ZmlfZW5kcHJvYwotLkxGRTE6Ci0JLnNpemUJbWFpbiwgLi1tYWluCi0JLnNlY3Rpb24JLnJvZGF0 YQotCS5hbGlnbiAzMgotCS50eXBlCUEuMS4zMzY4LCBAb2JqZWN0Ci0JLnNpemUJQS4xLjMzNjgs IDQwCi1BLjEuMzM2ODoKLQkubG9uZwkxCi0JLmxvbmcJMgotCS5sb25nCTMKLQkubG9uZwk0Ci0J LmxvbmcJNQotCS5sb25nCTYKLQkubG9uZwk3Ci0JLmxvbmcJOAotCS5sb25nCTkKLQkubG9uZwkx MAotCS5hbGlnbiAzMgotCS50eXBlCW9wdGlvbnMuMy4zMzgyLCBAb2JqZWN0Ci0JLnNpemUJb3B0 aW9ucy4zLjMzODIsIDM2Ci1vcHRpb25zLjMuMzM4MjoKLQkubG9uZwk2OAotCS5sb25nCTEwMjMK LQkubG9uZwkwCi0JLmxvbmcJMAotCS5sb25nCTEKLQkubG9uZwkxCi0JLmxvbmcJMAotCS5sb25n CTAKLQkubG9uZwkzMQotCS50ZXh0Ci0uTGV0ZXh0MDoKLQkuc2VjdGlvbgkuZGVidWdfaW5mbywi IixAcHJvZ2JpdHMKLS5MZGVidWdfaW5mbzA6Ci0JLmxvbmcJMHgxMjgJIyBMZW5ndGggb2YgQ29t cGlsYXRpb24gVW5pdCBJbmZvCi0JLnZhbHVlCTB4NAkjIERXQVJGIHZlcnNpb24gbnVtYmVyCi0J LmxvbmcJLkxkZWJ1Z19hYmJyZXYwCSMgT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uCi0JLmJ5 dGUJMHg0CSMgUG9pbnRlciBTaXplIChpbiBieXRlcykKLQkudWxlYjEyOCAweDEJIyAoRElFICgw eGIpIERXX1RBR19jb21waWxlX3VuaXQpCi0JLmxvbmcJLkxBU0Y1CSMgRFdfQVRfcHJvZHVjZXI6 ICJHTlUgRm9ydHJhbjIwMDggNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgLW0zMiAt bXR1bmU9Z2VuZXJpYyAtbWFyY2g9aTY4NiAtZyAtZmludHJpbnNpYy1tb2R1bGVzLXBhdGggL3Vz ci9saWIvZ2NjL3g4Nl82NC1yZWRoYXQtbGludXgvNi4xLjEvMzIvZmluY2x1ZGUiCi0JLmJ5dGUJ MHhlCSMgRFdfQVRfbGFuZ3VhZ2UKLQkuYnl0ZQkweDIJIyBEV19BVF9pZGVudGlmaWVyX2Nhc2UK LQkubG9uZwkuTEFTRjYJIyBEV19BVF9uYW1lOiAiZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAi Ci0JLmxvbmcJLkxBU0Y3CSMgRFdfQVRfY29tcF9kaXI6ICIvaG9tZS9qa3JhdG9jaC9yZWRoYXQv Z2RiLWNsZWFuL2dkYi90ZXN0c3VpdGUiCi0JLmxvbmcJLkx0ZXh0MAkjIERXX0FUX2xvd19wYwot CS5sb25nCS5MZXRleHQwLS5MdGV4dDAJIyBEV19BVF9oaWdoX3BjCi0JLmxvbmcJLkxkZWJ1Z19s aW5lMAkjIERXX0FUX3N0bXRfbGlzdAotCS51bGViMTI4IDB4MgkjIChESUUgKDB4MjYpIERXX1RB R19iYXNlX3R5cGUpCi0JLmJ5dGUJMHg0CSMgRFdfQVRfYnl0ZV9zaXplCi0JLmJ5dGUJMHg1CSMg RFdfQVRfZW5jb2RpbmcKLQkubG9uZwkuTEFTRjIJIyBEV19BVF9uYW1lOiAiaW50ZWdlcihraW5k PTQpIgotCS51bGViMTI4IDB4MwkjIChESUUgKDB4MmQpIERXX1RBR19jb25zdF90eXBlKQotCS5s b25nCTB4MjYJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHg0CSMgKERJRSAoMHgzMikgRFdfVEFH X3N1YnByb2dyYW0pCi0JCQkjIERXX0FUX2V4dGVybmFsCi0JLmxvbmcJLkxBU0Y4CSMgRFdfQVRf bmFtZTogIm1haW4iCi0JLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmY5MCkKLQkuYnl0ZQkweDFkCSMgRFdfQVRfZGVjbF9saW5lCi0JLmxvbmcJMHgy NgkjIERXX0FUX3R5cGUKLQkubG9uZwkuTEZCMQkjIERXX0FUX2xvd19wYwotCS5sb25nCS5MRkUx LS5MRkIxCSMgRFdfQVRfaGlnaF9wYwotCS51bGViMTI4IDB4MQkjIERXX0FUX2ZyYW1lX2Jhc2UK LQkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLQkJCSMgRFdfQVRfR05VX2FsbF90 YWlsX2NhbGxfc2l0ZXMKLQkubG9uZwkweDY5CSMgRFdfQVRfc2libGluZwotCS51bGViMTI4IDB4 NQkjIChESUUgKDB4NGIpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotCS5sb25nCS5MQVNGMAkj IERXX0FUX25hbWU6ICJhcmdjIgotCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmZv cnRyYW4vdmxhLXN0cmlkZS5mOTApCi0JLmJ5dGUJMHgxZAkjIERXX0FUX2RlY2xfbGluZQotCS5s b25nCTB4MmQJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHgyCSMgRFdfQVRfbG9jYXRpb24KLQku Ynl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLQkuc2xlYjEyOCAwCi0JLnVsZWIxMjggMHg1CSMgKERJ RSAoMHg1OSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0JLmxvbmcJLkxBU0YxCSMgRFdfQVRf bmFtZTogImFyZ3YiCi0JLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmY5MCkKLQkuYnl0ZQkweDFkCSMgRFdfQVRfZGVjbF9saW5lCi0JLmxvbmcJMHg2 OQkjIERXX0FUX3R5cGUKLQkudWxlYjEyOCAweDMJIyBEV19BVF9sb2NhdGlvbgotCS5ieXRlCTB4 OTEJIyBEV19PUF9mYnJlZwotCS5zbGViMTI4IDQKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgot CS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MzIKLQkudWxlYjEyOCAweDYJIyAo RElFICgweDY5KSBEV19UQUdfcG9pbnRlcl90eXBlKQotCS5ieXRlCTB4NAkjIERXX0FUX2J5dGVf c2l6ZQotCS5sb25nCTB4NmYJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHgyCSMgKERJRSAoMHg2 ZikgRFdfVEFHX2Jhc2VfdHlwZSkKLQkuYnl0ZQkweDEJIyBEV19BVF9ieXRlX3NpemUKLQkuYnl0 ZQkweDgJIyBEV19BVF9lbmNvZGluZwotCS5sb25nCS5MQVNGMwkjIERXX0FUX25hbWU6ICJjaGFy YWN0ZXIoa2luZD0xKSIKLQkudWxlYjEyOCAweDcJIyAoRElFICgweDc2KSBEV19UQUdfc3VicHJv Z3JhbSkKLQkubG9uZwkuTEFTRjkJIyBEV19BVF9uYW1lOiAidmxhX3N0cmlkZSIKLQkuYnl0ZQkw eDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwKQotCS5ieXRl CTB4MTAJIyBEV19BVF9kZWNsX2xpbmUKLQkJCSMgRFdfQVRfbWFpbl9zdWJwcm9ncmFtCi0JLmJ5 dGUJMHgyCSMgRFdfQVRfY2FsbGluZ19jb252ZW50aW9uCi0JLmxvbmcJLkxGQjAJIyBEV19BVF9s b3dfcGMKLQkubG9uZwkuTEZFMC0uTEZCMAkjIERXX0FUX2hpZ2hfcGMKLQkudWxlYjEyOCAweDEJ IyBEV19BVF9mcmFtZV9iYXNlCi0JLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVfY2ZhCi0J CQkjIERXX0FUX0dOVV9hbGxfdGFpbF9jYWxsX3NpdGVzCi0JLmxvbmcJMHhlNwkjIERXX0FUX3Np YmxpbmcKLQkudWxlYjEyOCAweDgJIyAoRElFICgweDhjKSBEV19UQUdfdmFyaWFibGUpCi0JLmFz Y2lpICJpXDAiCSMgRFdfQVRfbmFtZQotCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2Ri LmZvcnRyYW4vdmxhLXN0cmlkZS5mOTApCi0JLmJ5dGUJMHgxNQkjIERXX0FUX2RlY2xfbGluZQot CS5sb25nCTB4MjYJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHg5CSMgKERJRSAoMHg5NSkgRFdf VEFHX3ZhcmlhYmxlKQotCS5sb25nCS5MQVNGNAkjIERXX0FUX25hbWU6ICJwdmxhIgotCS5ieXRl CTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTApCi0JLmJ5 dGUJMHgxMgkjIERXX0FUX2RlY2xfbGluZQotCS5sb25nCTB4ZTcJIyBEV19BVF90eXBlCi0JLnVs ZWIxMjggMHgyCSMgRFdfQVRfbG9jYXRpb24KLQkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLQku c2xlYjEyOCAtNTYKLQkudWxlYjEyOCAweGEJIyAoRElFICgweGEzKSBEV19UQUdfdmFyaWFibGUp Ci0JLmFzY2lpICJ2bGFcMCIJIyBEV19BVF9uYW1lCi0JLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9m aWxlIChnZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCkKLQkuYnl0ZQkweDExCSMgRFdfQVRfZGVj bF9saW5lCi0JLmxvbmcJMHgxMGIJIyBEV19BVF90eXBlCi0JLnVsZWIxMjggMHgzCSMgRFdfQVRf bG9jYXRpb24KLQkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLQkuc2xlYjEyOCAtODAKLQkudWxl YjEyOCAweGIJIyAoRElFICgweGIyKSBEV19UQUdfbGV4aWNhbF9ibG9jaykKLQkubG9uZwkuTEJC MgkjIERXX0FUX2xvd19wYwotCS5sb25nCS5MQkUyLS5MQkIyCSMgRFdfQVRfaGlnaF9wYwotCS51 bGViMTI4IDB4YwkjIChESUUgKDB4YmIpIERXX1RBR19sZXhpY2FsX2Jsb2NrKQotCS5sb25nCS5M QkIzCSMgRFdfQVRfbG93X3BjCi0JLmxvbmcJLkxCRTMtLkxCQjMJIyBEV19BVF9oaWdoX3BjCi0J LmxvbmcJMHhkYwkjIERXX0FUX3NpYmxpbmcKLQkudWxlYjEyOCAweGIJIyAoRElFICgweGM4KSBE V19UQUdfbGV4aWNhbF9ibG9jaykKLQkubG9uZwkuTEJCNAkjIERXX0FUX2xvd19wYwotCS5sb25n CS5MQkU0LS5MQkI0CSMgRFdfQVRfaGlnaF9wYwotCS51bGViMTI4IDB4ZAkjIChESUUgKDB4ZDEp IERXX1RBR19sZXhpY2FsX2Jsb2NrKQotCS5sb25nCS5MQkI1CSMgRFdfQVRfbG93X3BjCi0JLmxv bmcJLkxCRTUtLkxCQjUJIyBEV19BVF9oaWdoX3BjCi0JLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJl biBvZiBESUUgMHhjOAotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YmIKLQku dWxlYjEyOCAweGQJIyAoRElFICgweGRjKSBEV19UQUdfbGV4aWNhbF9ibG9jaykKLQkubG9uZwku TEJCNgkjIERXX0FUX2xvd19wYwotCS5sb25nCS5MQkU2LS5MQkI2CSMgRFdfQVRfaGlnaF9wYwot CS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YjIKLQkuYnl0ZQkwCSMgZW5kIG9m IGNoaWxkcmVuIG9mIERJRSAweDc2Ci0JLnVsZWIxMjggMHhlCSMgKERJRSAoMHhlNykgRFdfVEFH X2FycmF5X3R5cGUpCi0JLnVsZWIxMjggMHgyCSMgRFdfQVRfZGF0YV9sb2NhdGlvbgotCS5ieXRl CTB4OTcJIyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzCi0JLmJ5dGUJMHg2CSMgRFdfT1BfZGVy ZWYKLQkudWxlYjEyOCAweDQJIyBEV19BVF9hc3NvY2lhdGVkCi0JLmJ5dGUJMHg5NwkjIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS5ieXRlCTB4 MzAJIyBEV19PUF9saXQwCi0JLmJ5dGUJMHgyZQkjIERXX09QX25lCi0JLmxvbmcJMHgyNgkjIERX X0FUX3R5cGUKLQkubG9uZwkweDEwYgkjIERXX0FUX3NpYmxpbmcKLQkudWxlYjEyOCAweGYJIyAo RElFICgweGY4KSBEV19UQUdfc3VicmFuZ2VfdHlwZSkKLQkudWxlYjEyOCAweDQJIyBEV19BVF9s b3dlcl9ib3VuZAotCS5ieXRlCTB4OTcJIyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzCi0JLmJ5 dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0JLnVsZWIxMjggMHgxMAotCS5ieXRlCTB4Ngkj IERXX09QX2RlcmVmCi0JLnVsZWIxMjggMHg0CSMgRFdfQVRfdXBwZXJfYm91bmQKLQkuYnl0ZQkw eDk3CSMgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcwotCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVz X3Vjb25zdAotCS51bGViMTI4IDB4MTQKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS51bGVi MTI4IDB4NgkjIERXX0FUX2J5dGVfc3RyaWRlCi0JLmJ5dGUJMHg5NwkjIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MKLQkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLQkudWxlYjEyOCAw eGMKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS5ieXRlCTB4MzQJIyBEV19PUF9saXQ0Ci0J LmJ5dGUJMHgxZQkjIERXX09QX211bAotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElF IDB4ZTcKLQkudWxlYjEyOCAweDEwCSMgKERJRSAoMHgxMGIpIERXX1RBR19hcnJheV90eXBlKQot CS51bGViMTI4IDB4MgkjIERXX0FUX2RhdGFfbG9jYXRpb24KLQkuYnl0ZQkweDk3CSMgRFdfT1Bf cHVzaF9vYmplY3RfYWRkcmVzcwotCS5ieXRlCTB4NgkjIERXX09QX2RlcmVmCi0JLnVsZWIxMjgg MHg0CSMgRFdfQVRfYWxsb2NhdGVkCi0JLmJ5dGUJMHg5NwkjIERXX09QX3B1c2hfb2JqZWN0X2Fk ZHJlc3MKLQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS5ieXRlCTB4MzAJIyBEV19PUF9saXQw Ci0JLmJ5dGUJMHgyZQkjIERXX09QX25lCi0JLmxvbmcJMHgyNgkjIERXX0FUX3R5cGUKLQkudWxl YjEyOCAweGYJIyAoRElFICgweDExOCkgRFdfVEFHX3N1YnJhbmdlX3R5cGUpCi0JLnVsZWIxMjgg MHg0CSMgRFdfQVRfbG93ZXJfYm91bmQKLQkuYnl0ZQkweDk3CSMgRFdfT1BfcHVzaF9vYmplY3Rf YWRkcmVzcwotCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAotCS51bGViMTI4IDB4MTAK LQkuYnl0ZQkweDYJIyBEV19PUF9kZXJlZgotCS51bGViMTI4IDB4NAkjIERXX0FUX3VwcGVyX2Jv dW5kCi0JLmJ5dGUJMHg5NwkjIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MKLQkuYnl0ZQkweDIz CSMgRFdfT1BfcGx1c191Y29uc3QKLQkudWxlYjEyOCAweDE0Ci0JLmJ5dGUJMHg2CSMgRFdfT1Bf ZGVyZWYKLQkudWxlYjEyOCAweDYJIyBEV19BVF9ieXRlX3N0cmlkZQotCS5ieXRlCTB4OTcJIyBE V19PUF9wdXNoX29iamVjdF9hZGRyZXNzCi0JLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0 Ci0JLnVsZWIxMjggMHhjCi0JLmJ5dGUJMHg2CSMgRFdfT1BfZGVyZWYKLQkuYnl0ZQkweDM0CSMg RFdfT1BfbGl0NAotCS5ieXRlCTB4MWUJIyBEV19PUF9tdWwKLQkuYnl0ZQkwCSMgZW5kIG9mIGNo aWxkcmVuIG9mIERJRSAweDEwYgotCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4 YgotCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0uTGRlYnVnX2FiYnJldjA6 Ci0JLnVsZWIxMjggMHgxCSMgKGFiYnJldiBjb2RlKQotCS51bGViMTI4IDB4MTEJIyAoVEFHOiBE V19UQUdfY29tcGlsZV91bml0KQotCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotCS51bGVi MTI4IDB4MjUJIyAoRFdfQVRfcHJvZHVjZXIpCi0JLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3Ry cCkKLQkudWxlYjEyOCAweDEzCSMgKERXX0FUX2xhbmd1YWdlKQotCS51bGViMTI4IDB4YgkjIChE V19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4NDIJIyAoRFdfQVRfaWRlbnRpZmllcl9jYXNlKQot CS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4MwkjIChEV19BVF9u YW1lKQotCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0JLnVsZWIxMjggMHgxYgkjIChE V19BVF9jb21wX2RpcikKLQkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotCS51bGViMTI4 IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0J LnVsZWIxMjggMHgxMgkjIChEV19BVF9oaWdoX3BjKQotCS51bGViMTI4IDB4NgkjIChEV19GT1JN X2RhdGE0KQotCS51bGViMTI4IDB4MTAJIyAoRFdfQVRfc3RtdF9saXN0KQotCS51bGViMTI4IDB4 MTcJIyAoRFdfRk9STV9zZWNfb2Zmc2V0KQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjgg MHgyCSMgKGFiYnJldiBjb2RlKQotCS51bGViMTI4IDB4MjQJIyAoVEFHOiBEV19UQUdfYmFzZV90 eXBlKQotCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotCS51bGViMTI4IDB4YgkjIChEV19BVF9i eXRlX3NpemUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0JLnVsZWIxMjggMHgz ZQkjIChEV19BVF9lbmNvZGluZykKLQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQku dWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLQkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJw KQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHgzCSMgKGFiYnJldiBjb2RlKQotCS51 bGViMTI4IDB4MjYJIyAoVEFHOiBEV19UQUdfY29uc3RfdHlwZSkKLQkuYnl0ZQkwCSMgRFdfY2hp bGRyZW5fbm8KLQkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0JLnVsZWIxMjggMHgxMwkj IChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweDQJIyAoYWJi cmV2IGNvZGUpCi0JLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotCS5i eXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJu YWwpCi0JLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLQkudWxlYjEyOCAw eDMJIyAoRFdfQVRfbmFtZSkKLQkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotCS51bGVi MTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2Rh dGExKQotCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLQkudWxlYjEy OCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLQkudWxlYjEyOCAweDExCSMgKERXX0FUX2xvd19wYykK LQkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotCS51bGViMTI4IDB4MTIJIyAoRFdfQVRf aGlnaF9wYykKLQkudWxlYjEyOCAweDYJIyAoRFdfRk9STV9kYXRhNCkKLQkudWxlYjEyOCAweDQw CSMgKERXX0FUX2ZyYW1lX2Jhc2UpCi0JLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2Mp Ci0JLnVsZWIxMjggMHgyMTE2CSMgKERXX0FUX0dOVV9hbGxfdGFpbF9jYWxsX3NpdGVzKQotCS51 bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0JLnVsZWIxMjggMHgxCSMgKERX X0FUX3NpYmxpbmcpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAot CS5ieXRlCTAKLQkudWxlYjEyOCAweDUJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHg1CSMg KFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0JLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25v Ci0JLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0JLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1f c3RycCkKLQkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLQkudWxlYjEyOCAweGIJ IyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLQku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5 cGUpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLnVsZWIxMjggMHgyCSMgKERX X0FUX2xvY2F0aW9uKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotCS5ieXRl CTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHg2CSMgKGFiYnJldiBjb2RlKQotCS51bGViMTI4IDB4 ZgkjIChUQUc6IERXX1RBR19wb2ludGVyX3R5cGUpCi0JLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25v Ci0JLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLQkudWxlYjEyOCAweGIJIyAoRFdf Rk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0JLnVsZWIxMjggMHgx MwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweDcJIyAo YWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQot CS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1l KQotCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0JLnVsZWIxMjggMHgzYQkjIChEV19B VF9kZWNsX2ZpbGUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0JLnVsZWIxMjgg MHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEp Ci0JLnVsZWIxMjggMHg2YQkjIChEV19BVF9tYWluX3N1YnByb2dyYW0pCi0JLnVsZWIxMjggMHgx OQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLQkudWxlYjEyOCAweDM2CSMgKERXX0FUX2NhbGxp bmdfY29udmVudGlvbikKLQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEy OCAweDExCSMgKERXX0FUX2xvd19wYykKLQkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQot CS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLQkudWxlYjEyOCAweDYJIyAoRFdfRk9S TV9kYXRhNCkKLQkudWxlYjEyOCAweDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2UpCi0JLnVsZWIxMjgg MHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHgyMTE2CSMgKERXX0FUX0dOVV9h bGxfdGFpbF9jYWxsX3NpdGVzKQotCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNl bnQpCi0JLnVsZWIxMjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCi0JLnVsZWIxMjggMHgxMwkjIChE V19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweDgJIyAoYWJicmV2 IGNvZGUpCi0JLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKLQkuYnl0ZQkw CSMgRFdfY2hpbGRyZW5fbm8KLQkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLQkudWxlYjEy OCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0JLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2Zp bGUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0JLnVsZWIxMjggMHgzYgkjIChE V19BVF9kZWNsX2xpbmUpCi0JLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0JLnVsZWIx MjggMHg0OQkjIChEV19BVF90eXBlKQotCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQot CS5ieXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHg5CSMgKGFiYnJldiBjb2RlKQotCS51bGVi MTI4IDB4MzQJIyAoVEFHOiBEV19UQUdfdmFyaWFibGUpCi0JLmJ5dGUJMAkjIERXX2NoaWxkcmVu X25vCi0JLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0JLnVsZWIxMjggMHhlCSMgKERXX0ZP Uk1fc3RycCkKLQkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLQkudWxlYjEyOCAw eGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkK LQkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLQkudWxlYjEyOCAweDQ5CSMgKERXX0FU X3R5cGUpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLnVsZWIxMjggMHgyCSMg KERXX0FUX2xvY2F0aW9uKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotCS5i eXRlCTAKLQkuYnl0ZQkwCi0JLnVsZWIxMjggMHhhCSMgKGFiYnJldiBjb2RlKQotCS51bGViMTI4 IDB4MzQJIyAoVEFHOiBEV19UQUdfdmFyaWFibGUpCi0JLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25v Ci0JLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0JLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1f c3RyaW5nKQotCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotCS51bGViMTI4IDB4 YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQot CS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotCS51bGViMTI4IDB4NDkJIyAoRFdfQVRf dHlwZSkKLQkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLQkudWxlYjEyOCAweDIJIyAo RFdfQVRfbG9jYXRpb24pCi0JLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0JLmJ5 dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweGIJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjgg MHhiCSMgKFRBRzogRFdfVEFHX2xleGljYWxfYmxvY2spCi0JLmJ5dGUJMHgxCSMgRFdfY2hpbGRy ZW5feWVzCi0JLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0JLnVsZWIxMjggMHgxCSMg KERXX0ZPUk1fYWRkcikKLQkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0JLnVsZWIx MjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAw eGMJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHhiCSMgKFRBRzogRFdfVEFHX2xleGljYWxf YmxvY2spCi0JLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0JLnVsZWIxMjggMHgxMQkjIChE V19BVF9sb3dfcGMpCi0JLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLQkudWxlYjEyOCAw eDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0JLnVsZWIxMjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0J LnVsZWIxMjggMHgxCSMgKERXX0FUX3NpYmxpbmcpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JN X3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQkudWxlYjEyOCAweGQJIyAoYWJicmV2IGNvZGUp Ci0JLnVsZWIxMjggMHhiCSMgKFRBRzogRFdfVEFHX2xleGljYWxfYmxvY2spCi0JLmJ5dGUJMAkj IERXX2NoaWxkcmVuX25vCi0JLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0JLnVsZWIx MjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLQkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMp Ci0JLnVsZWIxMjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0JLmJ5dGUJMAotCS5ieXRlCTAKLQku dWxlYjEyOCAweGUJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgxCSMgKFRBRzogRFdfVEFH X2FycmF5X3R5cGUpCi0JLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0JLnVsZWIxMjggMHg1 MAkjIChEV19BVF9kYXRhX2xvY2F0aW9uKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBy bG9jKQotCS51bGViMTI4IDB4NGYJIyAoRFdfQVRfYXNzb2NpYXRlZCkKLQkudWxlYjEyOCAweDE4 CSMgKERXX0ZPUk1fZXhwcmxvYykKLQkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0JLnVs ZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLnVsZWIxMjggMHgxCSMgKERXX0FUX3NpYmxp bmcpCi0JLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0JLmJ5dGUJMAotCS5ieXRlCTAK LQkudWxlYjEyOCAweGYJIyAoYWJicmV2IGNvZGUpCi0JLnVsZWIxMjggMHgyMQkjIChUQUc6IERX X1RBR19zdWJyYW5nZV90eXBlKQotCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotCS51bGViMTI4 IDB4MjIJIyAoRFdfQVRfbG93ZXJfYm91bmQpCi0JLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4 cHJsb2MpCi0JLnVsZWIxMjggMHgyZgkjIChEV19BVF91cHBlcl9ib3VuZCkKLQkudWxlYjEyOCAw eDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKLQkudWxlYjEyOCAweDUxCSMgKERXX0FUX2J5dGVfc3Ry aWRlKQotCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotCS5ieXRlCTAKLQkuYnl0 ZQkwCi0JLnVsZWIxMjggMHgxMAkjIChhYmJyZXYgY29kZSkKLQkudWxlYjEyOCAweDEJIyAoVEFH OiBEV19UQUdfYXJyYXlfdHlwZSkKLQkuYnl0ZQkweDEJIyBEV19jaGlsZHJlbl95ZXMKLQkudWxl YjEyOCAweDUwCSMgKERXX0FUX2RhdGFfbG9jYXRpb24pCi0JLnVsZWIxMjggMHgxOAkjIChEV19G T1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHg0ZQkjIChEV19BVF9hbGxvY2F0ZWQpCi0JLnVsZWIx MjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0JLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBl KQotCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotCS5ieXRlCTAKLQkuYnl0ZQkwCi0J LmJ5dGUJMAotCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotCS5sb25nCTB4 MWMJIyBMZW5ndGggb2YgQWRkcmVzcyBSYW5nZXMgSW5mbwotCS52YWx1ZQkweDIJIyBEV0FSRiBW ZXJzaW9uCi0JLmxvbmcJLkxkZWJ1Z19pbmZvMAkjIE9mZnNldCBvZiBDb21waWxhdGlvbiBVbml0 IEluZm8KLQkuYnl0ZQkweDQJIyBTaXplIG9mIEFkZHJlc3MKLQkuYnl0ZQkwCSMgU2l6ZSBvZiBT ZWdtZW50IERlc2NyaXB0b3IKLQkudmFsdWUJMAkjIFBhZCB0byA4IGJ5dGUgYm91bmRhcnkKLQku dmFsdWUJMAotCS5sb25nCS5MdGV4dDAJIyBBZGRyZXNzCi0JLmxvbmcJLkxldGV4dDAtLkx0ZXh0 MAkjIExlbmd0aAotCS5sb25nCTAKLQkubG9uZwkwCi0JLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIs QHByb2diaXRzCi0uTGRlYnVnX2xpbmUwOgotCS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJv Z2JpdHMsMQotLkxBU0Y3OgotCS5zdHJpbmcJIi9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xl YW4vZ2RiL3Rlc3RzdWl0ZSIKLS5MQVNGMzoKLQkuc3RyaW5nCSJjaGFyYWN0ZXIoa2luZD0xKSIK LS5MQVNGMDoKLQkuc3RyaW5nCSJhcmdjIgotLkxBU0Y5OgotCS5zdHJpbmcJInZsYV9zdHJpZGUi Ci0uTEFTRjI6Ci0JLnN0cmluZwkiaW50ZWdlcihraW5kPTQpIgotLkxBU0Y1OgotCS5zdHJpbmcJ IkdOVSBGb3J0cmFuMjAwOCA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAtbTMyIC1t dHVuZT1nZW5lcmljIC1tYXJjaD1pNjg2IC1nIC1maW50cmluc2ljLW1vZHVsZXMtcGF0aCAvdXNy L2xpYi9nY2MveDg2XzY0LXJlZGhhdC1saW51eC82LjEuMS8zMi9maW5jbHVkZSIKLS5MQVNGODoK LQkuc3RyaW5nCSJtYWluIgotLkxBU0Y0OgotCS5zdHJpbmcJInB2bGEiCi0uTEFTRjY6Ci0JLnN0 cmluZwkiZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAiCi0uTEFTRjE6Ci0JLnN0cmluZwkiYXJn diIKLQkuaWRlbnQJIkdDQzogKEdOVSkgNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMyki Ci0JLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotCi0tLVZiSmtuOVl4QnZu dUNINUotLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC1icmFuY2gucGF0Y2ggYi9nZGIt dmxhLWludGVsLWJyYW5jaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUx NmU5OS4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLWJyYW5jaC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE4MzIgKzAsMCBAQAotZ2l0IGRpZmYgLS1zdGF0IC1wIGdkYi9tYXN0ZXIuLi5n ZGIvdXNlcnMvYmhlY2tlbC9mb3J0cmFuLXN0cmlkZXMKLTJjMzkyZDQxYTNmMmUzOGRlZWI5ZGI1 YjdhOTNjYTQ1NjgyYmJlM2IKLQotIGdkYi9kd2FyZjJyZWFkLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTMgKy0KLSBnZGIvZXZhbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMzkxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gZ2RiL2V4cHByaW50LmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQotIGdkYi9leHByZXNzaW9uLmgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KLSBnZGIvZi1leHAueSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQyICsrLQotIGdkYi9mLXZhbHByaW50LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KLSBnZGIvZ2RidHlwZXMuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrLQotIGdkYi9nZGJ0eXBlcy5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysKLSBnZGIvcGFyc2UuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDI0ICstCi0gZ2RiL3J1c3QtZXhwLnkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxMiArLQotIGdkYi9ydXN0LWxhbmcuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTcgKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRp Yy1hcnJheXMuZXhwIHwgNDIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwIHwgIDU1ICsrKysKLSBnZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwICAgIHwgIDQ0ICsrKwotIGdkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAgICAgfCAgMjkgKysKLSBnZGIvdmFsYXJp dGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCi0gZ2RiL3ZhbG9wcy5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5NyArKysrKysrKysrKy0tCi0gZ2Ri L3ZhbHVlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gMTggZmls ZXMgY2hhbmdlZCwgMTE5NyBpbnNlcnRpb25zKCspLCAxNzMgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggNjY1OGEz OC4uYTFhYzY1OSAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2Fy ZjJyZWFkLmMKLUBAIC0xNDk1Miw3ICsxNDk1Miw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IHR5cGUg KmJhc2VfdHlwZSwgKm9yaWdfYmFzZV90eXBlOwotICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7 Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3cs IGhpZ2g7Ci0rICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaCwgc3RyaWRlOwotICAgaW50 IGxvd19kZWZhdWx0X2lzX3ZhbGlkOwotICAgaW50IGhpZ2hfYm91bmRfaXNfY291bnQgPSAwOwot ICAgY29uc3QgY2hhciAqbmFtZTsKLUBAIC0xNDk3Miw3ICsxNDk3Miw5IEBAIHJlYWRfc3VicmFu Z2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAot ICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOwotICAgaGlnaC5raW5kID0gUFJPUF9DT05TVDsKLSsg IHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKLSAgIGhpZ2guZGF0YS5jb25zdF92YWwgPSAwOwot KyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsKLSAKLSAgIC8qIFNldCBMT1dfREVGQVVMVF9J U19WQUxJRCBpZiBjdXJyZW50IGxhbmd1YWdlIGFuZCBEV0FSRiB2ZXJzaW9uIGFsbG93Ci0gICAg ICBvbWl0dGluZyBEV19BVF9sb3dlcl9ib3VuZC4gICovCi1AQCAtMTUwMDYsNiArMTUwMDgsMTMg QEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSsgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOwotKyAgaWYgKGF0dHIpCi0rICAgIGlmICgh YXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZzdHJpZGUpKQotKyAgICAgICAg Y29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJNaXNzaW5nIERXX0FUX2J5dGVfc3Ry aWRlICIKLSsgICAgICAgICAgICAgICAgICAiLSBESUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIp LAotKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5zZWN0X29mZiwgb2JqZmlsZV9uYW1lIChjdS0+ b2JqZmlsZSkpOwotKwotICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2Jv dW5kLCBjdSk7Ci0gICBpZiAoYXR0cikKLSAgICAgYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIs IGRpZSwgY3UsICZsb3cpOwotQEAgLTE1MDgyLDcgKzE1MDkxLDcgQEAgcmVhZF9zdWJyYW5nZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAg JiYgIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2guZGF0YS5jb25zdF92YWwgJiBu ZWdhdGl2ZV9tYXNrKSkKLSAgICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCB8PSBuZWdhdGl2ZV9tYXNr OwotIAotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2Vf dHlwZSwgJmxvdywgJmhpZ2gpOwotKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChO VUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gsICZzdHJpZGUpOwotIAotICAgaWYgKGhp Z2hfYm91bmRfaXNfY291bnQpCi0gICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmZs YWdfdXBwZXJfYm91bmRfaXNfY291bnQgPSAxOwotZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9n ZGIvZXZhbC5jCi1pbmRleCAwMGExMDdjLi45MWQ4YTAzIDEwMDY0NAotLS0tIGEvZ2RiL2V2YWwu YwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTM5OSwyOSArMzk5LDMyNSBAQCBpbml0X2FycmF5X2Vs ZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKLSAgIHJl dHVybiBpbmRleDsKLSB9Ci0gCi0rLyogRXZhbHVhdGVzIGFueSBvcGVyYXRpb24gb24gRm9ydHJh biBhcnJheXMgb3Igc3RyaW5ncyB3aXRoIGF0IGxlYXN0Ci0rICAgb25lIHVzZXIgcHJvdmlkZWQg cGFyYW1ldGVyLiAgRXhwZWN0cyB0aGUgaW5wdXQgQVJSQVkgdG8gYmUgZWl0aGVyCi0rICAgYW4g YXJyYXksIG9yIGEgc3RyaW5nLiAgRXZhbHVhdGVzIEVYUCBieSBpbmNyZW1lbnRpbmcgUE9TLCBh bmQKLSsgICB3cml0ZXMgdGhlIGNvbnRlbnQgZnJvbSB0aGUgZWx0IHN0YWNrIGludG8gYSBsb2Nh bCBzdHJ1Y3QuICBOQVJHUwotKyAgIHNwZWNpZmllcyBudW1iZXIgb2YgbGl0ZXJhbCBvciByYW5n ZSBhcmd1bWVudHMgdGhlIHVzZXIgcHJvdmlkZWQuCi0rICAgTkFSR1MgbXVzdCBiZSB0aGUgc2Ft ZSBudW1iZXIgYXMgQVJSQVkgaGFzIGRpbWVuc2lvbnMuICAqLwotKwotIHN0YXRpYyBzdHJ1Y3Qg dmFsdWUgKgotLXZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKLS0JCSAg ICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQot K3ZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Np b24gKmV4cCwKLSsJCSAgICBpbnQgKnBvcywgaW50IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUp Ci0gewotLSAgaW50IHBjID0gKCpwb3MpICsgMTsKLSsgIGludCBpLCBkaW1fY291bnQgPSAwOwot ICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0tICBzdHJ1Y3QgdHlwZSAqcmFuZ2Ug PSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKHZhbHVlX3R5cGUgKGFycmF5KSkpOwot LSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKLS0gICAgPSAoZW51bSByYW5nZV90eXBlKSBs b25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOwotLSAKLS0gICpwb3MgKz0g MzsKLS0KLS0gIGlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5 cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQotLSAgICBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VO RCAocmFuZ2UpOwotLSAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFs dWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSkpOwotKyAgc3RydWN0IHZh bHVlICpuZXdfYXJyYXkgPSBhcnJheTsKLSsgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAobmV3X2FycmF5KSk7Ci0rICBzdHJ1Y3QgdHlwZSAqZWx0 X3R5cGU7Ci0rCi0rICB0eXBlZGVmIHN0cnVjdCBzdWJzY3JpcHRfcmFuZ2UKLSsgIHsKLSsgICAg ZW51bSByYW5nZV90eXBlIGY5MF9yYW5nZV90eXBlOwotKyAgICBMT05HRVNUIGxvdywgaGlnaCwg c3RyaWRlOwotKyAgfSBzdWJzY3JpcHRfcmFuZ2U7Ci0rCi0rICB0eXBlZGVmIGVudW0gc3Vic2Ny aXB0X2tpbmQKLSsgIHsKLSsgICAgU1VCU0NSSVBUX1JBTkdFLCAgICAvKiBlLmcuICIobG93Ym91 bmQ6aGlnaGJvdW5kKSIgICovCi0rICAgIFNVQlNDUklQVF9JTkRFWCAgICAvKiBlLmcuICIobGl0 ZXJhbCkiICAqLwotKyAgfSBraW5kOwotKwotKyAgLyogTG9jYWwgc3RydWN0IHRvIGhvbGQgdXNl ciBkYXRhIGZvciBGb3J0cmFuIHN1YmFycmF5IGRpbWVuc2lvbnMuICAqLwotKyAgc3RydWN0IHN1 YnNjcmlwdF9zdG9yZQotKyAgewotKyAgICAvKiBGb3IgZXZlcnkgZGltZW5zaW9uLCB3ZSBhcmUg ZWl0aGVyIHdvcmtpbmcgb24gYSByYW5nZSBvciBhbiBpbmRleAotKyAgICAgICBleHByZXNzaW9u LCBzbyB3ZSBzdG9yZSB0aGlzIGluZm8gc2VwYXJhdGVseSBmb3IgbGF0ZXIuICAqLwotKyAgICBl bnVtIHN1YnNjcmlwdF9raW5kIGtpbmQ7Ci0rCi0rICAgIC8qIFdlIGFsc28gc3RvcmUgZWl0aGVy IHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgaW5mbywgb3IgdGhlIGluZGV4Ci0rICAgICAgIG51 bWJlci4gIEJlZm9yZSBldmFsdWF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZXMsIHdlIGRvIG5vdCBr bm93IGlmIHdlIGFyZQotKyAgICAgICBhY3R1YWxseSB3b3JraW5nIG9uIGEgcmFuZ2Ugb2YgcmFu Z2VzLCBvciBhbiBpbmRleCBpbiBhIHJhbmdlLiAgU28gYXMgYQotKyAgICAgICBmaXJzdCBzdGVw IHdlIHN0b3JlIGFsbCBpbnB1dCBpbiBhIHVuaW9uLiAgVGhlIGFycmF5IGNhbGN1bGF0aW9uIGl0 c2VsZgotKyAgICAgICBkZWFscyB3aXRoIHRoaXMgbGF0ZXIgb24uICAqLwotKyAgICB1bmlvbiBl bGVtZW50X3JhbmdlCi0rICAgIHsKLSsgICAgICBzdWJzY3JpcHRfcmFuZ2UgcmFuZ2U7Ci0rICAg ICAgTE9OR0VTVCBudW1iZXI7Ci0rICAgIH0gVTsKLSsgIH0gKnN1YnNjcmlwdF9hcnJheTsKLSsK LSsgIC8qIENoZWNrIGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHByb3ZpZGVkIGJ5IHRoZSB1 c2VyIG1hdGNoZXMKLSsgICAgIHRoZSBudW1iZXIgb2YgZGltZW5zaW9uIG9mIHRoZSBhcnJheS4g IEEgc3RyaW5nIGhhcyBvbmx5IG9uZQotKyAgICAgZGltZW5zaW9uLiAgKi8KLSsgIGlmIChuYXJn cyAhPSBjYWxjX2Y3N19hcnJheV9kaW1zICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKSkKLSsgICAg ZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOwotKwotKyAgc3Vic2NyaXB0 X2FycmF5ID0gKHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUqKSBhbGxvY2EgKHNpemVvZiAoKnN1YnNj cmlwdF9hcnJheSkgKiBuYXJncyk7Ci0rCi0rICAvKiBQYXJzZSB0aGUgdXNlciBpbnB1dCBpbnRv IHRoZSBTVUJTQ1JJUFRfQVJSQVkgdG8gc3RvcmUgaXQuICBXZSBuZWVkCi0rICAgICB0byBldmFs dWF0ZSBpdCBmaXJzdCwgYXMgdGhlIGlucHV0IGlzIGZyb20gbGVmdC10by1yaWdodC4gIFRoZQot KyAgICAgYXJyYXkgaXMgc3RvcmVkIGZyb20gcmlnaHQtdG8tbGVmdC4gIFNvIHdlIGhhdmUgdG8g dXNlIHRoZSB1c2VyCi0rICAgICBpbnB1dCBpbiByZXZlcnNlIG9yZGVyLiAgTGF0ZXIgb24sIHdl IG5lZWQgdGhlIGlucHV0IGluZm9ybWF0aW9uIHRvCi0rICAgICByZS1jYWxjdWxhdGUgdGhlIG91 dHB1dCBhcnJheS4gIEZvciBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMsIHdlCi0rICAgICBjYW4g YmUgZGVhbGluZyB3aXRoIGFueSBwb3NzaWJsZSBjb21iaW5hdGlvbiBvZiByYW5nZXMgYW5kIGlu ZGljZXMKLSsgICAgIGZvciBldmVyeSBkaW1lbnNpb24uICAqLwotKyAgZm9yIChpID0gMDsgaSA8 IG5hcmdzOyBpKyspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0X3N0b3JlICppbmRl eCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JP VU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0tICAgIGhp Z2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlKTsKLS0gIGVsc2UKLS0gICAgaGlnaF9i b3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBv cywgbm9zaWRlKSk7Ci0rICAgICAgLyogVGhlIHVzZXIgaW5wdXQgaXMgYSByYW5nZSwgd2l0aCBv ciB3aXRob3V0IGxvd2VyIGFuZCB1cHBlciBib3VuZC4KLSsJIEUuZy46ICJwIGFycnkoMjo1KSIs ICJwIGFycnkoIDo1KSIsICJwIGFycnkoIDogKSIsIGV0Yy4gICovCi0rICAgICAgaWYgKGV4cC0+ ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCi0rCXsKLSsJICBpbnQgcGMgPSAoKnBvcykg KyAxOwotKwkgIHN1YnNjcmlwdF9yYW5nZSAqcmFuZ2U7Ci0rCi0rCSAgaW5kZXgtPmtpbmQgPSBT VUJTQ1JJUFRfUkFOR0U7Ci0rCSAgcmFuZ2UgPSAmaW5kZXgtPlUucmFuZ2U7Ci0rCi0rCSAgKnBv cyArPSAzOwotKwkgIHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IChlbnVtIHJhbmdlX3R5cGUpIGV4 cC0+ZWx0c1twY10ubG9uZ2NvbnN0OwotKwotKwkgIC8qIElmIGEgbG93ZXIgYm91bmQgd2FzIHBy b3ZpZGVkIGJ5IHRoZSB1c2VyLCB0aGUgYml0IGhhcyBiZWVuCi0rCSAgICAgc2V0IGFuZCB3ZSBj YW4gYXNzaWduIHRoZSB2YWx1ZSBmcm9tIHRoZSBlbHQgc3RhY2suICBTYW1lIGZvcgotKwkgICAg IHVwcGVyIGJvdW5kLiAgKi8KLSsJICBpZiAoKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSAmIFNVQkFS UkFZX0xPV19CT1VORCkKLSsJICAgICAgPT0gU1VCQVJSQVlfTE9XX0JPVU5EKQotKwkgICAgcmFu Z2UtPmxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs Ci0rCQkJCQkJCSBwb3MsIG5vc2lkZSkpOwotKwkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBl ICYgU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJICAgICAgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkK LSsJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxM X1RZUEUsIGV4cCwKLSsJCQkJCQkJICBwb3MsIG5vc2lkZSkpOwotKwotKwkgIC8qIEFzc2lnbiB0 aGUgdXNlcidzIHN0cmlkZSB2YWx1ZSBpZiBwcm92aWRlZC4gICovCi0rCSAgaWYgKChyYW5nZS0+ ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJREUpID09IFNVQkFSUkFZX1NUUklERSkKLSsJ ICAgIHJhbmdlLT5zdHJpZGUgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExf VFlQRSwgZXhwLAotKwkJCQkJCQkgICAgIHBvcywgbm9zaWRlKSk7Ci0rCi0rCSAgLyogQXNzaWdu IHRoZSBkZWZhdWx0IHN0cmlkZSB2YWx1ZSAnMScuICAqLwotKwkgIGVsc2UKLSsJICAgIHJhbmdl LT5zdHJpZGUgPSAxOwotKwotKwkgIC8qIENoZWNrIHRoZSBwcm92aWRlZCBzdHJpZGUgdmFsdWUg aXMgaWxsZWdhbCwgYWthICcwJy4gICovCi0rCSAgaWYgKHJhbmdlLT5zdHJpZGUgPT0gMCkKLSsJ ICAgIGVycm9yIChfKCJTdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsKLSsJfQotKyAgICAgIC8qIFVz ZXIgaW5wdXQgaXMgYW4gaW5kZXguICBFLmcuOiAicCBhcnJ5KDUpIi4gICovCi0rICAgICAgZWxz ZQotKwl7Ci0rCSAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0rCSAgaW5kZXgtPmtpbmQgPSBTVUJT Q1JJUFRfSU5ERVg7Ci0rCi0rCSAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7IGl0IG11c3Qg YmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gIFRoaXMKLSsJICAgICBlbnN1cmVzIHRoZSB2YWxp ZGl0eSBvZiB0aGUgcHJvdmlkZWQgaW5kZXguICAqLwotKwkgIHZhbCA9IGV2YWx1YXRlX3N1YmV4 cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLSsJICBpbmRleC0+VS5udW1iZXIg PSB2YWx1ZV9hc19sb25nICh2YWwpOwotKwl9Ci0rCi0rICAgIH0KLSsKLSsgIC8qIFRyYXZlcnNl IHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIHNldCB0aGUgaGlnaCBhbmQgbG93IGJv dW5kcwotKyAgICAgZm9yIGxhdGVyIHVzZS4gICovCi0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkg Pj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXgg PSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBlID0g VFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKLSsKLSsgICAgICBzd2l0Y2ggKGluZGV4LT5r aW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsKLSsKLSsJICAgIC8qIFdo ZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11c3QK LSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4gIFdl IHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBob3cg bWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICovCi0r CSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdlOwotKwotKwkgICAg LyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB3ZSB0YWtlIHRo ZQotKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRoZSBoaWdoIGJvdW5kLiAg Ki8KLSsJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5E KSA9PSAwKQotKwkgICAgICByYW5nZS0+bG93ID0gVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUp OwotKwotKwkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9ISUdIX0JP VU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+aGlnaCA9IFRZUEVfSElHSF9CT1VORCAoaW5kZXhf dHlwZSk7Ci0rCi0rCSAgICAvKiBCb3RoIHVzZXIgcHJvdmlkZWQgbG93IGFuZCBoaWdoIGJvdW5k IGhhdmUgdG8gYmUgaW5zaWRlIHRoZQotKwkgICAgICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4g ZXJyb3IgaWYgbm90LiAgKi8KLSsJICAgIGlmIChyYW5nZS0+bG93IDwgVFlQRV9MT1dfQk9VTkQg KGluZGV4X3R5cGUpCi0rCQl8fCByYW5nZS0+bG93ID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90 eXBlKQotKwkJfHwgcmFuZ2UtPmhpZ2ggPCBUWVBFX0xPV19CT1VORCAoaW5kZXhfdHlwZSkKLSsJ CXx8IHJhbmdlLT5oaWdoID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBlKSkKLSsJICAgICAg ZXJyb3IgKF8oInByb3ZpZGVkIGJvdW5kKHMpIG91dHNpZGUgYXJyYXkgYm91bmQocykiKSk7Ci0r Ci0rCSAgICAvKiBGb3IgYSBuZWdhdGl2ZSBzdHJpZGUgdGhlIGxvd2VyIGJvdW5kYXJ5IG11c3Qg YmUgbGFyZ2VyIHRoYW4gdGhlCi0rCSAgICAgICB1cHBlciBib3VuZGFyeS4KLSsJICAgICAgIEZv ciBhIHBvc2l0aXZlIHN0cmlkZSB0aGUgbG93ZXIgYm91bmRhcnkgbXVzdCBiZSBzbWFsbGVyIHRo YW4gdGhlCi0rCSAgICAgICB1cHBlciBib3VuZGFyeS4gICovCi0rCSAgICBpZiAoKHJhbmdlLT5z dHJpZGUgPCAwICYmIHJhbmdlLT5sb3cgPCByYW5nZS0+aGlnaCkKLSsJCXx8IChyYW5nZS0+c3Ry aWRlID4gMCAmJiByYW5nZS0+bG93ID4gcmFuZ2UtPmhpZ2gpKQotKwkgICAgICBlcnJvciAoXygi V3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIpKTsKLSsKLSsJ ICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgU1VCU0NSSVBUX0lOREVYOgotKwkgIGJyZWFrOwot KwotKwl9Ci0rCi0rICAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKTsKLSsgICAgfQotKwotKyAgLyogUmVzZXQgQVJSQVlfVFlQRSBiZWZvcmUgc2xpY2luZy4q LwotKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG5ld19hcnJheSkp OwotKwotKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmlnaHQgdG8gbGVmdCBhbmQgZXZh bHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCi0rICAgICB1c2VyIGlucHV0LiAgVkFMVUVfU1VCU0NS SVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgsIHVudGlsIGEgcmFuZ2UKLSsgICAgIGV4cHJl c3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSByYW5nZSBleHByZXNzaW9uIGhhcyBiZWVuIGV2 YWx1YXRlZCwKLSsgICAgIGV2ZXJ5IHN1YnNlcXVlbnQgZXhwcmVzc2lvbiBpcyBhbHNvIHRyZWF0 ZWQgYXMgYSByYW5nZS4gICovCi0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQot KyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0 X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBlID0gVFlQRV9JTkRFWF9U WVBFIChhcnJheV90eXBlKTsKLSsKLSsgICAgICBzd2l0Y2ggKGluZGV4LT5raW5kKQotKwl7Ci0r CWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsKLSsKLSsJICAgIC8qIFdoZW4gd2UgaGl0IHRo ZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11c3QKLSsJICAgICAgIHRy ZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4gIFdlIHNpbXBseQotKwkg ICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3 ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICovCi0rCSAgICBzdWJzY3Jp cHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdlOwotKwotKwkgICAgLyogRElNX0NPVU5U IGNvdW50cyBldmVyeSB1c2VyIGFyZ3VtZW50IHRoYXQgaXMgdHJlYXRlZCBhcyBhIHJhbmdlLgot KwkgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGV4cHJlc3Npb25zIGxpa2UgJ3ByaW50IGFy cmF5KDcsIDg6OSkuCi0rCSAgICAgICBIZXJlIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGxpdGVy YWwsIGJ1dCBtdXN0IGJlIHRyZWF0ZWQgYXMgYQotKwkgICAgICAgcmFuZ2UgYXJndW1lbnQgdG8g YWxsb3cgdGhlIGNvcnJlY3Qgb3V0cHV0IHJlcHJlc2VudGF0aW9uLiAgKi8KLSsJICAgIGRpbV9j b3VudCsrOwotKwotKwkgICAgbmV3X2FycmF5Ci0rCSAgICAgID0gdmFsdWVfc2xpY2VfMSAobmV3 X2FycmF5LCByYW5nZS0+bG93LAotKwkJCSAgICAgICByYW5nZS0+aGlnaCAtIHJhbmdlLT5sb3cg KyAxLAotKwkJCSAgICAgICByYW5nZS0+c3RyaWRlLCBkaW1fY291bnQpOwotKwkgIH0KLSsJICBi cmVhazsKLSsKLSsJY2FzZSBTVUJTQ1JJUFRfSU5ERVg6Ci0rCSAgewotKwkgICAgLyogRElNX0NP VU5UIG9ubHkgc3RheXMgJzAnIHdoZW4gbm8gcmFuZ2UgYXJndW1lbnQgd2FzIHByb2Nlc3NlZAot KwkgICAgICAgYmVmb3JlLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGRpbWVuc2lvbi4gIFRoaXMg d2F5IHdlIGNhbgotKwkgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmcm9t IHRoZSByZXN1bHQgYXJyYXkuCi0rCSAgICAgICBIb3dldmVyLCBpZiBhIHJhbmdlIGhhcyBiZWVu IHByb2Nlc3NlZCBiZWZvcmUgYW4gaW5kZXgsIHdlCi0rCSAgICAgICB0cmVhdCB0aGUgaW5kZXgg bGlrZSBhIHJhbmdlIHdpdGggZXF1YWwgbG93LSBhbmQgaGlnaCBib3VuZHMKLSsJICAgICAgIHRv IGdldCB0aGUgdmFsdWUgb2Zmc2V0IHJpZ2h0LiAgKi8KLSsJICAgIGlmIChkaW1fY291bnQgPT0g MCkKLSsJICAgICAgbmV3X2FycmF5Ci0rCSAgICAgICAgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgKG5ld19hcnJheSwgaW5kZXgtPlUubnVtYmVyLAotKwkJCQkJICAgIGY3N19nZXRfbG93ZXJi b3VuZCAodmFsdWVfdHlwZQotKwkJCQkJCQkJICAobmV3X2FycmF5KSkpOwotKwkgICAgZWxzZQot KwkgICAgICB7Ci0rCQlkaW1fY291bnQrKzsKLSsKLSsJCS8qIFdlIG1pZ2h0IGVuZCB1cCBoZXJl LCBiZWNhdXNlIHdlIGhhdmUgdG8gdHJlYXQgdGhlIHByb3ZpZGVkCi0rCQkgICBpbmRleCBsaWtl IGEgcmFuZ2UuIEJ1dCBub3cgVkFMVUVfU1VCU0NSSVBURURfUlZBTFVFCi0rCQkgICBjYW5ub3Qg ZG8gdGhlIHJhbmdlIGNoZWNrcyBmb3IgdXMuIFNvIHdlIGhhdmUgdG8gbWFrZSBzdXJlCi0rCQkg ICBvdXJzZWx2ZXMgdGhhdCB0aGUgdXNlciBwcm92aWRlZCBpbmRleCBpcyBpbnNpZGUgdGhlCi0r CQkgICBhcnJheSBib3VuZHMuICBUaHJvdyBhbiBlcnJvciBpZiBub3QuICAqLwotKwkJaWYgKGlu ZGV4LT5VLm51bWJlciA8IFRZUEVfTE9XX0JPVU5EIChpbmRleF90eXBlKQotKwkJICAgICYmIGlu ZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCi0rCQkgIGVycm9y IChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOwotKwotKwkJ aWYgKGluZGV4LT5VLm51bWJlciA+IFRZUEVfTE9XX0JPVU5EIChpbmRleF90eXBlKQotKwkJICAg ICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCi0rCQkg IGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOwot KwotKwkJbmV3X2FycmF5ID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LAotKwkJCQkJICAgaW5k ZXgtPlUubnVtYmVyLAotKwkJCQkJICAgMSwgLyogQ09VTlQgaXMgJzEnIGVsZW1lbnQgICovCi0r CQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcxJyAgKi8KLSsJCQkJCSAgIGRpbV9jb3VudCk7 Ci0rCSAgICAgIH0KLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAgICBhcnJheV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7Ci0rICAgIH0KLSsKLSsgIC8qIFdpdGgg RElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2ZSBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSwg YnV0IGV4cGVjdAotKyAgICAgYW4gYXJyYXkgb2YgYXJyYXlzLCBkZXBlbmRpbmcgb24gaG93IG1h bnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBieQotKyAgICAgdGhlIHVzZXIuICBTbyB3ZSBu ZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVuc2lvbnMgZm9yIHByaW50aW5nIGl0Ci0rICAg ICBjb3JyZWN0bHkuCi0rICAgICBTdGFydGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQgaW4gdGhlIHVz ZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmlyc3QKLSsgICAgIHJhbmdlIGFyZ3VtZW50IGV2 ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxzbyB0cmVhdGVkIGFzIGEgcmFuZ2UuCi0rICAg ICBFLmcuOgotKyAgICAgInAgYXJ5KDMsIDcsIDI6MTUpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEg ZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAzCi0rICAgICByYW5nZXMuCi0rICAgICAicCBh cnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFzIG9ubHkgMSBkaW1lbnNpb24sIGJ1dCB3ZSBj YWxjdWxhdGVkIDIKLSsgICAgIHJhbmdlcy4KLSsgICAgICJwIGFyeSgyOjQsIDUsIDcpIiBpbiBG b3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBhbmQgd2UgY2FsY3VsYXRlZCAxCi0rICAgICBy YW5nZS4gICovCi0rICBpZiAoZGltX2NvdW50ID4gMSkKLSsgICAgewotKyAgICAgIHN0cnVjdCB2 YWx1ZSAqdiA9IE5VTEw7Ci0rCi0rICAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh2 YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKLSsKLSsgICAgICAvKiBFdmVyeSBTVUJTQ1JJUFRfUkFO R0UgaW4gdGhlIHVzZXIgaW5wdXQgc2lnbmlmaWVzIGFuIGFjdHVhbCByYW5nZSBpbgotKwkgdGhl IG91dHB1dCBhcnJheS4gIFNvIHdlIHRyYXZlcnNlIHRoZSBTVUJTQ1JJUFRfQVJSQVkgYWdhaW4s IGxvb2tpbmcKLSsJIGZvciBhIHJhbmdlIGVudHJ5LiAgV2hlbiB3ZSBmaW5kIG9uZSwgd2UgdXNl IHRoZSByYW5nZSBpbmZvIHRvIGNyZWF0ZQotKwkgYW4gYWRkaXRpb25hbCByYW5nZV90eXBlIHRv IHNldCB0aGUgY29ycmVjdCBib3VuZHMgYW5kIGRpbWVuc2lvbnMgZm9yCi0rCSB0aGUgb3V0cHV0 IGFycmF5LiAgSW4gYWRkaXRpb24sIHdlIG1heSBoYXZlIGEgc3RyaWRlIHZhbHVlIHRoYXQgaXMg bm90Ci0rCSAnMScsIGZvcmNpbmcgdXMgdG8gYWRqdXN0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMg aW4gYSByYW5nZSwgYWNjb3JkaW5nCi0rCSB0byB0aGUgc3RyaWRlIHZhbHVlLiAgKi8KLSsgICAg ICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsJewotKwkgIHN0cnVjdCBzdWJzY3JpcHRf c3RvcmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKLSsKLSsJICBpZiAoaW5kZXgtPmtp bmQgPT0gU1VCU0NSSVBUX1JBTkdFKQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgdHlwZSAqcmFu Z2VfdHlwZSwgKmludGVyaW1fYXJyYXlfdHlwZTsKLSsKLSsJICAgICAgaW50IG5ld19sZW5ndGg7 Ci0gCi0tICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQg LSBsb3dfYm91bmQgKyAxKTsKLSsJICAgICAgLyogVGhlIGxlbmd0aCBvZiBhIHN1Yi1kaW1lbnNp b24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0aGUKLSsJCSBib3VuZHMgcGx1cyB0aGUgc3Rh cnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUgbW9kaWZpZWQgYnkKLSsJCSBhIHVzZXIgcHJv dmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KLSsJICAgICAgbmV3X2xlbmd0aCA9IGluZGV4LT5VLnJh bmdlLmhpZ2ggLSBpbmRleC0+VS5yYW5nZS5sb3c7Ci0rCi0rCSAgICAgIG5ld19sZW5ndGggLz0g aW5kZXgtPlUucmFuZ2Uuc3RyaWRlOwotKwotKwkgICAgICByYW5nZV90eXBlCi0rCQk9IGNyZWF0 ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKLSsJCQkJCSAgICBlbHRfdHlwZSwKLSsJCQkJCSAg ICBpbmRleC0+VS5yYW5nZS5sb3csCi0rCQkJCQkgICAgaW5kZXgtPlUucmFuZ2UubG93ICsgbmV3 X2xlbmd0aCk7Ci0rCi0rCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNyZWF0ZV9hcnJheV90 eXBlIChOVUxMLAotKwkJCQkJCSAgICAgIGVsdF90eXBlLAotKwkJCQkJCSAgICAgIHJhbmdlX3R5 cGUpOwotKwotKwkgICAgICBUWVBFX0NPREUgKGludGVyaW1fYXJyYXlfdHlwZSkKLSsJCT0gVFlQ RV9DT0RFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKLSsKLSsJICAgICAgdiA9IGFsbG9jYXRl X3ZhbHVlIChpbnRlcmltX2FycmF5X3R5cGUpOwotKwotKwkgICAgICBlbHRfdHlwZSA9IHZhbHVl X3R5cGUgKHYpOwotKwkgICAgfQotKwotKwl9Ci0rICAgICAgdmFsdWVfY29udGVudHNfY29weSAo diwgMCwgbmV3X2FycmF5LCAwLCBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpKTsKLSsgICAgICByZXR1 cm4gdjsKLSsgICAgfQotKwotKyAgcmV0dXJuIG5ld19hcnJheTsKLSB9Ci0gCi0gCi1AQCAtMTgx MCwxOSArMjEwNiw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAotICAgICAgIHN3aXRjaCAoY29kZSkKLSAJewotIAljYXNlIFRZUEVfQ09ERV9B UlJBWToKLS0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKLS0JICAg IHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFyZzEsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkg IGVsc2UKLS0JICAgIGdvdG8gbXVsdGlfZjc3X3N1YnNjcmlwdDsKLS0KLSAJY2FzZSBUWVBFX0NP REVfU1RSSU5HOgotLQkgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQot LQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7 Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAgICBhcmcyID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhf Y29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOwotLQkgICAgICByZXR1cm4gdmFsdWVfc3Vic2Ny aXB0IChhcmcxLCB2YWx1ZV9hc19sb25nIChhcmcyKSk7Ci0tCSAgICB9Ci0rCSAgcmV0dXJuIHZh bHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBub3NpZGUpOwotIAotIAlj YXNlIFRZUEVfQ09ERV9QVFI6Ci0gCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1AQCAtMjIyMyw0OSAr MjUwOCw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAotIAl9Ci0gICAgICAgcmV0dXJuIChhcmcxKTsKLSAKLS0gICAgbXVsdGlfZjc3X3N1YnNj cmlwdDoKLS0gICAgICB7Ci0tCUxPTkdFU1Qgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJ TVNdOwotLQlpbnQgbmRpbWVuc2lvbnMgPSAxLCBpOwotLQlzdHJ1Y3QgdmFsdWUgKmFycmF5ID0g YXJnMTsKLS0KLS0JaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLS0JICBlcnJvciAoXygi VG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMp OwotLQotLQluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOwotLQotLQlp ZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0tCSAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBz dWJzY3JpcHRzIikpOwotLQotLQlnZGJfYXNzZXJ0IChuYXJncyA+IDApOwotLQotLQkvKiBOb3cg dGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lvbiAK LS0JICAgbGV0IHVzIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlzdHMg aW4gdGhlIGFycmF5LiAgKi8KLS0KLS0JLyogVGFrZSBhcnJheSBpbmRpY2VzIGxlZnQgdG8gcmln aHQuICAqLwotLQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLS0JICB7Ci0tCSAgICAvKiBF dmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3 LiAgKi8KLS0JICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBw b3MsIG5vc2lkZSk7Ci0tCi0tCSAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQgYXJyYXkuICAq LwotLQotLQkgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9uZyAoYXJnMik7Ci0t CSAgfQotLQotLQkvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFycmFuZ2VkIHJpZ2h0IHRv IGxlZnQuICAqLwotLQlmb3IgKGkgPSBuYXJnczsgaSA+IDA7IGktLSkKLS0JICB7Ci0tCSAgICBz dHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5 KSk7Ci0tCSAgICBMT05HRVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLS0KLS0J ICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwgaW5kZXgsCi0tCQkJ CQkgICAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKLS0JICB9Ci0tCi0tCXJl dHVybiBhcnJheTsKLS0gICAgICB9Ci0tCi0gICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6Ci0g ICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRl KTsKLSAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLUBAIC0zMTIzLDYgKzMzNjUsOSBA QCBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKLSAgIGludCBu ZGltZW4gPSAxOwotICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOwotIAotKyAgaWYgKFRZUEVfQ09E RSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKLSsgICAgcmV0dXJuIDE7Ci0rCi0g ICBpZiAoKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZKSkKLSAgICAg ZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBlIikpOwot IAotZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5jIGIvZ2RiL2V4cHByaW50LmMKLWluZGV4IGMz N2VjYjAuLjIxNGQ1OGUgMTAwNjQ0Ci0tLS0gYS9nZGIvZXhwcHJpbnQuYwotKysrIGIvZ2RiL2V4 cHByaW50LmMKLUBAIC01NjgsMTIgKzU2OCwxMCBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAotIAkqcG9zICs9IDI7Ci0gCi0gCWZwdXRz X2ZpbHRlcmVkICgiUkFOR0UoIiwgc3RyZWFtKTsKLS0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9C T1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkK LSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9PSBTVUJBUlJBWV9MT1df Qk9VTkQpCi0gCSAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NP TU1BKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Ci0tCWlmIChyYW5nZV90eXBl ID09IExPV19CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRf REVGQVVMVCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VC QVJSQVlfSElHSF9CT1VORCkKLSAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBS RUNfQUJPVkVfQ09NTUEpOwotIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOwotIAlyZXR1 cm47Ci1AQCAtMTA1NSwxNiArMTA1MywxNiBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotIAlzd2l0Y2ggKHJhbmdlX3R5cGUpCi0gCSAgewot LQkgIGNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VCQVJSQVlfTk9ORV9CT1VO RDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0cmVhbSk7Ci0gCSAgICBi cmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VCQVJSQVlfSElH SF9CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uRVhQJyIsIHN0cmVhbSk7 Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIEhJR0hfQk9VTkRfREVGQVVMVDoKLSsJICBjYXNlIFNV QkFSUkFZX0xPV19CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4uJyIs IHN0cmVhbSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIE5PTkVfQk9VTkRfREVGQVVMVDoKLSsJ ICBjYXNlIChTVUJBUlJBWV9MT1dfQk9VTkQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EKToKLSAJICAg IGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4uRVhQJyIsIHN0cmVhbSk7Ci0gCSAgICBicmVh azsKLSAJICBkZWZhdWx0OgotQEAgLTEwNzIsMTEgKzEwNzAsOSBAQCBkdW1wX3N1YmV4cF9ib2R5 X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkgICAgYnJlYWs7Ci0gCSAgfQot IAotLQlpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQKLS0JICAgIHx8IHJhbmdl X3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQotKwlpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJB WV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19CT1VORCkKLSAJICBlbHQgPSBkdW1wX3N1YmV4 cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0tCWlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZB VUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKChy YW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkK LSAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0gICAgICAgfQotICAg ICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9leHByZXNzaW9uLmggYi9nZGIvZXhwcmVzc2lv bi5oCi1pbmRleCA0OTUyZDg0Li4zNGNhNTRiIDEwMDY0NAotLS0tIGEvZ2RiL2V4cHJlc3Npb24u aAotKysrIGIvZ2RiL2V4cHJlc3Npb24uaAotQEAgLTE1MiwxNyArMTUyLDE3IEBAIGV4dGVybiB2 b2lkIGR1bXBfcmF3X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosCi0gCQkJCSBzdHJ1 Y3QgdWlfZmlsZSAqLCBjaGFyICopOwotIGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Np b24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwotIAotLS8qIEluIGFu IE9QX1JBTkdFIGV4cHJlc3Npb24sIGVpdGhlciBib3VuZCBjb3VsZCBiZSBlbXB0eSwgaW5kaWNh dGluZwotLSAgIHRoYXQgaXRzIHZhbHVlIGlzIGJ5IGRlZmF1bHQgdGhhdCBvZiB0aGUgY29ycmVz cG9uZGluZyBib3VuZCBvZiB0aGUKLS0gICBhcnJheSBvciBzdHJpbmcuICBTbyB3ZSBoYXZlIGZv dXIgc29ydHMgb2Ygc3VicmFuZ2UuICBUaGlzCi0tICAgZW51bWVyYXRpb24gdHlwZSBpcyB0byBp ZGVudGlmeSB0aGlzLiAgKi8KLS0gICAKLSsvKiBJbiBhbiBPUF9SQU5HRSBleHByZXNzaW9uLCBl aXRoZXIgYm91bmQgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCBvciBub3QuCi0rICAgSW4g YWRkaXRpb24gdG8gdGhpcywgdGhlIHVzZXIgY2FuIGFsc28gc3BlY2lmeSBhIHN0cmlkZSB2YWx1 ZSB0byBpbmRpY2F0ZWQKLSsgICBvbmx5IGNlcnRhaW4gZWxlbWVudHMgb2YgdGhlIGFycmF5LiAg VGhpcyBlbnVtZXJhdGlvbiB0eXBlIGlzIHRvIGlkZW50aWZ5Ci0rICAgdGhpcy4gICovCi0rCi0g ZW51bSByYW5nZV90eXBlCi0gICB7Ci0tICAgIEJPVEhfQk9VTkRfREVGQVVMVCwJCS8qICIoOiki ICAqLwotLSAgICBMT1dfQk9VTkRfREVGQVVMVCwJCS8qICIoOmhpZ2gpIiAgKi8KLS0gICAgSElH SF9CT1VORF9ERUZBVUxULAkJLyogIihsb3c6KSIgICovCi0tICAgIE5PTkVfQk9VTkRfREVGQVVM VAkJLyogIihsb3c6aGlnaCkiICAqLwotKyAgICBTVUJBUlJBWV9OT05FX0JPVU5EID0gMHgwLAkJ LyogIiggOiApIiAgKi8KLSsgICAgU1VCQVJSQVlfTE9XX0JPVU5EID0gMHgxLAkJLyogIihsb3c6 KSIgICovCi0rICAgIFNVQkFSUkFZX0hJR0hfQk9VTkQgPSAweDIsCQkvKiAiKDpoaWdoKSIgICov Ci0rICAgIFNVQkFSUkFZX1NUUklERSA9IDB4NAkJLyogIig6OnN0cmlkZSkiICAqLwotICAgfTsK LSAKLSAjZW5kaWYgLyogIWRlZmluZWQgKEVYUFJFU1NJT05fSCkgKi8KLWRpZmYgLS1naXQgYS9n ZGIvZi1leHAueSBiL2dkYi9mLWV4cC55Ci1pbmRleCBlMzE0OGEzLi43MWYxODIzIDEwMDY0NAot LS0tIGEvZ2RiL2YtZXhwLnkKLSsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjUzLDMxICsyNTMsNjMg QEAgYXJnbGlzdCA6CXN1YnJhbmdlCi0gICAgCi0gYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAg ICVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyBhcmdsaXN0X2xlbisrOyB9Ci0rCXwJYXJnbGlzdCAn LCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IGFyZ2xpc3RfbGVuKys7IH0KLSAJ OwotIAotIC8qIFRoZXJlIGFyZSBmb3VyIHNvcnRzIG9mIHN1YnJhbmdlIHR5cGVzIGluIEY5MC4g ICovCi0gCi0gc3VicmFuZ2U6CWV4cCAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCi0tCQkJeyB3 cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IAotLQkJCSAgd3JpdGVfZXhw X2VsdF9sb25nY3N0IChwc3RhdGUsIE5PTkVfQk9VTkRfREVGQVVMVCk7Ci0rCQkJeyB3cml0ZV9l eHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xv bmdjc3QgKHBzdGF0ZSwKLSsJCQkJCQkgU1VCQVJSQVlfTE9XX0JPVU5EIHwgU1VCQVJSQVlfSElH SF9CT1VORCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7 IH0KLSAJOwotIAotIHN1YnJhbmdlOglleHAgJzonCSVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyB3 cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0tCQkJICB3cml0ZV9leHBf ZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9ERUZBVUxUKTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1dfQk9VTkQpOwotIAkJCSAgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0gCTsKLSAKLSBzdWJyYW5nZToJ JzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQotIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBz dGF0ZSwgT1BfUkFOR0UpOwotLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIExP V19CT1VORF9ERUZBVUxUKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBT VUJBUlJBWV9ISUdIX0JPVU5EKTsKLSAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUs IE9QX1JBTkdFKTsgfQotIAk7Ci0gCi0gc3VicmFuZ2U6CSc6JwklcHJlYyBBQk9WRV9DT01NQQot IAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotLQkJCSAgd3Jp dGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIEJPVEhfQk9VTkRfREVGQVVMVCk7Ci0rCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTk9ORV9CT1VORCk7Ci0rCQkJ ICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJOwotKwotKy8q IEVhY2ggc3VicmFuZ2UgdHlwZSBjYW4gaGF2ZSBhIHN0cmlkZSBhcmd1bWVudC4gICovCi0rc3Vi cmFuZ2U6CWV4cCAnOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRf bG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1dfQk9VTkQKLSsJCQkJCQkgfCBTVUJBUlJBWV9I SUdIX0JPVU5ECi0rCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURFKTsKLSsJCQkgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7Ci0rCi0rc3VicmFuZ2U6CWV4cCAn OicgJzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUs IFNVQkFSUkFZX0xPV19CT1VORAotKwkJCQkJCSB8IFNVQkFSUkFZX1NUUklERSk7Ci0rCQkJICB3 cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJOwotKwotK3N1YnJh bmdlOgknOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2Nz dCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5ECi0rCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURF KTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7 Ci0rCi0rc3VicmFuZ2U6CSc6JyAnOicgZXhwICVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJeyB3cml0 ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0 X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfU1RSSURFKTsKLSAJCQkgIHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2Yt dmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKLWluZGV4IDA4MjE1ZTIuLmU2ZWNhNmEgMTAw NjQ0Ci0tLS0gYS9nZGIvZi12YWxwcmludC5jCi0rKysgYi9nZGIvZi12YWxwcmludC5jCi1AQCAt MTIxLDggKzEyMSwxNCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNp b25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAKLSAgIGlmIChuc3MgIT0gbmRpbWVuc2lvbnMpCi0g ICAgIHsKLS0gICAgICBzaXplX3QgZGltX3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkpOwotKyAgICAgIHNpemVfdCBkaW1fc2l6ZTsKLSAgICAgICBzaXplX3Qgb2Zm cyA9IDA7Ci0rICAgICAgTE9OR0VTVCBieXRlX3N0cmlkZSA9IGFicyAoVFlQRV9CWVRFX1NUUklE RSAocmFuZ2VfdHlwZSkpOwotKwotKyAgICAgIGlmIChieXRlX3N0cmlkZSkKLSsgICAgICAgIGRp bV9zaXplID0gYnl0ZV9zdHJpZGU7Ci0rICAgICAgZWxzZQotKyAgICAgICAgZGltX3NpemUgPSBU WVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotIAotICAgICAgIGZvciAoaSA9 IGxvd2VyYm91bmQ7Ci0gCSAgIChpIDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlv bnMtPnByaW50X21heCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlw ZXMuYwotaW5kZXggZWM1YzE3YS4uODg4MDFhYyAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5j Ci0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTgzNiw3ICs4MzYsOCBAQCBhbGxvY2F0ZV9zdHVi X21ldGhvZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gc3RydWN0IHR5cGUgKgotIGNyZWF0ZV9yYW5n ZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBl LAotIAkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqbG93X2JvdW5kLAotLQkJICAgY29u c3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCkKLSsJCSAgIGNvbnN0IHN0cnVjdCBk eW5hbWljX3Byb3AgKmhpZ2hfYm91bmQsCi0rCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9w ICpzdHJpZGUpCi0gewotICAgaWYgKHJlc3VsdF90eXBlID09IE5VTEwpCi0gICAgIHJlc3VsdF90 eXBlID0gYWxsb2NfdHlwZV9jb3B5IChpbmRleF90eXBlKTsKLUBAIC04NTEsNiArODUyLDcgQEAg Y3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUg KmluZGV4X3R5cGUsCi0gICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1 Y3QgcmFuZ2VfYm91bmRzKSk7Ci0gICBUWVBFX1JBTkdFX0RBVEEgKHJlc3VsdF90eXBlKS0+bG93 ID0gKmxvd19ib3VuZDsKLSAgIFRZUEVfUkFOR0VfREFUQSAocmVzdWx0X3R5cGUpLT5oaWdoID0g KmhpZ2hfYm91bmQ7Ci0rICBUWVBFX1JBTkdFX0RBVEEgKHJlc3VsdF90eXBlKS0+c3RyaWRlID0g KnN0cmlkZTsKLSAKLSAgIGlmIChsb3dfYm91bmQtPmtpbmQgPT0gUFJPUF9DT05TVCAmJiBsb3df Ym91bmQtPmRhdGEuY29uc3RfdmFsID49IDApCi0gICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90 eXBlKSA9IDE7Ci1AQCAtODc5LDcgKzg4MSw3IEBAIHN0cnVjdCB0eXBlICoKLSBjcmVhdGVfc3Rh dGljX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmlu ZGV4X3R5cGUsCi0gCQkJICBMT05HRVNUIGxvd19ib3VuZCwgTE9OR0VTVCBoaWdoX2JvdW5kKQot IHsKLS0gIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoOwotKyAgc3RydWN0IGR5bmFtaWNf cHJvcCBsb3csIGhpZ2gsIHN0cmlkZTsKLSAKLSAgIGxvdy5raW5kID0gUFJPUF9DT05TVDsKLSAg IGxvdy5kYXRhLmNvbnN0X3ZhbCA9IGxvd19ib3VuZDsKLUBAIC04ODcsNyArODg5LDExIEBAIGNy ZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3Qg dHlwZSAqaW5kZXhfdHlwZSwKLSAgIGhpZ2gua2luZCA9IFBST1BfQ09OU1Q7Ci0gICBoaWdoLmRh dGEuY29uc3RfdmFsID0gaGlnaF9ib3VuZDsKLSAKLS0gIHJlc3VsdF90eXBlID0gY3JlYXRlX3Jh bmdlX3R5cGUgKHJlc3VsdF90eXBlLCBpbmRleF90eXBlLCAmbG93LCAmaGlnaCk7Ci0rICBzdHJp ZGUua2luZCA9IFBST1BfQ09OU1Q7Ci0rICBzdHJpZGUuZGF0YS5jb25zdF92YWwgPSAwOwotKwot KyAgcmVzdWx0X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5 cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG93LCAmaGlnaCwgJnN0 cmlkZSk7Ci0gCi0gICByZXR1cm4gcmVzdWx0X3R5cGU7Ci0gfQotQEAgLTEwODQsMTYgKzEwOTAs MjAgQEAgY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9zdHJpZGUgKHN0cnVjdCB0eXBlICpyZXN1bHRf dHlwZSwKLSAgICAgICAmJiAoIXR5cGVfbm90X2Fzc29jaWF0ZWQgKHJlc3VsdF90eXBlKQotIAkg ICYmICF0eXBlX25vdF9hbGxvY2F0ZWQgKHJlc3VsdF90eXBlKSkpCi0gICAgIHsKLS0gICAgICBM T05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKLSsgICAgICBMT05HRVNUIGxvd19ib3VuZCwg aGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7Ci0gCi0gICAgICAgaWYgKGdldF9kaXNjcmV0ZV9ib3Vu ZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi0gCWxvd19ib3Vu ZCA9IGhpZ2hfYm91bmQgPSAwOwotICAgICAgIGVsZW1lbnRfdHlwZSA9IGNoZWNrX3R5cGVkZWYg KGVsZW1lbnRfdHlwZSk7Ci0rICAgICAgYnl0ZV9zdHJpZGUgPSBhYnMgKFRZUEVfQllURV9TVFJJ REUgKHJhbmdlX3R5cGUpKTsKLSsKLSAgICAgICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0dGluZyB0 aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSAJIGVtcHR5IGFycmF5cyB3aXRo IHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5kLgotIAkgSW4g c3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gICovCi0gICAgICAg aWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCi0gCVRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkg PSAwOwotKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKLSsJVFlQRV9MRU5HVEggKHJl c3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsK LSAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4gMCkKLSAJVFlQRV9MRU5HVEggKHJlc3VsdF90 eXBlKSA9Ci0gCSAgKGJpdF9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpICsg NykgLyA4OwotQEAgLTE4ODgsNyArMTg5OCw4IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3Ry dWN0IHR5cGUgKmR5bl9yYW5nZV90eXBlLAotICAgQ09SRV9BRERSIHZhbHVlOwotICAgc3RydWN0 IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlLCAqc3RhdGljX3RhcmdldF90eXBlOwotICAgY29uc3Qg c3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLS0gIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93X2Jv dW5kLCBoaWdoX2JvdW5kOwotKyAgY29uc3Qgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpi YXRvbjsKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJp ZGU7Ci0gCi0gICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKGR5bl9yYW5nZV90eXBlKSA9PSBUWVBF X0NPREVfUkFOR0UpOwotIAotQEAgLTE5MTksMTMgKzE5MzAsMjEgQEAgcmVzb2x2ZV9keW5hbWlj X3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUsCi0gICAgICAgaGlnaF9ib3VuZC5r aW5kID0gUFJPUF9VTkRFRklORUQ7Ci0gICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9 IDA7Ci0gICAgIH0KLSsgIAotKyAgcHJvcCA9ICZUWVBFX1JBTkdFX0RBVEEgKGR5bl9yYW5nZV90 eXBlKS0+c3RyaWRlOwotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgTlVM TCwgYWRkcl9zdGFjaywgJnZhbHVlKSkKLSsgICAgewotKyAgICAgIHN0cmlkZS5raW5kID0gUFJP UF9DT05TVDsKLSsgICAgICBzdHJpZGUuZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKLSsgICAgfQot IAotICAgc3RhdGljX3RhcmdldF90eXBlCi0gICAgID0gcmVzb2x2ZV9keW5hbWljX3R5cGVfaW50 ZXJuYWwgKFRZUEVfVEFSR0VUX1RZUEUgKGR5bl9yYW5nZV90eXBlKSwKLSAJCQkJICAgICBhZGRy X3N0YWNrLCAwKTsKLSAgIHN0YXRpY19yYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKGNv cHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpLAotIAkJCQkJIHN0YXRpY190YXJnZXRfdHlwZSwKLS0J CQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Ci0rCQkJCQkgJmxvd19ib3VuZCwgJmhpZ2hf Ym91bmQsICZzdHJpZGUpOwotKwotICAgVFlQRV9SQU5HRV9EQVRBIChzdGF0aWNfcmFuZ2VfdHlw ZSktPmZsYWdfYm91bmRfZXZhbHVhdGVkID0gMTsKLSAgIHJldHVybiBzdGF0aWNfcmFuZ2VfdHlw ZTsKLSB9Ci1AQCAtMjE3Niw4ICsyMTk1LDE4IEBAIHJlc29sdmVfZHluYW1pY190eXBlX2ludGVy bmFsIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAgIGlmIChwcm9wICE9IE5VTEwKLSAgICAgICAmJiBk d2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkp Ci0gICAgIHsKLS0gICAgICBUWVBFX0RZTl9QUk9QX0FERFIgKHByb3ApID0gdmFsdWU7Ci0tICAg ICAgVFlQRV9EWU5fUFJPUF9LSU5EIChwcm9wKSA9IFBST1BfQ09OU1Q7Ci0rICAgICAgc3RydWN0 IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHJlc29sdmVkX3R5cGUpOwotKwot KyAgICAgIC8qIEFkanVzdCB0aGUgZGF0YSBsb2NhdGlvbiB3aXRoIHRoZSB2YWx1ZSBvZiBieXRl IHN0cmlkZSBpZiBzZXQsIHdoaWNoCi0rICAgICAgICAgY2FuIGRlc2NyaWJlIHRoZSBzZXBhcmF0 aW9uIGJldHdlZW4gc3VjY2Vzc2l2ZSBlbGVtZW50cyBhbG9uZyB0aGUKLSsgICAgICAgICBkaW1l bnNpb24uICAqLwotKyAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSA8IDAp Ci0rICAgICAgICB2YWx1ZSArPSAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVf TE9XX0JPVU5EIChyYW5nZV90eXBlKSkKLSsgICAgICAgICAgICAgICAgICAqIFRZUEVfQllURV9T VFJJREUgKHJhbmdlX3R5cGUpOwotKwotKyAgICAgIFRZUEVfREFUQV9MT0NBVElPTl9BRERSIChy ZXNvbHZlZF90eXBlKSA9IHZhbHVlOwotKyAgICAgIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EIChy ZXNvbHZlZF90eXBlKSA9IFBST1BfQ09OU1Q7Ci0rCi0gICAgIH0KLSAKLSAgIHJldHVybiByZXNv bHZlZF90eXBlOwotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgK LWluZGV4IDJkZGEwNzQuLjk3MjI3YzkgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidHlwZXMuaAotKysr IGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC01NzcsNiArNTc3LDEwIEBAIHN0cnVjdCByYW5nZV9ib3Vu ZHMKLSAKLSAgIHN0cnVjdCBkeW5hbWljX3Byb3AgaGlnaDsKLSAKLSsgIC8qICogU3RyaWRlIG9m IHJhbmdlLiAgKi8KLSsKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3Agc3RyaWRlOwotKwotICAgLyog VHJ1ZSBpZiBISUdIIHJhbmdlIGJvdW5kIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg aW4gdGhlCi0gICAgICBzdWJyYW5nZS4gVGhpcyBhZmZlY3RzIGhvdyB0aGUgZmluYWwgaGlnaHQg Ym91bmQgaXMgY29tcHV0ZWQuICAqLwotIAotQEAgLTc0MCw2ICs3NDQsNyBAQCBzdHJ1Y3QgbWFp bl90eXBlCi0gCi0gICAgIHN0cnVjdCByYW5nZV9ib3VuZHMgKmJvdW5kczsKLSAKLSsKLSAgIH0g Zmxkc19ibmRzOwotIAotICAgLyogKiBTbG90IHRvIHBvaW50IHRvIGFkZGl0aW9uYWwgbGFuZ3Vh Z2Utc3BlY2lmaWMgZmllbGRzIG9mIHRoaXMKLUBAIC0xMjU1LDYgKzEyNjAsMTUgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Ci0gICBUWVBFX1JB TkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotICNkZWZpbmUgVFlQRV9MT1dfQk9VTkRf S0lORChyYW5nZV90eXBlKSBcCi0gICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy5r aW5kCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFO R0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEuY29uc3RfdmFsCi0rI2RlZmluZSBUWVBF X0JZVEVfU1RSSURFX0JMT0NLKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5n ZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jZXhwcgotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9M T0NMSVNUKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3Ry aWRlLmRhdGEubG9jbGlzdAotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9LSU5EKHJhbmdlX3R5 cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmtpbmQKLSsKLSAK LSAvKiBQcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIHRoZSB0eXBlIGRhdGEgbG9jYXRpb24uICAqLwot ICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBcCi1AQCAtMTI4OSw2ICsxMzAz LDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7 Ci0gICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChUWVBFX0lOREVYX1RZUEUoYXJyYXl0eXBl KSkKLSAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVEKGFycmF5dHlw ZSkgXAotICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChUWVBFX0lOREVYX1RZUEUoYXJyYXl0 eXBlKSkKLSsjZGVmaW5lIFRZUEVfQVJSQVlfU1RSSURFX0lTX1VOREVGSU5FRChhcnJheXR5cGUp IFwKLSsgICAoVFlQRV9CWVRFX1NUUklERShUWVBFX0lOREVYX1RZUEUoYXJyYXl0eXBlKSkgPT0g MCkKLSsKLSAKLSAjZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFMVUUoYXJyYXl0eXBl KSBcCi0gICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkK LUBAIC0xNzgzLDYgKzE4MDAsNyBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90 eXBlX3dpdGhfc3RyaWRlCi0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfcmFuZ2VfdHlw ZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICAgICAgIGNvbnN0IHN0cnVj dCBkeW5hbWljX3Byb3AgKiwKLSsJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3Ag KiwKLSAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKik7Ci0gCi0gZXh0ZXJu IHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5 cGUgKiwKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCAyYjAw NzA4Li45OTJhZjg3IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBiL2dkYi9wYXJzZS5j Ci1AQCAtMTAwNiwyMiArMTAwNiwyMCBAQCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0 IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAotIAotICAgICBjYXNlIE9QX1JB TkdFOgotICAgICAgIG9wbGVuID0gMzsKLSsgICAgICBhcmdzID0gMDsKLSAgICAgICByYW5nZV90 eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKLSAJbG9uZ2VzdF90b19pbnQgKGV4cHItPmVsdHNbZW5k cG9zIC0gMl0ubG9uZ2NvbnN0KTsKLSAKLS0gICAgICBzd2l0Y2ggKHJhbmdlX3R5cGUpCi0tCXsK LS0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKLS0JY2FzZSBISUdIX0JPVU5EX0RFRkFVTFQ6Ci0t CSAgYXJncyA9IDE7Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgotLQkg IGFyZ3MgPSAwOwotLQkgIGJyZWFrOwotLQljYXNlIE5PTkVfQk9VTkRfREVGQVVMVDoKLS0JICBh cmdzID0gMjsKLS0JICBicmVhazsKLS0JfQotKyAgICAgIC8qIEluY3JlbWVudCB0aGUgYXJndW1l bnQgY291bnRlciBmb3IgZWFjaCBhcmd1bWVudAotKwkgcHJvdmlkZWQgYnkgdGhlIHVzZXIuICAq LwotKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkgPT0gU1VCQVJS QVlfTE9XX0JPVU5EKQotKwlhcmdzKys7Ci0rCi0rICAgICAgaWYgKChyYW5nZV90eXBlICYgU1VC QVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJYXJncysrOwotKwot KyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX1NUUklERSkgPT0gU1VCQVJSQVlfU1RS SURFKQotKwlhcmdzKys7Ci0gCi0gICAgICAgYnJlYWs7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3J1 c3QtZXhwLnkgYi9nZGIvcnVzdC1leHAueQotaW5kZXggYWViNjA1OC4uYjFiOTYzMyAxMDA2NDQK LS0tLSBhL2dkYi9ydXN0LWV4cC55Ci0rKysgYi9nZGIvcnVzdC1leHAueQotQEAgLTI0MjksMjMg KzI0MjksMTcgQEAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAoc3RydWN0IHBhcnNlcl9zdGF0 ZSAqc3RhdGUsCi0gCi0gICAgIGNhc2UgT1BfUkFOR0U6Ci0gICAgICAgewotLQllbnVtIHJhbmdl X3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsJZW51bSByYW5nZV90eXBlIGtpbmQg PSBTVUJBUlJBWV9OT05FX0JPVU5EOwotIAotIAlpZiAob3BlcmF0aW9uLT5sZWZ0Lm9wICE9IE5V TEwpCi0gCSAgewotIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAoc3RhdGUsIG9wZXJh dGlvbi0+bGVmdC5vcCwgdG9wKTsKLS0JICAgIGtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Ci0r CSAgICBraW5kID0gU1VCQVJSQVlfTE9XX0JPVU5EOwotIAkgIH0KLSAJaWYgKG9wZXJhdGlvbi0+ cmlnaHQub3AgIT0gTlVMTCkKLSAJICB7Ci0gCSAgICBjb252ZXJ0X2FzdF90b19leHByZXNzaW9u IChzdGF0ZSwgb3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKLS0JICAgIGlmIChraW5kID09IEJP VEhfQk9VTkRfREVGQVVMVCkKLS0JICAgICAga2luZCA9IExPV19CT1VORF9ERUZBVUxUOwotLQkg ICAgZWxzZQotLQkgICAgICB7Ci0tCQlnZGJfYXNzZXJ0IChraW5kID09IEhJR0hfQk9VTkRfREVG QVVMVCk7Ci0tCQlraW5kID0gTk9ORV9CT1VORF9ERUZBVUxUOwotLQkgICAgICB9Ci0rCSAgICBr aW5kID0gKHJhbmdlX3R5cGUpIChraW5kIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7Ci0gCSAgfQot IAl3cml0ZV9leHBfZWx0X29wY29kZSAoc3RhdGUsIE9QX1JBTkdFKTsKLSAJd3JpdGVfZXhwX2Vs dF9sb25nY3N0IChzdGF0ZSwga2luZCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3J1c3QtbGFuZy5jIGIv Z2RiL3J1c3QtbGFuZy5jCi1pbmRleCAxN2IyMGM2Li4yOTUwMDJmIDEwMDY0NAotLS0tIGEvZ2Ri L3J1c3QtbGFuZy5jCi0rKysgYi9nZGIvcnVzdC1sYW5nLmMKLUBAIC0xMjQxLDkgKzEyNDEsOSBA QCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3Np ZGUgbm9zaWRlKQotICAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdlc3RfdG9faW50IChl eHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7Ci0gICAqcG9zICs9IDM7Ci0gCi0tICBpZiAo a2luZCA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBOT05FX0JPVU5EX0RFRkFVTFQp Ci0rICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19CT1VO RCkKLSAgICAgbG93ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3Np ZGUpOwotLSAgaWYgKGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBOT05FX0JP VU5EX0RFRkFVTFQpCi0rICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKSA9PSBTVUJB UlJBWV9ISUdIX0JPVU5EKQotICAgICBoaWdoID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUs IGV4cCwgcG9zLCBub3NpZGUpOwotIAotICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi1AQCAt MTMzMiw3ICsxMzMyLDcgQEAgcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IHZhbHVlICpyYW5nZSwKLSAKLSAgICpsb3cgPSAwOwotICAgKmhpZ2ggPSAwOwotLSAg KmtpbmQgPSBCT1RIX0JPVU5EX0RFRkFVTFQ7Ci0rICAqa2luZCA9IFNVQkFSUkFZX05PTkVfQk9V TkQ7Ci0gCi0gICBpZiAoVFlQRV9ORklFTERTICh0eXBlKSA9PSAwKQotICAgICByZXR1cm47Ci1A QCAtMTM0MCwxNSArMTM0MCwxNCBAQCBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAotICAgaSA9IDA7Ci0gICBpZiAoc3RyY21wIChUWVBF X0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQotICAgICB7Ci0tICAgICAgKmtp bmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Ci0rICAgICAgKmtpbmQgPSBTVUJBUlJBWV9MT1dfQk9V TkQ7Ci0gICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgMCkp OwotICAgICAgICsraTsKLSAgICAgfQotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkgPiBpCi0g ICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLCAiZW5kIikgPT0gMCkK LSAgICAgewotLSAgICAgICpraW5kID0gKCpraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVAotLQkg ICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9VTkRfREVGQVVMVCk7Ci0rICAgICAg KmtpbmQgPSAocmFuZ2VfdHlwZSkgKCpraW5kIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7Ci0gICAg ICAgKmhpZ2ggPSB2YWx1ZV9hc19sb25nICh2YWx1ZV9maWVsZCAocmFuZ2UsIGkpKTsKLSAgICAg fQotIH0KLUBAIC0xMzYzLDcgKzEzNjIsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAgIHN0cnVjdCB0eXBl ICpyaHN0eXBlOwotICAgTE9OR0VTVCBsb3csIGhpZ2hfYm91bmQ7Ci0gICAvKiBJbml0aWFsaXpl ZCB0byBhcHBlYXNlIHRoZSBjb21waWxlci4gICovCi0tICBlbnVtIHJhbmdlX3R5cGUga2luZCA9 IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsgIGVudW0gcmFuZ2VfdHlwZSBraW5kID0gU1VCQVJSQVlf Tk9ORV9CT1VORDsKLSAgIExPTkdFU1QgaGlnaCA9IDA7Ci0gICBpbnQgd2FudF9zbGljZSA9IDA7 Ci0gCi1AQCAtMTQyNSw3ICsxNDI0LDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCi0gCWVycm9yIChfKCJDYW5u b3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOwotIAotICAgICAgIGlmICh3YW50X3NsaWNl Ci0tCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JPVU5E X0RFRkFVTFQpKQotKwkgICYmICgoa2luZCAmIFNVQkFSUkFZX0xPV19CT1VORCkgIT0gU1VCQVJS QVlfTE9XX0JPVU5EKSkKLSAJbG93ID0gbG93X2JvdW5kOwotICAgICAgIGlmIChsb3cgPCAwKQot IAllcnJvciAoXygiSW5kZXggbGVzcyB0aGFuIHplcm8iKSk7Ci1AQCAtMTQ0Myw3ICsxNDQyLDcg QEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVt IG5vc2lkZSBub3NpZGUsCi0gCSAgQ09SRV9BRERSIGFkZHI7Ci0gCSAgc3RydWN0IHZhbHVlICph ZGRydmFsLCAqdGVtOwotIAotLQkgIGlmIChraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVCB8fCBr aW5kID09IEhJR0hfQk9VTkRfREVGQVVMVCkKLSsJICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9ISUdI X0JPVU5EKSAhPSBTVUJBUlJBWV9ISUdIX0JPVU5EKQotIAkgICAgaGlnaCA9IGhpZ2hfYm91bmQ7 Ci0gCSAgaWYgKGhpZ2ggPCAwKQotIAkgICAgZXJyb3IgKF8oIkhpZ2ggaW5kZXggbGVzcyB0aGFu IHplcm8iKSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0aWMt YXJyYXlzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jYzllY2MwCi0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwCi1A QCAtMCwwICsxLDQyMSBAQAotKyMgQ29weXJpZ2h0IDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rIwotKyMgQ29udHJpYnV0ZWQgYnkgSW50ZWwgQ29ycC4gPGNocmlzdG9waC50 LndlaW5tYW5uQGludGVsLmNvbT4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK3N0YW5kYXJkX3Rlc3RmaWxlIHN0YXRpYy1hcnJheXMuZjkwCi0rCi0raWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkw fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7 Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBj b250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQlAx Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQlAxIiAiLipCUDEuKiIKLSsKLSsjIFRl c3RzIHN1YmFycmF5cyBvZiBvbmUgZGltZW5zaW9uYWwgYXJyYXlzIHdpdGggc3VicmFuZ2UgdmFy aWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjEiICJcXCRcWzAtOVxdKyA9IFxcKDEsIDIsIDMs IDQsIDUsIDYsIDcsIDgsIDlcXCkiIFwKLSsJCSJwcmludCBhcjEuIgotK2dkYl90ZXN0ICJwcmlu dCBhcjFcKDQ6N1wpIiAiXFwkXFswLTlcXSsgPSBcXCg0LCA1LCA2LCA3XFwpIiBcCi0rCQkicHJp bnQgYXIxXCg0OjdcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OlwpIiAiXFwkXFswLTlcXSsg PSBcXCg4LCA5XFwpLioiIFwKLSsJCSJwcmludCBhcjFcKDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50 IGFyMVwoOjNcKSIgIlxcJFxbMC05XF0rID0gXFwoMSwgMiwgM1xcKS4qIiBcCi0rCQkicHJpbnQg YXIxXCg6M1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDpcKSIgIlxcJFxbMC05XF0rID0gXFwo MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAotKwkJInByaW50IGFyMVwoOlwpIgotKwot KyMgQ2hlY2sgYXNzaWdubWVudAotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IFwkbXlfYXJ5ID0g YXIxXCgzOjhcKSIKLStnZGJfdGVzdCAicHJpbnQgXCRteV9hcnkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKLSsJCSJBc3NpZ25tZW50IG9mIHN1YmFycmF5 IHRvIHZhcmlhYmxlIgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGFyMVwoNVwpID0gNDIiCi0r CQlnZGJfdGVzdCAicHJpbnQgYXIxXCgzOjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoMywg NCwgNDIsIDYsIDcsIDhcXCkiIFwKLSsJCSJwcmludCBhcjFcKDM6OFwpIGFmdGVyIGFzc2lnbm1l bnQiCi0rZ2RiX3Rlc3QgInByaW50IFwkbXlfYXJ5IiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgz LCA0LCA1LCA2LCA3LCA4XFwpIiBcCi0rCQkiQXNzaWdubWVudCBvZiBzdWJhcnJheSB0byB2YXJp YWJsZSBhZnRlciBvcmlnaW5hbCBhcnJheSBjaGFuZ2VkIgotKwotKyMgVGVzdCBmb3Igc3ViYXJy YXlzIG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRlcmFscwotKwkJZ2RiX3Rlc3Qg InByaW50IGFyMVwoM1wpIiAiXFwkXFswLTlcXSsgPSAzIiBcCi0rCQkicHJpbnQgYXIxXCgzXCki Ci0rCi0rIyBUZXN0cyBmb3Igc3VicmFuZ2VzIG9mIDIgZGltZW5zaW9uYWwgYXJyYXlzIHdpdGgg c3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6MywgMzo0XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMywgMzNcXCkgXFwoIDI0LCAzNFxcKSBcXCkiIFwK LSsJCSJwcmludCBhcjJcKDI6MywgMzo0XCkuIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6OSw4 OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODgsIDk4XFwpIFxcKCA4OSwgOTlcXCkg XFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4OjksODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg4 OjksOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDgxLCA5MVxcKSBcXCggODIsIDky XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODo5LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50 IGFyMlwoODosODo5XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwgOThcXCkgXFwo IDg5LCA5OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6LDg6OVwpIgotK2dkYl90ZXN0ICJw cmludCBhcjJcKDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwgOThcXCkg XFwoIDg5LCA5OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6LDg6XCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyMlwoODosOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDgxLCA5MVxc KSBcXCggODIsIDkyXFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODosOjJcKSIKLSsKLStnZGJf dGVzdCAicHJpbnQgYXIyXCg6MiwyOjNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDEy LCAyMlxcKSBcXCggMTMsIDIzXFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoOjIsMjozXCkiCi0r Z2RiX3Rlc3QgInByaW50IGFyMlwoOjIsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDE4LCAyOFxcKSBcXCggMTksIDI5XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoOjIsODpcKSIK LStnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggMTEsIDIxXFwpIFxcKCAxMiwgMjJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg6Miw6Mlwp IgotKwotKyMgVGVzdCBzdWJyYW5nZXMgb2YgMiBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRl cmFscyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjJcKDcsIDM6 NlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCg3MywgNzQsIDc1LCA3NlxcKSIgXAotKwkJInBy aW50IGFyMlwoNywgMzo2XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoNyw4OlwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXCg3OCwgNzlcXCkiIFwKLSsJCSJwcmludCBhcjJcKDcsODpcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIyXCg3LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDcxLCA3 MlxcKSIgXAotKwkJInByaW50IGFyMlwoNyw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjJc KDc6OCw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDc0LCA4NFxcKSIgXAotKwkJInByaW50 IGFyMig3OjgsNFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6LDRcKSIgXAotKwkJIlxcJFxb MC05XF0rID0gXFwoODQsIDk0XFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4Oiw0XCkiCi0rZ2RiX3Rl c3QgInByaW50IGFyMlwoOjIsNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgxNCwgMjRcXCki IFwKLSsJCSJwcmludCBhcjJcKDoyLDRcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCgzLDRcKSIg XAotKwkJIlxcJFxbMC05XF0rID0gMzQiIFwKLSsJCSJwcmludCBhcjJcKDMsNFwpIgotKwotKyMg VGVzdCBzdWJhcnJheXMgb2YgMyBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRlcmFscyBhbmQg c3VicmFuZ2UgdmFyaWF0aW9ucwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NCwzOjQsNzo4XCki IFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM3LCAzMzcsIDQzN1xcKSBcXCggMjQ3 LCAzNDcsIDQ0N1xcKVwKLSsJCSBcXCkgXFwoIFxcKCAyMzgsIDMzOCwgNDM4XFwpIFxcKCAyNDgs IDM0OCwgNDQ4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6NCwzOjQsNzo4XCkiCi0r Z2RiX3Rlc3QgInByaW50IGFyM1woMjozLDQ6NSw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XChcXCggXFwoIDI0OCwgMzQ4XFwpIFxcKCAyNTgsIDM1OFxcKSBcXCkgXFwoXAotKwkJIFxcKCAy NDksIDM0OVxcKSBcXCggMjU5LCAzNTlcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjoz LDQ6NSw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw0OjUsOjJcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNDEsIDM0MVxcKSBcXCggMjUxLCAzNTFcXCkgXFwpIFxc KFwKLSsJCSBcXCggMjQyLCAzNDJcXCkgXFwoIDI1MiwgMzUyXFwpIFxcKSBcXCkiIFwKLSsJCSJw cmludCBhcjNcKDI6Myw0OjUsOjJcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsODos Nzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjg3LCAzODdcXCkgXFwoIDI5 NywgMzk3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDI4OCwgMzg4XFwpIFxcKCAyOTgsIDM5OFxcKSBc XCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyOjMsODosNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50 IGFyM1woMjozLDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjg4LCAz ODhcXCkgXFwoIDI5OCwgMzk4XFwpIFxcKSBcXChcCi0rCQkgXFwoIDI4OSwgMzg5XFwpIFxcKCAy OTksIDM5OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyOjMsODosODpcKSIKLStnZGJf dGVzdCAicHJpbnQgYXIzXCgyOjMsODosOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IFxcKCAyODEsIDM4MVxcKSBcXCggMjkxLCAzOTFcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjgyLCAz ODJcXCkgXFwoIDI5MiwgMzkyXFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw4Oiw6 MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw3OjhcKSIgXAotKwkJIlxcJFxb MC05XF0rID0gXFwoXFwoIFxcKCAyMTcsIDMxN1xcKSBcXCggMjI3LCAzMjdcXCkgXFwpIFxcKFwK LSsJCSBcXCggMjE4LCAzMThcXCkgXFwoIDIyOCwgMzI4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmlu dCBhcjNcKDI6Myw6Miw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsOjIsODpcKSIg XAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTgsIDMxOFxcKSBcXCggMjI4LCAzMjhc XCkgXFwpIFxcKFwKLSsJCSBcXCggMjE5LCAzMTlcXCkgXFwoIDIyOSwgMzI5XFwpIFxcKSBcXCki IFwKLSsJCSJwcmludCBhcjNcKDI6Myw6Miw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6 Myw6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxMSwgMzExXFwpIFxc KCAyMjEsIDMyMVxcKSBcXCkgXFwoXAotKwkJIFxcKCAyMTIsIDMxMlxcKSBcXCggMjIyLCAzMjJc XCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDoyLDoyXCkiCi0rCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woODosMzo0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwo IDgzNywgOTM3XFwpIFxcKCA4NDcsIDk0N1xcKSBcXCkgXFwoXAotKwkJIFxcKCA4MzgsIDkzOFxc KSBcXCggODQ4LCA5NDhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woODosMzo0LDc6OFwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDQ6NSw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSBcXChcXCggXFwoIDg0OCwgOTQ4XFwpIFxcKCA4NTgsIDk1OFxcKSBcXCkgXFwoXAotKwkJIFxc KCA4NDksIDk0OVxcKSBcXCggODU5LCA5NTlcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1wo ODosNDo1LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNDo1LDoyXCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQxLCA5NDFcXCkgXFwoIDg1MSwgOTUxXFwpIFxcKSBc XChcCi0rCQkgXFwoIDg0MiwgOTQyXFwpIFxcKCA4NTIsIDk1MlxcKSBcXCkgXFwpIiBcCi0rCQki cHJpbnQgYXIzXCg4Oiw0OjUsOjJcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw4Oiw3 OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4ODcsIDk4N1xcKSBcXCggODk3 LCA5OTdcXCkgXFwpIFxcKFwKLSsJCSBcXCggODg4LCA5ODhcXCkgXFwoIDg5OCwgOTk4XFwpIFxc KSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDg6LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBh cjNcKDg6LDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODg4LCA5ODhc XCkgXFwoIDg5OCwgOTk4XFwpIFxcKSBcXChcCi0rCQkgXFwoIDg4OSwgOTg5XFwpIFxcKCA4OTks IDk5OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw4Oiw4OlwpIgotK2dkYl90ZXN0 ICJwcmludCBhcjNcKDg6LDg6LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg ODgxLCA5ODFcXCkgXFwoIDg5MSwgOTkxXFwpIFxcKSBcXChcCi0rCQkgXFwoIDg4MiwgOTgyXFwp IFxcKCA4OTIsIDk5MlxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw4Oiw6MlwpIgot KwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDoyLDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSBcXChcXCggXFwoIDgxNywgOTE3XFwpIFxcKCA4MjcsIDkyN1xcKSBcXCkgXFwoXAotKwkJIFxc KCA4MTgsIDkxOFxcKSBcXCggODI4LCA5MjhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1wo ODosOjIsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsODpcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTgsIDkxOFxcKSBcXCggODI4LCA5MjhcXCkgXFwpIFxc KFwKLSsJCSBcXCggODE5LCA5MTlcXCkgXFwoIDgyOSwgOTI5XFwpIFxcKSBcXCkiIFwKLSsJCSJw cmludCBhcjNcKDg6LDoyLDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsOjJcKSIg XAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTEsIDkxMVxcKSBcXCggODIxLCA5MjFc XCkgXFwpIFxcKFwKLSsJCSBcXCggODEyLCA5MTJcXCkgXFwoIDgyMiwgOTIyXFwpIFxcKSBcXCki IFwKLSsJCSJwcmludCBhcjNcKDg6LDoyLDoyXCkiCi0rCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woOjIsMzo0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDEzNywgMjM3 XFwpIFxcKCAxNDcsIDI0N1xcKSBcXCkgXFwoXAotKwkJIFxcKCAxMzgsIDIzOFxcKSBcXCggMTQ4 LCAyNDhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyMyBcKDoyLDM6NCw3OjhcKS4iCi0rZ2Ri X3Rlc3QgInByaW50IGFyM1woOjIsMzo0LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCBcXCggMTM4LCAyMzhcXCkgXFwoIDE0OCwgMjQ4XFwpIFxcKSBcXChcCi0rCQkgXFwoIDEzOSwg MjM5XFwpIFxcKCAxNDksIDI0OVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6MiwzOjQs ODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsOjJcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIFxcKCAxMzEsIDIzMVxcKSBcXCggMTQxLCAyNDFcXCkgXFwpIFxcKFwKLSsJ CSBcXCggMTMyLCAyMzJcXCkgXFwoIDE0MiwgMjQyXFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBh cjNcKDoyLDM6NCw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDg6LDc6OFwpIiAi XFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4NywgMjg3XFwpIFxcKFwKLSsJCSAxOTcsIDI5N1xc KSBcXCkgXFwoIFxcKCAxODgsIDI4OFxcKSBcXCggMTk4LCAyOThcXCkgXFwpIFxcKSIgXAotKwkJ InByaW50IGFyM1woOjIsODosNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsODosODpc KSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODgsIDI4OFxcKSBcXCggMTk4LFwKLSsJCSAy OThcXCkgXFwpIFxcKCBcXCggMTg5LCAyODlcXCkgXFwoIDE5OSwgMjk5XFwpIFxcKSBcXCkiIFwK LSsJCSJwcmludCBhcjNcKDoyLDg6LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsODos OjJcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODEsIDI4MVxcKSBcXCggMTkxLFwKLSsJ CSAyOTFcXCkgXFwpIFxcKCBcXCggMTgyLCAyODJcXCkgXFwoIDE5MiwgMjkyXFwpIFxcKSBcXCki IFwKLSsJCSJwcmludCBhcjNcKDoyLDg6LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1wo OjIsOjIsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTE3LCAyMTdcXCkg XFwoIDEyNywgMjI3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDExOCwgMjE4XFwpIFxcKCAxMjgsIDIy OFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw6Miw3OjhcKSIKLStnZGJfdGVzdCAi cHJpbnQgYXIzXCg6Miw6Miw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDEx OCwgMjE4XFwpIFxcKCAxMjgsIDIyOFxcKSBcXCkgXFwoXAotKwkJIFxcKCAxMTksIDIxOVxcKSBc XCggMTI5LCAyMjlcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsOjIsODpcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggXFwoIDExMSwgMjExXFwpIFxcKCAxMjEsIDIyMVxcKSBcXCkgXFwoXAotKwkJIFxcKCAxMTIs IDIxMlxcKSBcXCggMTIyLCAyMjJcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsOjIs OjJcKSIKLSsKLSsjVGVzdHMgZm9yIHN1YmFycmF5cyBvZiAzIGRpbWVuc2lvbmFsIGFycmF5cyB3 aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZXMKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgzLDM6NCw3 OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDMzNywgMzQ3XFwpIFxcKCAzMzgsIDM0 OFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDMsMzo0LDc6OFwpIgotK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDMsNDo1LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNDgsIDM1OFxc KSBcXCggMzQ5LCAzNTlcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzLDQ6NSw4OlwpIgotK2dk Yl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAzNDEsIDM1MVxcKSBcXCggMzQyLCAzNTJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzLDQ6 NSw6MlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDNcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoMzQzLCAzNTNcXCkiIFwKLSsJCSJwcmludCBhcjNcKDMsNDo1LDNcKSIKLSsKLStn ZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggMjg3LCAyOTdcXCkgXFwoIDI4OCwgMjk4XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMiw4 Oiw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDg6XCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCAyODgsIDI5OFxcKSBcXCggMjg5LCAyOTlcXCkgXFwpIiBcCi0rCQkicHJp bnQgYXIzXCgyLDg6LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMiw4Oiw6MlwpIlwKLSsJ CSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODEsIDI5MVxcKSBcXCggMjgyLCAyOTJcXCkgXFwpIiBc Ci0rCQkicHJpbnQgYXIzXCgyLDg6LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMiw4Oiwz XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDI4MywgMjkzXFwpIiBcCi0rCQkicHJpbnQgYXIz XCgyLDg6LDNcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDoyLDc6OFwpIiBcCi0rCQki XFwkXFswLTlcXSsgPSBcXChcXCggMjE3LCAyMjdcXCkgXFwoIDIxOCwgMjI4XFwpIFxcKSIgXAot KwkJInByaW50IGFyM1woMiw6Miw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDoyLDg6 XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTgsIDIyOFxcKSBcXCggMjE5LCAyMjlc XCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woMiw6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjExLCAyMjFcXCkgXFwo IDIxMiwgMjIyXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMiw6Miw6MlwpIgotK2dkYl90ZXN0 ICJwcmludCBhcjNcKDIsOjIsM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyMTMsIDIyM1xc KSIgXAotKwkJInByaW50IGFyM1woMiw6MiwzXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1wo Myw0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgzNDcsIDM0OFxcKSIgXAotKwkJInBy aW50IGFyM1woMyw0LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNCw4OlwpIiBcCi0r CQkiXFwkXFswLTlcXSsgPSBcXCgzNDgsIDM0OVxcKSIgXAotK2kJCSJwcmludCBhcjNcKDMsNCw4 OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNCw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSBcXCgzNDEsIDM0MlxcKSIgXAotKwkJInByaW50IGFyM1woMyw0LDoyXCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woNSw2LDdcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gNTY3IiBcCi0rCQkicHJp bnQgYXIzXCg1LDYsN1wpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDM6NCw2LDc6OFwpIiBc Ci0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY3LCA0NjdcXCkgXFwoIDM2OCwgNDY4XFwpIFxc KSIgXAotKwkJInByaW50IGFyM1woMzo0LDYsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1wo Mzo0LDYsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM2OCwgNDY4XFwpIFxcKCAz NjksIDQ2OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDM6NCw2LDg6XCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyM1woMzo0LDYsOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM2MSwg NDYxXFwpIFxcKCAzNjIsIDQ2MlxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDM6NCw2LDoyXCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNVwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBc XCgzNjUsIDQ2NVxcKSIgXAotKwkJInByaW50IGFyM1woMzo0LDYsNVwpIgotKwotK2dkYl90ZXN0 ICJwcmludCBhcjNcKDg6LDYsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4Njcs IDk2N1xcKSBcXCggODY4LCA5NjhcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw2LDc6OFwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIDg2OCwgOTY4XFwpIFxcKCA4NjksIDk2OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNc KDg6LDYsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2LDoyXCkiIFwKLSsJCSJcXCRc WzAtOVxdKyA9IFxcKFxcKCA4NjEsIDk2MVxcKSBcXCggODYyLCA5NjJcXCkgXFwpIiBcCi0rCQki cHJpbnQgYXIzXCg4Oiw2LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNiw1XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKDg2NSwgOTY1XFwpIiBcCi0rCQkicHJpbnQgYXIzXCg4Oiw2 LDVcKSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDc6OFwpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMTY3LCAyNjdcXCkgXFwoIDE2OCwgMjY4XFwpIFxcKSIgXAotKwkJInBy aW50IGFyM1woOjIsNiw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDg6XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjgsIDI2OFxcKSBcXCggMTY5LCAyNjlcXCkgXFwp IiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woOjIs Niw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTYxLCAyNjFcXCkgXFwoIDE2Miwg MjYyXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsNiw6MlwpIgotK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDoyLDYsNVwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgxNjUsIDI2NVxcKSIgXAot KwkJInByaW50IGFyM1woOjIsNiw1XCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDU6 Niw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNTQsIDQ1NFxcKSBcXCggMzY0LCA0 NjRcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCgzOjQsNTo2LDRcKSIKLStnZGJfdGVzdCAicHJp bnQgYXIzXCg4Oiw1OjYsNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODU0LCA5NTRc XCkgXFwoIDg2NCwgOTY0XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODosNTo2LDRcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw1OjYsNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChc XCggMTU0LCAyNTRcXCkgXFwoIDE2NCwgMjY0XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoOjIs NTo2LDRcKSIKLSsKLSsjIFN0cmlkZSA+IDEKLStnZGJfdGVzdCAicHJpbnQgYXIxXCgyOjY6Mlwp IiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyLCA0LCA2XFwpIiBcCi0rCQkicHJpbnQgYXIxXCgy OjY6MlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6NjoyLDM6NFwpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMjMsIDQzLCA2M1xcKSBcXCggMjQsIDQ0LCA2NFxcKSBcXCkiIFwKLSsJ CSJwcmludCBhcjJcKDI6NjoyLDM6NFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6NjoyLDNc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIgXAotKwkJInByaW50IGFy MlwoMjo2OjIsM1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NjoyLDM6NToyLDQ6NzozXCki IFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM0LCA0MzQsIDYzNFxcKSBcXCggMjU0 LCA0NTQsIDY1NFxcKVwKLSsJCSBcXCkgXFwoIFxcKCAyMzcsIDQzNywgNjM3XFwpIFxcKCAyNTcs IDQ1NywgNjU3XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6NjoyLDM6NToyLDQ6Nzoz XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsNSw0Ojc6M1wpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMjU0LCA0NTQsIDY1NFxcKSBcXCggMjU3LCA0NTcsIDY1N1xcKVwKLSsJ CSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6NjoyLDUsNDo3OjNcKSIKLSsKLSsjIFN0cmlkZSA8 IDAKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6LTJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoOCwgNiwgNCwgMlxcKSIgXAotKwkJInByaW50IGFyMVwoODoyOi0yXCkiCi0rZ2RiX3Rlc3Qg InByaW50IGFyMlwoODoyOi0yLDM6NFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODMs IDYzLCA0MywgMjNcXCkgXFwoIDg0LCA2NCwgNDQsIDI0XFwpXAotKwkJIFxcKSIgXAotKwkJInBy aW50IGFyMlwoODoyOi0yLDM6NFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6NjoyLDNcKSIg XAotKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIgXAotKwkJInByaW50IGFyMlwo Mjo2OjIsM1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw3OjM6LTQsNDo3OjNcKSIgXAot KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNzQsIDM3NFxcKSBcXCggMjM0LCAzMzRcXCkg XFwpIFxcKFwKLSsJCSBcXCggMjc3LCAzNzdcXCkgXFwoIDIzNywgMzM3XFwpIFxcKSBcXCkiIFwK LSsJCSJwcmludCBhcjNcKDI6Myw3OjM6LTQsNDo3OjNcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIz XCgyOjY6Miw1LDc6NDotM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjU3LCA0NTcs IDY1N1xcKSBcXCggMjU0LCA0NTQsIDY1NFxcKVwKLSsJCSBcXCkiIFwKLSsJCSJwcmludCBhcjNc KDI6NjoyLDUsNzo0Oi0zXCkiCi0rCi0rIyBUZXN0cyB3aXRoIG5lZ2F0aXZlIGFuZCBtaXhlZCBp bmRpY2VzCi0rZ2RiX3Rlc3QgInAgYXI0XCgyOjQsIC0yOjEsIC0xNTotMTRcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNjEsIDM2MSwgNDYxXFwpIFxcKCAyNzEsIDM3MSwgNDcx XFwpXAotKwkJIFxcKCAyODEsIDM4MSwgNDgxXFwpIFxcKCAyOTEsIDM5MSwgNDkxXFwpIFxcKSBc XCggXFwoIDI2MixcCi0rCQkgMzYyLCA0NjJcXCkgXFwoIDI3MiwgMzcyLCA0NzJcXCkgXFwoIDI4 MiwgMzgyLCA0ODJcXCkgXFwoIDI5MixcCi0rCQkgMzkyLCA0OTJcXCkgXFwpIFxcKSIgXAotKwkJ InByaW50IGFyNCgyOjQsIC0yOjEsIC0xNTotMTQpIgotKwotK2dkYl90ZXN0ICJwIGFyNFwoNywt NjoyOjMsLTdcKSIgXAotKyAgICAgICAgICAgICAgICAiXFwkXFswLTlcXSsgPSBcXCg3MjksIDc1 OSwgNzg5XFwpIiBcCi0rICAgICAgICAgICAgICAgICJwcmludCBhcjQoNywtNjoyOjMsLTcpIgot KwotK2dkYl90ZXN0ICJwIGFyNFwoOToyOi0yLCAtNjoyOjMsIC02Oi0xNTotM1wpIiBcCi0rICAg ICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggOTMwLCA3MzAsIDUzMCwgMzMw XFwpIFxcKCA5NjAsIDc2MCxcCi0rCQkgNTYwLCAzNjBcXCkgXFwoIDk5MCwgNzkwLCA1OTAsIDM5 MFxcKSBcXCkgXFwoIFxcKCA5MjcsIDcyNyxcCi0rCQkgNTI3LCAzMjdcXCkgXFwoIDk1NywgNzU3 LCA1NTcsIDM1N1xcKSBcXCggOTg3LCA3ODcsIDU4NyxcCi0rCQkgMzg3XFwpIFxcKSBcXCggXFwo IDkyNCwgNzI0LCA1MjQsIDMyNFxcKSBcXCggOTU0LCA3NTQsIDU1NCxcCi0rCQkgMzU0XFwpIFxc KCA5ODQsIDc4NCwgNTg0LCAzODRcXCkgXFwpIFxcKCBcXCggOTIxLCA3MjEsIDUyMSxcCi0rCQkg MzIxXFwpIFxcKCA5NTEsIDc1MSwgNTUxLCAzNTFcXCkgXFwoIDk4MSwgNzgxLCA1ODEsIDM4MVxc KSBcXClcCi0rCQkgXFwpIiBcCi0rICAgICAgICAgICAgICAgICJwcmludCBhcjQoOToyOi0yLCAt NjoyOjMsIC02Oi0xNTotMykiCi0rCi0rZ2RiX3Rlc3QgInAgYXI0XCg6LDosOlwpIiBcCi0rICAg ICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTExLCAyMTEsIDMxMSwgNDEx LCA1MTEsIDYxMSwgNzExLFwKLSsJCSA4MTEsIC4qIiBcCi0rICAgICAgICAgICAgICAgICJwcmlu dCBhcjQoOiw6LDopIgotKwotKyMgUHJvdm9rZSBlcnJvciBtZXNzYWdlcyBmb3IgYmFkIHVzZXIg aW5wdXQKLStnZGJfdGVzdCAicHJpbnQgYXIxXCgwOjRcKSIgXAotKwkJInByb3ZpZGVkIGJvdW5k XFwoc1xcKSBvdXRzaWRlIGFycmF5IGJvdW5kXFwoc1xcKSIgXAotKwkJInByaW50IGFyMVwoMDo0 XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoODoxMlwpIiBcCi0rCQkicHJvdmlkZWQgYm91bmRc XChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCi0rCQkicHJpbnQgYXIxXCg4OjEy XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoODoyOlwpIiBcCi0rCQkiQSBzeW50YXggZXJyb3Ig aW4gZXhwcmVzc2lvbiwgbmVhciBgXFwpJy4iIFwKLSsJCSJwcmludCBhcjFcKDg6MjpcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6MlwpIiBcCi0rCQkiV3JvbmcgdmFsdWUgcHJvdmlkZWQg Zm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAotKwkJInByaW50IGFyMVwoODoyOjJcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIxXCgyOjg6LTJcKSIgXAotKwkJIldyb25nIHZhbHVlIHByb3ZpZGVk IGZvciBzdHJpZGUgYW5kIGJvdW5kYXJpZXMiIFwKLSsJCSJwcmludCBhcjFcKDI6ODotMlwpIgot K2dkYl90ZXN0ICJwcmludCBhcjFcKDI6NzowXCkiIFwKLSsJCSJTdHJpZGUgbXVzdCBub3QgYmUg MCIgXAotKwkJInByaW50IGFyMVwoMjo3OjBcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCgzOjdc KSA9IDQyIiBcCi0rCQkiSW52YWxpZCBjYXN0LiIgXAotKwkJIkFzc2lnbm1lbnQgb2YgdmFsdWUg dG8gc3ViYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0 aWMtYXJyYXlzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5m OTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMjJmY2JlCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkw Ci1AQCAtMCwwICsxLDU1IEBACi0rISBDb3B5cmlnaHQgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSshCi0rISBDb250cmlidXRlZCBieSBJbnRlbCBDb3JwLiA8Y2hyaXN0b3Bo LnQud2Vpbm1hbm5AaW50ZWwuY29tPgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rCi0rc3Vicm91dGluZSBzdWIKLSsgIGludGVnZXIsIGRpbWVuc2lvbig5KSA6OiBhcjEKLSsg IGludGVnZXIsIGRpbWVuc2lvbig5LDkpIDo6IGFyMgotKyAgaW50ZWdlciwgZGltZW5zaW9uKDks OSw5KSA6OiBhcjMKLSsgIGludGVnZXIsIGRpbWVuc2lvbigxMCwtNzozLCAtMTU6LTUpIDo6IGFy NAotKyAgaW50ZWdlciA6OiBpLGosawotKwotKyAgYXIxID0gMQotKyAgYXIyID0gMQotKyAgYXIz ID0gMQotKyAgYXI0ID0gNAotKwotKyAgISBSZXN1bHRpbmcgYXJyYXkgYXIzIGxvb2tzIGxpa2Ug KCgoIDExMSwgMTEyLCAxMTMsIDExNCwuLi4pKSkKLSsgIGRvIGkgPSAxLCA5LCAxCi0rICAgIGFy MShpKSA9IGkKLSsgICAgZG8gaiA9IDEsIDksIDEKLSsgICAgICBhcjIoaSxqKSA9IGkqMTAgKyBq Ci0rICAgICAgZG8gayA9IDEsIDksIDEKLSsgICAgICAgIGFyMyhpLGosaykgPSBpKjEwMCArIGoq MTAgKyBrCi0rICAgICAgZW5kIGRvCi0rICAgIGVuZCBkbwotKyAgZW5kIGRvCi0rCi0rICBkbyBp ID0gMSwgMTAsIDEKLSsgICAgZG8gaiA9IC03LCAzLCAxCi0rICAgICAgZG8gayA9IC0xNSwgLTUs IDEKLSsgICAgICAgIGFyNChpLGosaykgPSBpKjEwMCArIChqKzgpKjEwICsgKGsrMTYpCi0rICAg ICAgZW5kIGRvCi0rICAgIGVuZCBkbwotKyAgZW5kIGRvCi0rCi0rICBhcjEoMSkgPSAxMSAgIUJQ MQotKyAgcmV0dXJuCi0rZW5kCi0rCi0rcHJvZ3JhbSB0ZXN0cHJvZwotKyAgY2FsbCBzdWIKLStl bmQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmRjZjE1ZTUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAKLUBAIC0wLDAgKzEsNDQgQEAK LSsjIENvcHlyaWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAiLmY5MCIK LSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxl fSAke3NyY2ZpbGV9IFwKLSsgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInJlLXJldmVyc2UtZWxlbWVudHMiXQot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJyZS1yZXZlcnNlLWVsZW1lbnRzIgotK2dkYl90 ZXN0ICJwcmludCBwdmxhIiAiID0gXFxcKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXFxc KSIgXAotKyAgInByaW50IHJlLXJldmVyc2UtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2 bGEoMSkiICIgPSAxIiAicHJpbnQgZmlyc3QgcmUtcmV2ZXJzZS1lbGVtZW50IgotK2dkYl90ZXN0 ICJwcmludCBwdmxhKDEwKSIgIiA9IDEwIiAicHJpbnQgbGFzdCByZS1yZXZlcnNlLWVsZW1lbnQi Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm9kZC1lbGVtZW50cyJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9kZC1lbGVtZW50cyIKLStnZGJfdGVzdCAi cHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAzLCA1LCA3LCA5XFxcKSIgInByaW50IG9kZC1lbGVtZW50 cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9IDEiICJwcmludCBmaXJzdCBvZGQtZWxl bWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSg1KSIgIiA9IDkiICJwcmludCBsYXN0IG9kZC1l bGVtZW50IgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzaW5nbGUt ZWxlbWVudCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNpbmdsZS1lbGVtZW50Igot K2dkYl90ZXN0ICJwcmludCBwdmxhIiAiID0gXFxcKDVcXFwpIiAicHJpbnQgc2luZ2xlLWVsZW1l bnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMSkiICIgPSA1IiAicHJpbnQgb25lIHNpbmdsZS1l bGVtZW50IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlk ZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWIwMjc0YwotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAotQEAgLTAsMCArMSwy OSBAQAotKyEgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r IQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshIAotKyEgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSshIAotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Byb2dyYW0gdmxhX3N0cmlk ZQotKyAgaW50ZWdlciwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEgKDopCi0rICBpbnRlZ2Vy LCBwb2ludGVyIDo6IHB2bGEgKDopCi0rCi0rICBhbGxvY2F0ZSh2bGEoMTApKQotKyAgdmxhID0g KC8gKEksIEkgPSAxLDEwKSAvKQotKwotKyAgcHZsYSA9PiB2bGEoMTA6MTotMSkKLSsgIHB2bGEg PT4gcHZsYSgxMDoxOi0xKQotKyAgcHZsYSA9PiB2bGEoMToxMDoyKSAgICEgcmUtcmV2ZXJzZS1l bGVtZW50cwotKyAgcHZsYSA9PiB2bGEoNTo0Oi0yKSAgICEgb2RkLWVsZW1lbnRzCi0rCi0rICBw dmxhID0+IG51bGwoKSAgICAgICAgISBzaW5nbGUtZWxlbWVudAotK2VuZCBwcm9ncmFtIHZsYV9z dHJpZGUKLWRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGguYyBiL2dkYi92YWxhcml0aC5jCi1pbmRl eCBkZTZmY2ZkLi45MDkzOTY5IDEwMDY0NAotLS0tIGEvZ2RiL3ZhbGFyaXRoLmMKLSsrKyBiL2dk Yi92YWxhcml0aC5jCi1AQCAtMTkzLDkgKzE5MywyMSBAQCB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1QgaW5kZXgsIGludCBsb3dlcmJvdW5kKQot ICAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChh cnJheSkpOwotICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9U QVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwotICAgVUxPTkdFU1QgZWx0X3NpemUgPSB0eXBlX2xl bmd0aF91bml0cyAoZWx0X3R5cGUpOwotLSAgVUxPTkdFU1QgZWx0X29mZnMgPSBlbHRfc2l6ZSAq IChpbmRleCAtIGxvd2VyYm91bmQpOwotKyAgVUxPTkdFU1QgZWx0X29mZnMgPSBpbmRleCAtIGxv d2VyYm91bmQ7Ci0rICBMT05HRVNUIGVsdF9zdHJpZGUgPSBUWVBFX0JZVEVfU1RSSURFIChUWVBF X0lOREVYX1RZUEUgKGFycmF5X3R5cGUpKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLSsgIGlm IChlbHRfc3RyaWRlID4gMCkKLSsgICAgZWx0X29mZnMgKj0gZWx0X3N0cmlkZTsKLSsgIGVsc2Ug aWYgKGVsdF9zdHJpZGUgPCAwKQotKyAgICB7Ci0rICAgICAgaW50IG9mZnMgPSAoZWx0X29mZnMg KyAxKSAqIGVsdF9zdHJpZGU7Ci0rCi0rICAgICAgZWx0X29mZnMgPSBUWVBFX0xFTkdUSCAoYXJy YXlfdHlwZSkgKyBvZmZzOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGVsdF9vZmZzICo9IGVsdF9z aXplOwotKwotICAgaWYgKGluZGV4IDwgbG93ZXJib3VuZCB8fCAoIVRZUEVfQVJSQVlfVVBQRVJf Qk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotIAkJCSAgICAgJiYgZWx0X29mZnMgPj0g dHlwZV9sZW5ndGhfdW5pdHMgKGFycmF5X3R5cGUpKSkKLSAgICAgewotZGlmZiAtLWdpdCBhL2dk Yi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXggNDAzOTJlOC4uMjRmZmFjYiAxMDA2NDQK LS0tLSBhL2dkYi92YWxvcHMuYwotKysrIGIvZ2RiL3ZhbG9wcy5jCi1AQCAtMzc3NSw1NiArMzc3 NSwxOTEgQEAgdmFsdWVfb2ZfdGhpc19zaWxlbnQgKGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZu ICpsYW5nKQotIHN0cnVjdCB2YWx1ZSAqCi0gdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJy YXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKLSB7Ci0rICAvKiBQYXNzIHVuYWx0ZXJlZCBh cmd1bWVudHMgdG8gVkFMVUVfU0xJQ0VfMSwgcGx1cyBhIGRlZmF1bHQgc3RyaWRlCi0rICAgICB2 YWx1ZSBvZiAnMScsIHdoaWNoIHJldHVybnMgZXZlcnkgZWxlbWVudCBiZXR3ZWVuIExPV0JPVU5E IGFuZAotKyAgICAgKExPV0JPVU5EICsgTEVOR1RIKS4gIFdlIGFsc28gcHJvdmlkZSBhIGRlZmF1 bHQgQ0FMTF9DT1VOVCBvZiAnMScKLSsgICAgIGFzIHdlIGFyZSBvbmx5IGNvbnNpZGVyaW5nIHRo ZSBoaWdoZXN0IGRpbWVuc2lvbiwgb3Igd2UgYXJlCi0rICAgICB3b3JraW5nIG9uIGEgb25lIGRp bWVuc2lvbmFsIGFycmF5LiAgU28gd2UgY2FsbCBWQUxVRV9TTElDRV8xCi0rICAgICBleGFjdGx5 IG9uY2UuICAqLwotKyAgcmV0dXJuIHZhbHVlX3NsaWNlXzEgKGFycmF5LCBsb3dib3VuZCwgbGVu Z3RoLCAxLCAxKTsKLSt9Ci0rCi0rLyogVkFMVUVfU0xJQ0VfMSBpcyBjYWxsZWQgZm9yIGVhY2gg YXJyYXkgZGltZW5zaW9uIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyCi0rICAgb2YgZWxlbWVudHMg YXMgZGVmaW5lZCBieSB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24uCi0rICAgQ0FMTF9DT1VOVCBp cyB1c2VkIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgY2FsbGluZyB0aGUgZnVuY3Rpb24gb25jZSwg ZS5nLgotKyAgIHdlIGFyZSB3b3JraW5nIG9uIHRoZSBjdXJyZW50IGRpbWVuc2lvbiBvZiBBUlJB WSwgb3IgaWYgd2UgYXJlIGNhbGxpbmcKLSsgICB0aGUgZnVuY3Rpb24gcmVwZWF0ZWRseS4gIElu IHRoZSBsYXRlciBjYXNlIHdlIG5lZWQgdG8gdGFrZSBlbGVtZW50cwotKyAgIGZyb20gdGhlIFRB UkdFVF9UWVBFIG9mIEFSUkFZLgotKyAgIFdpdGggYSBDQUxMX0NPVU5UIGdyZWF0ZXIgdGhhbiAx IHdlIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cyBmb3IgZXZlcnkgZWxlbWVudAotKyAgIHRoYXQgc2hv dWxkIGJlIGluIHRoZSByZXN1bHQgYXJyYXkuICBUaGVuIHdlIGZldGNoIHRoZSBjb250ZW50cyBh bmQgdGhlbgotKyAgIGNvcHkgdGhlbSBpbnRvIHRoZSByZXN1bHQgYXJyYXkuICBUaGUgcmVzdWx0 IGFycmF5IHdpbGwgaGF2ZSBvbmUgZGltZW5zaW9uCi0rICAgbGVzcyB0aGFuIHRoZSBpbnB1dCBh cnJheSwgc28gbGF0ZXIgb24gd2UgbmVlZCB0byByZWNyZWF0ZSB0aGUgaW5kaWNlcyBhbmQKLSsg ICByYW5nZXMgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLwotKwotK3N0cnVjdCB2YWx1ZSAq Ci0rdmFsdWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQg bGVuZ3RoLAotKwkgICAgICAgaW50IHN0cmlkZV9sZW5ndGgsIGludCBjYWxsX2NvdW50KQotK3sK LSAgIHN0cnVjdCB0eXBlICpzbGljZV9yYW5nZV90eXBlLCAqc2xpY2VfdHlwZSwgKnJhbmdlX3R5 cGU7Ci0tICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91bmQ7Ci0tICBzdHJ1Y3QgdmFsdWUg KnNsaWNlOwotLSAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGU7Ci0rICBzdHJ1Y3QgdHlwZSAqYXJy YXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7Ci0rICBzdHJ1Y3Qg dHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKSk7Ci0rICB1bnNpZ25lZCBpbnQgZWx0X3NpemUsIGVsdF9vZmZzOwotKyAgTE9OR0VTVCBh cnlfaGlnaF9ib3VuZCwgYXJ5X2xvd19ib3VuZDsKLSsgIHN0cnVjdCB2YWx1ZSAqdjsKLSsgIGlu dCBzbGljZV9yYW5nZV9zaXplLCBpID0gMCwgcm93X2NvdW50ID0gMSwgZWxlbV9jb3VudCA9IDE7 Ci0gCi0tICBhcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsK LSsgIC8qIENoZWNrIGZvciBsZWdhY3kgY29kZSBpZiB3ZSBhcmUgYWN0dWFsbHkgZGVhbGluZyB3 aXRoIGFuIGFycmF5IG9yCi0rICAgICBzdHJpbmcuICAqLwotICAgaWYgKFRZUEVfQ09ERSAoYXJy YXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0gICAgICAgJiYgVFlQRV9DT0RFIChhcnJheV90 eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5HKQotICAgICBlcnJvciAoXygiY2Fubm90IHRha2Ugc2xp Y2Ugb2Ygbm9uLWFycmF5IikpOwotIAotLSAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAo YXJyYXlfdHlwZSk7Ci0tICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxv d2VyYm91bmQsICZ1cHBlcmJvdW5kKSA8IDApCi0tICAgIGVycm9yIChfKCJzbGljZSBmcm9tIGJh ZCBhcnJheSBvciBiaXRzdHJpbmciKSk7Ci0rICBhcnlfbG93X2JvdW5kID0gVFlQRV9MT1dfQk9V TkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOwotKyAgYXJ5X2hpZ2hfYm91bmQgPSBU WVBFX0hJR0hfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOwotKwotKyAgLyog V2hlbiB3ZSBhcmUgd29ya2luZyBvbiBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5LCB3ZSBuZWVk IHRvIGdldCB0aGUKLSsgICAgIGF0dHJpYnV0ZXMgb2YgdGhlIHVuZGVybHlpbmcgdHlwZS4gICov Ci0rICBpZiAoY2FsbF9jb3VudCA+IDEpCi0rICAgIHsKLSsgICAgICBhcnlfbG93X2JvdW5kID0g VFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUpKTsKLSsgICAgICBhcnlf aGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAoVFlQRV9JTkRFWF9UWVBFIChlbHRfdHlwZSkp OwotKyAgICAgIGVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZWx0 X3R5cGUpKTsKLSsgICAgICByb3dfY291bnQgPSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkKLSsJ CSAgICAvIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7Ci0rICAg IH0KLSsKLSsgIC8qIFdpdGggYSBzdHJpZGUgb2YgJzEnLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz IHBlciByZXN1bHQgcm93IGlzIGVxdWFsIHRvCi0rICAgICB0aGUgTEVOR1RIIG9mIHRoZSBzdWJh cnJheS4gIFdpdGggbm9uLWRlZmF1bHQgc3RyaWRlIHZhbHVlcywgd2Ugc2tpcAotKyAgICAgZWxl bWVudHMsIGJ1dCBoYXZlIHRvIGFkZCB0aGUgc3RhcnQgZWxlbWVudCB0byB0aGUgdG90YWwgbnVt YmVyIG9mCi0rICAgICBlbGVtZW50cyBwZXIgcm93LiAgKi8KLSsgIGlmIChzdHJpZGVfbGVuZ3Ro ID09IDEpCi0rICAgIGVsZW1fY291bnQgPSBsZW5ndGg7Ci0rICBlbHNlCi0rICAgIGVsZW1fY291 bnQgPSAoKGxlbmd0aCAtIDEpIC8gc3RyaWRlX2xlbmd0aCkgKyAxOwotKwotKyAgZWx0X3NpemUg PSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwotKyAgZWx0X29mZnMgPSBsb3dib3VuZCAtIGFyeV9s b3dfYm91bmQ7Ci0gCi0tICBpZiAobG93Ym91bmQgPCBsb3dlcmJvdW5kIHx8IGxlbmd0aCA8IDAK LS0gICAgICB8fCBsb3dib3VuZCArIGxlbmd0aCAtIDEgPiB1cHBlcmJvdW5kKQotLSAgICBlcnJv ciAoXygic2xpY2Ugb3V0IG9mIHJhbmdlIikpOwotKyAgZWx0X29mZnMgKj0gZWx0X3NpemU7Ci0r Ci0rICAvKiBDaGVjayBmb3IgdmFsaWQgdXNlciBpbnB1dC4gIEluIGNhc2Ugb2YgRm9ydHJhbiB0 aGlzIHdhcyBhbHJlYWR5IGRvbmUKLSsgICAgIGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgKi8K LSsgIGlmIChjYWxsX2NvdW50ID09IDEKLSsJJiYgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lT X1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKLSsJICAgICAgJiYgZWx0X29mZnMgPj0gVFlQRV9MRU5H VEggKGFycmF5X3R5cGUpKSkKLSsgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQi KSk7Ci0rCi0rICAvKiBDQUxMX0NPVU5UIGlzIDEgd2hlbiB3ZSBhcmUgZGVhbGluZyBlaXRoZXIg d2l0aCB0aGUgaGlnaGVzdCBkaW1lbnNpb24KLSsgICAgIG9mIHRoZSBhcnJheSwgb3IgYSBvbmUg ZGltZW5zaW9uYWwgYXJyYXkuICBTZXQgUkFOR0VfVFlQRSBhY2NvcmRpbmdseS4KLSsgICAgIElu IGJvdGggY2FzZXMgd2UgY2FsY3VsYXRlIGhvdyBtYW55IHJvd3MvZWxlbWVudHMgd2lsbCBiZSBp biB0aGUgb3V0cHV0Ci0rICAgICBhcnJheSBieSBzZXR0aW5nIHNsaWNlX3JhbmdlX3NpemUuICAq LwotKyAgaWYgKGNhbGxfY291bnQgPT0gMSkKLSsgICAgewotKyAgICAgIHJhbmdlX3R5cGUgPSBU WVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpOwotKyAgICAgIHNsaWNlX3JhbmdlX3NpemUgPSBh cnlfbG93X2JvdW5kICsgZWxlbV9jb3VudCAtIDE7Ci0rCi0rICAgICAgLyogQ2hlY2sgaWYgdGhl IGFycmF5IGJvdW5kcyBhcmUgdmFsaWQuICAqLwotKyAgICAgIGlmIChnZXRfZGlzY3JldGVfYm91 bmRzIChyYW5nZV90eXBlLCAmYXJ5X2xvd19ib3VuZCwgJmFyeV9oaWdoX2JvdW5kKSA8IDApCi0r CWVycm9yIChfKCJzbGljZSBmcm9tIGJhZCBhcnJheSBvciBiaXRzdHJpbmciKSk7Ci0rICAgIH0K LSsgIC8qIFdoZW4gQ0FMTF9DT1VOVCBpcyBncmVhdGVyIHRoYW4gMSwgd2UgYXJlIGRlYWxpbmcg d2l0aCBhbiBhcnJheSBvZiBhcnJheXMuCi0rICAgICBTbyB3ZSBuZWVkIHRvIGdldCB0aGUgdHlw ZSBiZWxvdyB0aGUgY3VycmVudCBvbmUgYW5kIHNldCB0aGUgUkFOR0VfVFlQRQotKyAgICAgYWNj b3JkaW5nbHkuICAqLwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgcmFuZ2VfdHlwZSA9IFRZUEVf SU5ERVhfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwotKyAgICAgIHNsaWNl X3JhbmdlX3NpemUgPSBhcnlfbG93X2JvdW5kICsgKHJvd19jb3VudCAqIGVsZW1fY291bnQpIC0g MTsKLSsgICAgICBhcnlfbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpOwot KyAgICB9Ci0gCi0gICAvKiBGSVhNRS10eXBlLWFsbG9jYXRpb246IG5lZWQgYSB3YXkgdG8gZnJl ZSB0aGlzIHR5cGUgd2hlbiB3ZSBhcmUKLS0gICAgIGRvbmUgd2l0aCBpdC4gICovCi0tICBzbGlj ZV9yYW5nZV90eXBlID0gY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlICgoc3RydWN0IHR5cGUgKikg TlVMTCwKLS0JCQkJCSAgICAgICBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwKLS0JCQkJ CSAgICAgICBsb3dib3VuZCwKLS0JCQkJCSAgICAgICBsb3dib3VuZCArIGxlbmd0aCAtIDEpOwot KyAgICAgIGRvbmUgd2l0aCBpdC4gICovCi0gCi0rICBzbGljZV9yYW5nZV90eXBlID0gY3JlYXRl X3N0YXRpY19yYW5nZV90eXBlIChOVUxMLCBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwK LSsJCQkJCSAgICAgICBhcnlfbG93X2JvdW5kLCBzbGljZV9yYW5nZV9zaXplKTsKLSAgIHsKLS0g ICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5 cGUpOwotLSAgICBMT05HRVNUIG9mZnNldAotLSAgICAgID0gKGxvd2JvdW5kIC0gbG93ZXJib3Vu ZCkgKiBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAoZWxlbWVudF90eXBlKSk7Ci0rICAgIHN0 cnVjdCB0eXBlICplbGVtZW50X3R5cGU7Ci0rCi0rICAgIC8qIFdoZW4gYm90aCBDQUxMX0NPVU5U IGFuZCBTVFJJREVfTEVOR1RIIGVxdWFsIDEsIHdlIGNhbiB1c2UgdGhlIGxlZ2FjeQotKyAgICAg ICBjb2RlIGZvciBzdWJhcnJheXMuICAqLwotKyAgICBpZiAoY2FsbF9jb3VudCA9PSAxICYmIHN0 cmlkZV9sZW5ndGggPT0gMSkKLSsgICAgICB7Ci0rCWVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VU X1RZUEUgKGFycmF5X3R5cGUpOwotKwotKwlzbGljZV90eXBlID0gY3JlYXRlX2FycmF5X3R5cGUg KE5VTEwsIGVsZW1lbnRfdHlwZSwgc2xpY2VfcmFuZ2VfdHlwZSk7Ci0gCi0tICAgIHNsaWNlX3R5 cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoKHN0cnVjdCB0eXBlICopIE5VTEwsCi0tCQkJCSAgICBl bGVtZW50X3R5cGUsCi0tCQkJCSAgICBzbGljZV9yYW5nZV90eXBlKTsKLS0gICAgVFlQRV9DT0RF IChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAoYXJyYXlfdHlwZSk7Ci0rCVRZUEVfQ09ERSAoc2xp Y2VfdHlwZSkgPSBUWVBFX0NPREUgKGFycmF5X3R5cGUpOwotIAotLSAgICBpZiAoVkFMVUVfTFZB TCAoYXJyYXkpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKGFycmF5KSkKLS0gICAgICBz bGljZSA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHNsaWNlX3R5cGUpOwotKwlpZiAoVkFMVUVfTFZB TCAoYXJyYXkpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKGFycmF5KSkKLSsJICB2ID0g YWxsb2NhdGVfdmFsdWVfbGF6eSAoc2xpY2VfdHlwZSk7Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICB2 ID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOwotKwkgICAgdmFsdWVfY29udGVudHNfY29w eSAodiwKLSsJCQkJIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodiksCi0rCQkJCSBhcnJheSwKLSsJ CQkJIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJyYXkpICsgZWx0X29mZnMsCi0rCQkJCSBlbHRf c2l6ZSAqIGxvbmdlc3RfdG9faW50IChsZW5ndGgpKTsKLSsJICB9Ci0rCi0rICAgICAgfQotKyAg ICAvKiBXaXRoIGEgQ0FMTF9DT1VOVCBvciBTVFJJREVfTEVOR1RIIGFyZSBncmVhdGVyIHRoYW4g MSB3ZSBhcmUgd29ya2luZwotKyAgICAgICBvbiBhIHJhbmdlIG9mIHJhbmdlcy4gIFNvIHdlIGNv cHkgdGhlIHJlbGV2YW50IGVsZW1lbnRzIGludG8gdGhlCi0rICAgICAgIG5ldyBhcnJheSB3ZSBy ZXR1cm4uICAqLwotICAgICBlbHNlCi0gICAgICAgewotLQlzbGljZSA9IGFsbG9jYXRlX3ZhbHVl IChzbGljZV90eXBlKTsKLS0JdmFsdWVfY29udGVudHNfY29weSAoc2xpY2UsIDAsIGFycmF5LCBv ZmZzZXQsCi0tCQkJICAgICB0eXBlX2xlbmd0aF91bml0cyAoc2xpY2VfdHlwZSkpOwotKwlpbnQg aiwgb2Zmc19zdG9yZSA9IGVsdF9vZmZzOwotKwlMT05HRVNUIGRzdF9vZmZzZXQgPSAwOwotKwlM T05HRVNUIHNyY19yb3dfbGVuZ3RoID0gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKGFy cmF5X3R5cGUpKTsKLSsKLSsJaWYgKGNhbGxfY291bnQgPT0gMSkKLSsJICB7Ci0rCSAgICAvKiBX aGVuIENBTExfQ09VTlQgaXMgZXF1YWwgdG8gMSB3ZSBhcmUgd29ya2luZyBvbiB0aGUgY3VycmVu dCByYW5nZQotKwkgICAgICAgYW5kIHVzZSB0aGVzZSBlbGVtZW50cyBkaXJlY3RseS4gICovCi0r CSAgICBlbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKLSsJICB9 Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICAvKiBXb3JraW5nIG9uIGFuIGFycmF5IG9mIGFycmF5cywg dGhlIHR5cGUgb2YgdGhlIGVsZW1lbnRzIGlzIHRoZSB0eXBlCi0rCSAgICAgICBvZiB0aGUgc3Vi YXJyYXlzJyB0eXBlLiAgKi8KLSsJICAgIGVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSsJICB9Ci0rCi0rCXNsaWNlX3R5cGUg PSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxlbWVudF90eXBlLCBzbGljZV9yYW5nZV90eXBl KTsKLSsKLSsJIC8qIElmIHdlIGhhdmUgYSBvbmUgZGltZW5zaW9uYWwgYXJyYXksIHdlIGNvcHkg aXRzIFRZUEVfQ09ERS4gIEZvciBhCi0rCSAgICBtdWx0aSBkaW1lbnNpb25hbCBhcnJheSB3ZSBj b3B5IHRoZSBlbWJlZGRlZCB0eXBlJ3MgVFlQRV9DT0RFLiAgKi8KLSsJaWYgKGNhbGxfY291bnQg PT0gMSkKLSsJICBUWVBFX0NPREUgKHNsaWNlX3R5cGUpID0gVFlQRV9DT0RFIChhcnJheV90eXBl KTsKLSsJZWxzZQotKwkgIFRZUEVfQ09ERSAoc2xpY2VfdHlwZSkgPSBUWVBFX0NPREUgKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSsKLSsJdiA9IGFsbG9jYXRlX3ZhbHVlIChzbGlj ZV90eXBlKTsKLSsKLSsJLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSByb3dzIG9mIHRoZSBvdXRlciBh cnJheSBhbmQgc2V0IHRoZSBuZXcgb2Zmc2V0Ci0rCSAgIGZvciBlYWNoIHJvdy4gICovCi0rCWZv ciAoaSA9IDA7IGkgPCByb3dfY291bnQ7IGkrKykKLSsJICB7Ci0rCSAgICBlbHRfb2ZmcyA9IG9m ZnNfc3RvcmUgKyBpICogc3JjX3Jvd19sZW5ndGg7Ci0rCi0rCSAgICAvKiBJdGVyYXRlIHRocm91 Z2ggdGhlIGVsZW1lbnRzIGluIGVhY2ggcm93IHRvIGNvcHkgb25seSB0aG9zZS4gICovCi0rCSAg ICBmb3IgKGogPSAxOyBqIDw9IGVsZW1fY291bnQ7IGorKykKLSsJICAgICAgewotKwkJLyogRmV0 Y2hlcyB0aGUgY29udGVudHMgb2YgQVJSQVkgYW5kIGNvcGllcyB0aGVtIGludG8gVi4gICovCi0r CQl2YWx1ZV9jb250ZW50c19jb3B5ICh2LCBkc3Rfb2Zmc2V0LCBhcnJheSwgZWx0X29mZnMsIGVs dF9zaXplKTsKLSsJCWVsdF9vZmZzICs9IGVsdF9zaXplICogc3RyaWRlX2xlbmd0aDsKLSsJCWRz dF9vZmZzZXQgKz0gZWx0X3NpemU7Ci0rCSAgICAgIH0KLSsJICB9Ci0gICAgICAgfQotIAotLSAg ICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzbGljZSwgYXJyYXkpOwotLSAgICBWQUxV RV9GUkFNRV9JRCAoc2xpY2UpID0gVkFMVUVfRlJBTUVfSUQgKGFycmF5KTsKLS0gICAgc2V0X3Zh bHVlX29mZnNldCAoc2xpY2UsIHZhbHVlX29mZnNldCAoYXJyYXkpICsgb2Zmc2V0KTsKLSsgICAg c2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAodiwgYXJyYXkpOwotKyAgICBWQUxVRV9SRUdO VU0gKHYpID0gVkFMVUVfUkVHTlVNIChhcnJheSk7Ci0rICAgIFZBTFVFX0ZSQU1FX0lEICh2KSA9 IFZBTFVFX0ZSQU1FX0lEIChhcnJheSk7Ci0rICAgIHNldF92YWx1ZV9vZmZzZXQgKHYsIHZhbHVl X29mZnNldCAoYXJyYXkpICsgZWx0X29mZnMpOwotICAgfQotIAotLSAgcmV0dXJuIHNsaWNlOwot KyAgcmV0dXJuIHY7Ci0gfQotIAotIC8qIENyZWF0ZSBhIHZhbHVlIGZvciBhIEZPUlRSQU4gY29t cGxleCBudW1iZXIuICBDdXJyZW50bHkgbW9zdCBvZiB0aGUKLWRpZmYgLS1naXQgYS9nZGIvdmFs dWUuaCBiL2dkYi92YWx1ZS5oCi1pbmRleCAwYjQxN2I0Li45YzM3NzEzIDEwMDY0NAotLS0tIGEv Z2RiL3ZhbHVlLmgKLSsrKyBiL2dkYi92YWx1ZS5oCi1AQCAtMTA1Nyw2ICsxMDU3LDggQEAgZXh0 ZXJuIHN0cnVjdCB2YWx1ZSAqdmFyeWluZ190b19zbGljZSAoc3RydWN0IHZhbHVlICopOwotIAot IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKiwgaW50LCBp bnQpOwotIAotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3NsaWNlXzEgKHN0cnVjdCB2YWx1 ZSAqLCBpbnQsIGludCwgaW50LCBpbnQpOwotKwotIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X2xpdGVyYWxfY29tcGxleCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB2YWx1ZSAqLAotIAkJCQkJ ICAgIHN0cnVjdCB0eXBlICopOwotIAoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtZm9ydHJh bi1zdHJpZGVzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXN0cmlkZXMucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3OTIwMAotLS0gL2Rldi9udWxsCisr KyBiL2dkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCkBAIC0wLDAgKzEsMTk3NyBA QAorZ2l0IGRpZmYgLS1zdGF0IC1wIGdkYi9tYXN0ZXIuLi5nZGIvdXNlcnMvYmhlY2tlbC9mb3J0 cmFuLXN0cmlkZXMKK2RiZmQ3MTQwYmY0YzA1MDBkMWY1ZDE5MmJlNzgxZjgzZjc4Zjc5MjIKKwor IGdkYi9kd2FyZjJsb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKystCisg Z2RiL2R3YXJmMmxvYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCisgZ2Ri L2R3YXJmMnJlYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArLQorIGdkYi9l dmFsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzOTEgKysrKysrKysrKysr KysrKysrKysrLS0tLS0KKyBnZGIvZXhwcHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDIwICstCisgZ2RiL2V4cHJlc3Npb24uaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxOCArLQorIGdkYi9mLWV4cC55ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNDIgKystCisgZ2RiL2YtdmFscHJpbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgOCArLQorIGdkYi9nZGJ0eXBlcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MzQgKystCisgZ2RiL2dkYnR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx OCArLQorIGdkYi9wYXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjQg Ky0KKyBnZGIvcnVzdC1leHAueSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICst CisgZ2RiL3J1c3QtbGFuZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArLQor IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAgfCA0MjEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGlj LWFycmF5cy5mOTAgfCAgNTUgKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0 eXBlLmV4cCAgICAgfCAgIDQgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVv Zi5leHAgICAgfCAgIDQgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5l eHAgICAgfCAgNDQgKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5 MCAgICB8ICAyOSArKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCAgICAgICAg ICAgfCAgMTAgKworIGdkYi92YWxhcml0aC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTAgKy0KKyBnZGIvdmFsb3BzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MTk3ICsrKysrKysrKysrLS0KKyBnZGIvdmFsdWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKKyAyMyBmaWxlcyBjaGFuZ2VkLCAxMjQyIGluc2VydGlvbnMoKyksIDE4 MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2Fy ZjJsb2MuYworaW5kZXggNTQ4ZTQ2OC4uNTYwZTE2ZiAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJs b2MuYworKysrIGIvZ2RiL2R3YXJmMmxvYy5jCitAQCAtMjYwMSwxMSArMjYwMSwxNCBAQCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmRsYmF0b24sCisgLyogU2VlIGR3YXJmMmxvYy5oLiAgKi8KKyAKKyBpbnQKKy1kd2FyZjJfZXZh bHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsCisrZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5X3NpZ25lZCAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJv cCwKKyAJCQkgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAJCQkgIHN0cnVjdCBwcm9wZXJ0 eV9hZGRyX2luZm8gKmFkZHJfc3RhY2ssCistCQkJICBDT1JFX0FERFIgKnZhbHVlKQorKwkJCSAg Q09SRV9BRERSICp2YWx1ZSwKKysJCQkgIGludCBpc19zaWduZWQpCisgeworKyAgaW50IHJjID0g MDsKKysKKyAgIGlmIChwcm9wID09IE5VTEwpCisgICAgIHJldHVybiAwOworIAorQEAgLTI2Mjks NyArMjYzMiw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcCwKKyAKKyAJCSp2YWx1ZSA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7Cisg CSAgICAgIH0KKy0JICAgIHJldHVybiAxOworKwkgICAgcmMgPSAxOworIAkgIH0KKyAgICAgICB9 CisgICAgICAgYnJlYWs7CitAQCAtMjY1MSw3ICsyNjU0LDcgQEAgZHdhcmYyX2V2YWx1YXRlX3By b3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorIAkgICAgaWYgKCF2YWx1 ZV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQorIAkgICAgICB7CisgCQkqdmFsdWUgPSB2YWx1ZV9hc19h ZGRyZXNzICh2YWwpOworLQkJcmV0dXJuIDE7CisrCQlyYyA9IDE7CisgCSAgICAgIH0KKyAJICB9 CisgICAgICAgfQorQEAgLTI2NTksOCArMjY2Miw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0 eSAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKyAKKyAgICAgY2FzZSBQUk9QX0NP TlNUOgorICAgICAgICp2YWx1ZSA9IHByb3AtPmRhdGEuY29uc3RfdmFsOworLSAgICAgIHJldHVy biAxOworLQorKyAgICAgIHJjID0gMTsKKysgICAgICBicmVhazsKKyAgICAgY2FzZSBQUk9QX0FE RFJfT0ZGU0VUOgorICAgICAgIHsKKyAJc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0 b24KK0BAIC0yNjgxLDExICsyNjg0LDM4IEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29u c3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKyAJICB2YWwgPSB2YWx1ZV9hdCAoYmF0b24t Pm9mZnNldF9pbmZvLnR5cGUsCisgCQkJICBwaW5mby0+YWRkciArIGJhdG9uLT5vZmZzZXRfaW5m by5vZmZzZXQpOworIAkqdmFsdWUgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworLQlyZXR1cm4g MTsKKysJcmMgPSAxOworICAgICAgIH0KKysgICAgICBicmVhazsKKyAgICAgfQorIAorLSAgcmV0 dXJuIDA7CisrICBpZiAocmMgPT0gMSAmJiBpc19zaWduZWQgPT0gMSkKKysgICAgeworKyAgICAg IC8qIElmIHdlIGhhdmUgYSB2YWxpZCByZXR1cm4gY2FuZGlkYXRlIGFuZCBpdCdzIHZhbHVlIGlz IHNpZ25lZCwKKysgICAgICAgICB3ZSBoYXZlIHRvIHNpZ24tZXh0ZW5kIHRoZSB2YWx1ZSBiZWNh dXNlIENPUkVfQUREUiBvbiA2NGJpdCBtYWNoaW5lIGhhcworKyAgICAgICAgIDggYnl0ZXMgYnV0 IGFkZHJlc3Mgc2l6ZSBvZiBhbiAzMmJpdCBhcHBsaWNhdGlvbiBpcyA0IGJ5dGVzLiAgKi8KKysg ICAgICBzdHJ1Y3QgZ2RiYXJjaCAqIGdkYmFyY2ggPSB0YXJnZXRfZ2RiYXJjaCAoKTsKKysgICAg ICBjb25zdCBpbnQgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKTsKKysgICAg ICBjb25zdCBDT1JFX0FERFIgbmVnX21hc2sgPSAoKH4wKSA8PCAgKGFkZHJfYml0IC0gMSkpOwor KworKyAgICAgIC8qIENoZWNrIGlmIHNpZ25lZCBiaXQgaXMgc2V0IGFuZCBzaWduLWV4dGVuZCB2 YWx1ZXMuICAqLworKyAgICAgIGlmICgqdmFsdWUgJiAobmVnX21hc2spKQorKwkqdmFsdWUgfD0g KG5lZ19tYXNrICk7CisrICAgIH0KKysgIHJldHVybiByYzsKKyt9CisrCisraW50CisrZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorKwkJ CSAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorKwkJCSAgc3RydWN0IHByb3BlcnR5X2FkZHJf aW5mbyAqYWRkcl9zdGFjaywKKysJCQkgIENPUkVfQUREUiAqdmFsdWUpCisreworKyAgcmV0dXJu IGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eV9zaWduZWQgKHByb3AsCisrCQkJCSAgIGZyYW1lLAor KwkJCQkgICBhZGRyX3N0YWNrLAorKwkJCQkgICB2YWx1ZSwKKysJCQkJICAgMCk7CisgfQorIAor IC8qIFNlZSBkd2FyZjJsb2MuaC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5oIGIv Z2RiL2R3YXJmMmxvYy5oCitpbmRleCBmYTgzNDU5Li5kYTZiOWNkIDEwMDY0NAorLS0tIGEvZ2Ri L2R3YXJmMmxvYy5oCisrKysgYi9nZGIvZHdhcmYybG9jLmgKK0BAIC0xMzgsNiArMTM4LDEyIEBA IGludCBkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3Ag KnByb3AsCisgCQkJICAgICAgc3RydWN0IHByb3BlcnR5X2FkZHJfaW5mbyAqYWRkcl9zdGFjaywK KyAJCQkgICAgICBDT1JFX0FERFIgKnZhbHVlKTsKKyAKKytpbnQgZHdhcmYyX2V2YWx1YXRlX3By b3BlcnR5X3NpZ25lZCAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKysJCQkgICAg ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisrCQkJICAgICAgc3RydWN0IHByb3BlcnR5X2Fk ZHJfaW5mbyAqYWRkcl9zdGFjaywKKysJCQkgICAgICBDT1JFX0FERFIgKnZhbHVlLAorKwkJCSAg ICAgIGludCBpc19zaWduZWQpOworKworIC8qIEEgaGVscGVyIGZvciB0aGUgY29tcGlsZXIgaW50 ZXJmYWNlIHRoYXQgY29tcGlsZXMgYSBzaW5nbGUgZHluYW1pYworICAgIHByb3BlcnR5IHRvIEMg Y29kZS4KKyAKK2RpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQu YworaW5kZXggNjY1OGEzOC4uYTFhYzY1OSAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJyZWFkLmMK KysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKK0BAIC0xNDk1Miw3ICsxNDk1Miw3IEBAIHJlYWRfc3Vi cmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor ICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZSwgKm9yaWdfYmFzZV90eXBlOworICAgc3RydWN0IHR5 cGUgKnJhbmdlX3R5cGU7CisgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOworLSAgc3RydWN0IGR5 bmFtaWNfcHJvcCBsb3csIGhpZ2g7CisrICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaCwg c3RyaWRlOworICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOworICAgaW50IGhpZ2hfYm91bmRf aXNfY291bnQgPSAwOworICAgY29uc3QgY2hhciAqbmFtZTsKK0BAIC0xNDk3Miw3ICsxNDk3Miw5 IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorIAorICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOworICAgaGlnaC5raW5kID0g UFJPUF9DT05TVDsKKysgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKKyAgIGhpZ2guZGF0YS5j b25zdF92YWwgPSAwOworKyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsKKyAKKyAgIC8qIFNl dCBMT1dfREVGQVVMVF9JU19WQUxJRCBpZiBjdXJyZW50IGxhbmd1YWdlIGFuZCBEV0FSRiB2ZXJz aW9uIGFsbG93CisgICAgICBvbWl0dGluZyBEV19BVF9sb3dlcl9ib3VuZC4gICovCitAQCAtMTUw MDYsNiArMTUwMDgsMTMgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworKyAgaWYgKGF0 dHIpCisrICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZzdHJp ZGUpKQorKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJNaXNzaW5n IERXX0FUX2J5dGVfc3RyaWRlICIKKysgICAgICAgICAgICAgICAgICAiLSBESUUgYXQgMHgleCBb aW4gbW9kdWxlICVzXSIpLAorKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5zZWN0X29mZiwgb2Jq ZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworKworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAgYXR0cl90b19keW5h bWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3cpOworQEAgLTE1MDgyLDcgKzE1MDkxLDcgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgICAgICAgJiYgIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2guZGF0 YS5jb25zdF92YWwgJiBuZWdhdGl2ZV9tYXNrKSkKKyAgICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCB8 PSBuZWdhdGl2ZV9tYXNrOworIAorLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChO VUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gpOworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0 ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gsICZzdHJpZGUp OworIAorICAgaWYgKGhpZ2hfYm91bmRfaXNfY291bnQpCisgICAgIFRZUEVfUkFOR0VfREFUQSAo cmFuZ2VfdHlwZSktPmZsYWdfdXBwZXJfYm91bmRfaXNfY291bnQgPSAxOworZGlmZiAtLWdpdCBh L2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCitpbmRleCAwMGExMDdjLi45MWQ4YTAzIDEwMDY0NAor LS0tIGEvZ2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwuYworQEAgLTM5OSwyOSArMzk5LDMyNSBA QCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAq ZWxlbWVudCwKKyAgIHJldHVybiBpbmRleDsKKyB9CisgCisrLyogRXZhbHVhdGVzIGFueSBvcGVy YXRpb24gb24gRm9ydHJhbiBhcnJheXMgb3Igc3RyaW5ncyB3aXRoIGF0IGxlYXN0CisrICAgb25l IHVzZXIgcHJvdmlkZWQgcGFyYW1ldGVyLiAgRXhwZWN0cyB0aGUgaW5wdXQgQVJSQVkgdG8gYmUg ZWl0aGVyCisrICAgYW4gYXJyYXksIG9yIGEgc3RyaW5nLiAgRXZhbHVhdGVzIEVYUCBieSBpbmNy ZW1lbnRpbmcgUE9TLCBhbmQKKysgICB3cml0ZXMgdGhlIGNvbnRlbnQgZnJvbSB0aGUgZWx0IHN0 YWNrIGludG8gYSBsb2NhbCBzdHJ1Y3QuICBOQVJHUworKyAgIHNwZWNpZmllcyBudW1iZXIgb2Yg bGl0ZXJhbCBvciByYW5nZSBhcmd1bWVudHMgdGhlIHVzZXIgcHJvdmlkZWQuCisrICAgTkFSR1Mg bXVzdCBiZSB0aGUgc2FtZSBudW1iZXIgYXMgQVJSQVkgaGFzIGRpbWVuc2lvbnMuICAqLworKwor IHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVl ICphcnJheSwKKy0JCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBu b3NpZGUgbm9zaWRlKQorK3ZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwg c3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysJCSAgICBpbnQgKnBvcywgaW50IG5hcmdzLCBlbnVt IG5vc2lkZSBub3NpZGUpCisgeworLSAgaW50IHBjID0gKCpwb3MpICsgMTsKKysgIGludCBpLCBk aW1fY291bnQgPSAwOworICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CistICBzdHJ1 Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKHZhbHVlX3R5 cGUgKGFycmF5KSkpOworLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKKy0gICAgPSAoZW51 bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOwor LSAKKy0gICpwb3MgKz0gMzsKKy0KKy0gIGlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZB VUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQorLSAgICBsb3dfYm91bmQg PSBUWVBFX0xPV19CT1VORCAocmFuZ2UpOworLSAgZWxzZQorLSAgICBsb3dfYm91bmQgPSB2YWx1 ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSkp OworKyAgc3RydWN0IHZhbHVlICpuZXdfYXJyYXkgPSBhcnJheTsKKysgIHN0cnVjdCB0eXBlICph cnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAobmV3X2FycmF5KSk7CisrICBz dHJ1Y3QgdHlwZSAqZWx0X3R5cGU7CisrCisrICB0eXBlZGVmIHN0cnVjdCBzdWJzY3JpcHRfcmFu Z2UKKysgIHsKKysgICAgZW51bSByYW5nZV90eXBlIGY5MF9yYW5nZV90eXBlOworKyAgICBMT05H RVNUIGxvdywgaGlnaCwgc3RyaWRlOworKyAgfSBzdWJzY3JpcHRfcmFuZ2U7CisrCisrICB0eXBl ZGVmIGVudW0gc3Vic2NyaXB0X2tpbmQKKysgIHsKKysgICAgU1VCU0NSSVBUX1JBTkdFLCAgICAv KiBlLmcuICIobG93Ym91bmQ6aGlnaGJvdW5kKSIgICovCisrICAgIFNVQlNDUklQVF9JTkRFWCAg ICAvKiBlLmcuICIobGl0ZXJhbCkiICAqLworKyAgfSBraW5kOworKworKyAgLyogTG9jYWwgc3Ry dWN0IHRvIGhvbGQgdXNlciBkYXRhIGZvciBGb3J0cmFuIHN1YmFycmF5IGRpbWVuc2lvbnMuICAq LworKyAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZQorKyAgeworKyAgICAvKiBGb3IgZXZlcnkgZGlt ZW5zaW9uLCB3ZSBhcmUgZWl0aGVyIHdvcmtpbmcgb24gYSByYW5nZSBvciBhbiBpbmRleAorKyAg ICAgICBleHByZXNzaW9uLCBzbyB3ZSBzdG9yZSB0aGlzIGluZm8gc2VwYXJhdGVseSBmb3IgbGF0 ZXIuICAqLworKyAgICBlbnVtIHN1YnNjcmlwdF9raW5kIGtpbmQ7CisrCisrICAgIC8qIFdlIGFs c28gc3RvcmUgZWl0aGVyIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgaW5mbywgb3IgdGhlIGlu ZGV4CisrICAgICAgIG51bWJlci4gIEJlZm9yZSBldmFsdWF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1 ZXMsIHdlIGRvIG5vdCBrbm93IGlmIHdlIGFyZQorKyAgICAgICBhY3R1YWxseSB3b3JraW5nIG9u IGEgcmFuZ2Ugb2YgcmFuZ2VzLCBvciBhbiBpbmRleCBpbiBhIHJhbmdlLiAgU28gYXMgYQorKyAg ICAgICBmaXJzdCBzdGVwIHdlIHN0b3JlIGFsbCBpbnB1dCBpbiBhIHVuaW9uLiAgVGhlIGFycmF5 IGNhbGN1bGF0aW9uIGl0c2VsZgorKyAgICAgICBkZWFscyB3aXRoIHRoaXMgbGF0ZXIgb24uICAq LworKyAgICB1bmlvbiBlbGVtZW50X3JhbmdlCisrICAgIHsKKysgICAgICBzdWJzY3JpcHRfcmFu Z2UgcmFuZ2U7CisrICAgICAgTE9OR0VTVCBudW1iZXI7CisrICAgIH0gVTsKKysgIH0gKnN1YnNj cmlwdF9hcnJheTsKKysKKysgIC8qIENoZWNrIGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBy b3ZpZGVkIGJ5IHRoZSB1c2VyIG1hdGNoZXMKKysgICAgIHRoZSBudW1iZXIgb2YgZGltZW5zaW9u IG9mIHRoZSBhcnJheS4gIEEgc3RyaW5nIGhhcyBvbmx5IG9uZQorKyAgICAgZGltZW5zaW9uLiAg Ki8KKysgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19hcnJheV9kaW1zICh2YWx1ZV90eXBlIChuZXdf YXJyYXkpKSkKKysgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOwor KworKyAgc3Vic2NyaXB0X2FycmF5ID0gKHN0cnVjdCBzdWJzY3JpcHRfc3RvcmUqKSBhbGxvY2Eg KHNpemVvZiAoKnN1YnNjcmlwdF9hcnJheSkgKiBuYXJncyk7CisrCisrICAvKiBQYXJzZSB0aGUg dXNlciBpbnB1dCBpbnRvIHRoZSBTVUJTQ1JJUFRfQVJSQVkgdG8gc3RvcmUgaXQuICBXZSBuZWVk CisrICAgICB0byBldmFsdWF0ZSBpdCBmaXJzdCwgYXMgdGhlIGlucHV0IGlzIGZyb20gbGVmdC10 by1yaWdodC4gIFRoZQorKyAgICAgYXJyYXkgaXMgc3RvcmVkIGZyb20gcmlnaHQtdG8tbGVmdC4g IFNvIHdlIGhhdmUgdG8gdXNlIHRoZSB1c2VyCisrICAgICBpbnB1dCBpbiByZXZlcnNlIG9yZGVy LiAgTGF0ZXIgb24sIHdlIG5lZWQgdGhlIGlucHV0IGluZm9ybWF0aW9uIHRvCisrICAgICByZS1j YWxjdWxhdGUgdGhlIG91dHB1dCBhcnJheS4gIEZvciBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMs IHdlCisrICAgICBjYW4gYmUgZGVhbGluZyB3aXRoIGFueSBwb3NzaWJsZSBjb21iaW5hdGlvbiBv ZiByYW5nZXMgYW5kIGluZGljZXMKKysgICAgIGZvciBldmVyeSBkaW1lbnNpb24uICAqLworKyAg Zm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc3Vic2Ny aXB0X3N0b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07CisgCistICBpZiAocmFuZ2Vf dHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RF RkFVTFQpCistICAgIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlKTsKKy0gIGVs c2UKKy0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVM TF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKSk7CisrICAgICAgLyogVGhlIHVzZXIgaW5wdXQgaXMg YSByYW5nZSwgd2l0aCBvciB3aXRob3V0IGxvd2VyIGFuZCB1cHBlciBib3VuZC4KKysJIEUuZy46 ICJwIGFycnkoMjo1KSIsICJwIGFycnkoIDo1KSIsICJwIGFycnkoIDogKSIsIGV0Yy4gICovCisr ICAgICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCisrCXsKKysJICBp bnQgcGMgPSAoKnBvcykgKyAxOworKwkgIHN1YnNjcmlwdF9yYW5nZSAqcmFuZ2U7CisrCisrCSAg aW5kZXgtPmtpbmQgPSBTVUJTQ1JJUFRfUkFOR0U7CisrCSAgcmFuZ2UgPSAmaW5kZXgtPlUucmFu Z2U7CisrCisrCSAgKnBvcyArPSAzOworKwkgIHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IChlbnVt IHJhbmdlX3R5cGUpIGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0OworKworKwkgIC8qIElmIGEgbG93 ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB0aGUgYml0IGhhcyBiZWVuCisrCSAg ICAgc2V0IGFuZCB3ZSBjYW4gYXNzaWduIHRoZSB2YWx1ZSBmcm9tIHRoZSBlbHQgc3RhY2suICBT YW1lIGZvcgorKwkgICAgIHVwcGVyIGJvdW5kLiAgKi8KKysJICBpZiAoKHJhbmdlLT5mOTBfcmFu Z2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkKKysJICAgICAgPT0gU1VCQVJSQVlfTE9XX0JP VU5EKQorKwkgICAgcmFuZ2UtPmxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAo TlVMTF9UWVBFLCBleHAsCisrCQkJCQkJCSBwb3MsIG5vc2lkZSkpOworKwkgIGlmICgocmFuZ2Ut PmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkKKysJICAgICAgPT0gU1VCQVJS QVlfSElHSF9CT1VORCkKKysJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVh dGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKKysJCQkJCQkJICBwb3MsIG5vc2lkZSkpOworKwor KwkgIC8qIEFzc2lnbiB0aGUgdXNlcidzIHN0cmlkZSB2YWx1ZSBpZiBwcm92aWRlZC4gICovCisr CSAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJREUpID09IFNVQkFS UkFZX1NUUklERSkKKysJICAgIHJhbmdlLT5zdHJpZGUgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0 ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLAorKwkJCQkJCQkgICAgIHBvcywgbm9zaWRlKSk7Cisr CisrCSAgLyogQXNzaWduIHRoZSBkZWZhdWx0IHN0cmlkZSB2YWx1ZSAnMScuICAqLworKwkgIGVs c2UKKysJICAgIHJhbmdlLT5zdHJpZGUgPSAxOworKworKwkgIC8qIENoZWNrIHRoZSBwcm92aWRl ZCBzdHJpZGUgdmFsdWUgaXMgaWxsZWdhbCwgYWthICcwJy4gICovCisrCSAgaWYgKHJhbmdlLT5z dHJpZGUgPT0gMCkKKysJICAgIGVycm9yIChfKCJTdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsKKysJ fQorKyAgICAgIC8qIFVzZXIgaW5wdXQgaXMgYW4gaW5kZXguICBFLmcuOiAicCBhcnJ5KDUpIi4g ICovCisrICAgICAgZWxzZQorKwl7CisrCSAgc3RydWN0IHZhbHVlICp2YWw7CisrCisrCSAgaW5k ZXgtPmtpbmQgPSBTVUJTQ1JJUFRfSU5ERVg7CisrCisrCSAgLyogRXZhbHVhdGUgZWFjaCBzdWJz Y3JpcHQ7IGl0IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gIFRoaXMKKysJICAgICBl bnN1cmVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgcHJvdmlkZWQgaW5kZXguICAqLworKwkgIHZhbCA9 IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKKysJICBp bmRleC0+VS5udW1iZXIgPSB2YWx1ZV9hc19sb25nICh2YWwpOworKwl9CisrCisrICAgIH0KKysK KysgIC8qIFRyYXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIHNldCB0aGUg aGlnaCBhbmQgbG93IGJvdW5kcworKyAgICAgZm9yIGxhdGVyIHVzZS4gICovCisrICBmb3IgKGkg PSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlw dF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOworKyAgICAgIHN0cnVjdCB0eXBl ICppbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKysKKysgICAgICBz d2l0Y2ggKGluZGV4LT5raW5kKQorKwl7CisrCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgorKwkgIHsK KysKKysJICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhl IHVzZXIsIHdlIG11c3QKKysJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkg YXMgYSByYW5nZS4gIFdlIHNpbXBseQorKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGlj aCB0ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKKysJICAgICAgIGNhbGxpbmcgVkFMVUVf U0xJQ0VfMS4gICovCisrCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJh bmdlOworKworKwkgICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1 c2VyLCB3ZSB0YWtlIHRoZQorKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRo ZSBoaWdoIGJvdW5kLiAgKi8KKysJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VC QVJSQVlfTE9XX0JPVU5EKSA9PSAwKQorKwkgICAgICByYW5nZS0+bG93ID0gVFlQRV9MT1dfQk9V TkQgKGluZGV4X3R5cGUpOworKworKwkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBT VUJBUlJBWV9ISUdIX0JPVU5EKSA9PSAwKQorKwkgICAgICByYW5nZS0+aGlnaCA9IFRZUEVfSElH SF9CT1VORCAoaW5kZXhfdHlwZSk7CisrCisrCSAgICAvKiBCb3RoIHVzZXIgcHJvdmlkZWQgbG93 IGFuZCBoaWdoIGJvdW5kIGhhdmUgdG8gYmUgaW5zaWRlIHRoZQorKwkgICAgICAgYXJyYXkgYm91 bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8KKysJICAgIGlmIChyYW5nZS0+bG93IDwg VFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCisrCQl8fCByYW5nZS0+bG93ID4gVFlQRV9ISUdI X0JPVU5EIChpbmRleF90eXBlKQorKwkJfHwgcmFuZ2UtPmhpZ2ggPCBUWVBFX0xPV19CT1VORCAo aW5kZXhfdHlwZSkKKysJCXx8IHJhbmdlLT5oaWdoID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90 eXBlKSkKKysJICAgICAgZXJyb3IgKF8oInByb3ZpZGVkIGJvdW5kKHMpIG91dHNpZGUgYXJyYXkg Ym91bmQocykiKSk7CisrCisrCSAgICAvKiBGb3IgYSBuZWdhdGl2ZSBzdHJpZGUgdGhlIGxvd2Vy IGJvdW5kYXJ5IG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhlCisrCSAgICAgICB1cHBlciBib3VuZGFy eS4KKysJICAgICAgIEZvciBhIHBvc2l0aXZlIHN0cmlkZSB0aGUgbG93ZXIgYm91bmRhcnkgbXVz dCBiZSBzbWFsbGVyIHRoYW4gdGhlCisrCSAgICAgICB1cHBlciBib3VuZGFyeS4gICovCisrCSAg ICBpZiAoKHJhbmdlLT5zdHJpZGUgPCAwICYmIHJhbmdlLT5sb3cgPCByYW5nZS0+aGlnaCkKKysJ CXx8IChyYW5nZS0+c3RyaWRlID4gMCAmJiByYW5nZS0+bG93ID4gcmFuZ2UtPmhpZ2gpKQorKwkg ICAgICBlcnJvciAoXygiV3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRh cmllcyIpKTsKKysKKysJICB9CisrCSAgYnJlYWs7CisrCisrCWNhc2UgU1VCU0NSSVBUX0lOREVY OgorKwkgIGJyZWFrOworKworKwl9CisrCisrICAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RBUkdF VF9UWVBFIChhcnJheV90eXBlKTsKKysgICAgfQorKworKyAgLyogUmVzZXQgQVJSQVlfVFlQRSBi ZWZvcmUgc2xpY2luZy4qLworKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKG5ld19hcnJheSkpOworKworKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmlnaHQg dG8gbGVmdCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCisrICAgICB1c2VyIGlucHV0 LiAgVkFMVUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgsIHVudGlsIGEgcmFu Z2UKKysgICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSByYW5nZSBleHByZXNz aW9uIGhhcyBiZWVuIGV2YWx1YXRlZCwKKysgICAgIGV2ZXJ5IHN1YnNlcXVlbnQgZXhwcmVzc2lv biBpcyBhbHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCisrICBmb3IgKGkgPSBuYXJncyAtIDE7 IGkgPj0gMDsgaS0tKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5k ZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOworKyAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBl ID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKysKKysgICAgICBzd2l0Y2ggKGluZGV4 LT5raW5kKQorKwl7CisrCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgorKwkgIHsKKysKKysJICAgIC8q IFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHdlIG11 c3QKKysJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSByYW5nZS4g IFdlIHNpbXBseQorKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxscyB1cyBo b3cgbWFueSB0aW1lcyB3ZSBhcmUKKysJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0VfMS4gICov CisrCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJhbmdlOworKworKwkg ICAgLyogRElNX0NPVU5UIGNvdW50cyBldmVyeSB1c2VyIGFyZ3VtZW50IHRoYXQgaXMgdHJlYXRl ZCBhcyBhIHJhbmdlLgorKwkgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGV4cHJlc3Npb25z IGxpa2UgJ3ByaW50IGFycmF5KDcsIDg6OSkuCisrCSAgICAgICBIZXJlIHRoZSBmaXJzdCBhcmd1 bWVudCBpcyBhIGxpdGVyYWwsIGJ1dCBtdXN0IGJlIHRyZWF0ZWQgYXMgYQorKwkgICAgICAgcmFu Z2UgYXJndW1lbnQgdG8gYWxsb3cgdGhlIGNvcnJlY3Qgb3V0cHV0IHJlcHJlc2VudGF0aW9uLiAg Ki8KKysJICAgIGRpbV9jb3VudCsrOworKworKwkgICAgbmV3X2FycmF5CisrCSAgICAgID0gdmFs dWVfc2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAorKwkJCSAgICAgICByYW5nZS0+aGln aCAtIHJhbmdlLT5sb3cgKyAxLAorKwkJCSAgICAgICByYW5nZS0+c3RyaWRlLCBkaW1fY291bnQp OworKwkgIH0KKysJICBicmVhazsKKysKKysJY2FzZSBTVUJTQ1JJUFRfSU5ERVg6CisrCSAgewor KwkgICAgLyogRElNX0NPVU5UIG9ubHkgc3RheXMgJzAnIHdoZW4gbm8gcmFuZ2UgYXJndW1lbnQg d2FzIHByb2Nlc3NlZAorKwkgICAgICAgYmVmb3JlLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGRp bWVuc2lvbi4gIFRoaXMgd2F5IHdlIGNhbgorKwkgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2Yg ZGltZW5zaW9ucyBmcm9tIHRoZSByZXN1bHQgYXJyYXkuCisrCSAgICAgICBIb3dldmVyLCBpZiBh IHJhbmdlIGhhcyBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgYW4gaW5kZXgsIHdlCisrCSAgICAgICB0 cmVhdCB0aGUgaW5kZXggbGlrZSBhIHJhbmdlIHdpdGggZXF1YWwgbG93LSBhbmQgaGlnaCBib3Vu ZHMKKysJICAgICAgIHRvIGdldCB0aGUgdmFsdWUgb2Zmc2V0IHJpZ2h0LiAgKi8KKysJICAgIGlm IChkaW1fY291bnQgPT0gMCkKKysJICAgICAgbmV3X2FycmF5CisrCSAgICAgICAgPSB2YWx1ZV9z dWJzY3JpcHRlZF9ydmFsdWUgKG5ld19hcnJheSwgaW5kZXgtPlUubnVtYmVyLAorKwkJCQkJICAg IGY3N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQorKwkJCQkJCQkJICAobmV3X2FycmF5KSkp OworKwkgICAgZWxzZQorKwkgICAgICB7CisrCQlkaW1fY291bnQrKzsKKysKKysJCS8qIFdlIG1p Z2h0IGVuZCB1cCBoZXJlLCBiZWNhdXNlIHdlIGhhdmUgdG8gdHJlYXQgdGhlIHByb3ZpZGVkCisr CQkgICBpbmRleCBsaWtlIGEgcmFuZ2UuIEJ1dCBub3cgVkFMVUVfU1VCU0NSSVBURURfUlZBTFVF CisrCQkgICBjYW5ub3QgZG8gdGhlIHJhbmdlIGNoZWNrcyBmb3IgdXMuIFNvIHdlIGhhdmUgdG8g bWFrZSBzdXJlCisrCQkgICBvdXJzZWx2ZXMgdGhhdCB0aGUgdXNlciBwcm92aWRlZCBpbmRleCBp cyBpbnNpZGUgdGhlCisrCQkgICBhcnJheSBib3VuZHMuICBUaHJvdyBhbiBlcnJvciBpZiBub3Qu ICAqLworKwkJaWYgKGluZGV4LT5VLm51bWJlciA8IFRZUEVfTE9XX0JPVU5EIChpbmRleF90eXBl KQorKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlw ZSkpCisrCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5k KHMpIikpOworKworKwkJaWYgKGluZGV4LT5VLm51bWJlciA+IFRZUEVfTE9XX0JPVU5EIChpbmRl eF90eXBlKQorKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5k ZXhfdHlwZSkpCisrCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5 IGJvdW5kKHMpIikpOworKworKwkJbmV3X2FycmF5ID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5 LAorKwkJCQkJICAgaW5kZXgtPlUubnVtYmVyLAorKwkJCQkJICAgMSwgLyogQ09VTlQgaXMgJzEn IGVsZW1lbnQgICovCisrCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcxJyAgKi8KKysJCQkJ CSAgIGRpbV9jb3VudCk7CisrCSAgICAgIH0KKysKKysJICB9CisrCSAgYnJlYWs7CisrCX0KKysg ICAgICBhcnJheV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CisrICAgIH0K KysKKysgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2ZSBhIG9uZSBkaW1l bnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAorKyAgICAgYW4gYXJyYXkgb2YgYXJyYXlzLCBkZXBl bmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBieQorKyAgICAgdGhl IHVzZXIuICBTbyB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVuc2lvbnMgZm9yIHBy aW50aW5nIGl0CisrICAgICBjb3JyZWN0bHkuCisrICAgICBTdGFydGluZyBmcm9tIHJpZ2h0IHRv IGxlZnQgaW4gdGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmlyc3QKKysgICAgIHJh bmdlIGFyZ3VtZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxzbyB0cmVhdGVkIGFz IGEgcmFuZ2UuCisrICAgICBFLmcuOgorKyAgICAgInAgYXJ5KDMsIDcsIDI6MTUpIiBpbiBGb3J0 cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAzCisrICAgICByYW5n ZXMuCisrICAgICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFzIG9ubHkgMSBkaW1l bnNpb24sIGJ1dCB3ZSBjYWxjdWxhdGVkIDIKKysgICAgIHJhbmdlcy4KKysgICAgICJwIGFyeSgy OjQsIDUsIDcpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBhbmQgd2UgY2FsY3Vs YXRlZCAxCisrICAgICByYW5nZS4gICovCisrICBpZiAoZGltX2NvdW50ID4gMSkKKysgICAgewor KyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IE5VTEw7CisrCisrICAgICAgZWx0X3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKKysKKysgICAgICAvKiBFdmVy eSBTVUJTQ1JJUFRfUkFOR0UgaW4gdGhlIHVzZXIgaW5wdXQgc2lnbmlmaWVzIGFuIGFjdHVhbCBy YW5nZSBpbgorKwkgdGhlIG91dHB1dCBhcnJheS4gIFNvIHdlIHRyYXZlcnNlIHRoZSBTVUJTQ1JJ UFRfQVJSQVkgYWdhaW4sIGxvb2tpbmcKKysJIGZvciBhIHJhbmdlIGVudHJ5LiAgV2hlbiB3ZSBm aW5kIG9uZSwgd2UgdXNlIHRoZSByYW5nZSBpbmZvIHRvIGNyZWF0ZQorKwkgYW4gYWRkaXRpb25h bCByYW5nZV90eXBlIHRvIHNldCB0aGUgY29ycmVjdCBib3VuZHMgYW5kIGRpbWVuc2lvbnMgZm9y CisrCSB0aGUgb3V0cHV0IGFycmF5LiAgSW4gYWRkaXRpb24sIHdlIG1heSBoYXZlIGEgc3RyaWRl IHZhbHVlIHRoYXQgaXMgbm90CisrCSAnMScsIGZvcmNpbmcgdXMgdG8gYWRqdXN0IHRoZSBudW1i ZXIgb2YgZWxlbWVudHMgaW4gYSByYW5nZSwgYWNjb3JkaW5nCisrCSB0byB0aGUgc3RyaWRlIHZh bHVlLiAgKi8KKysgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKysJeworKwkgIHN0 cnVjdCBzdWJzY3JpcHRfc3RvcmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKKysKKysJ ICBpZiAoaW5kZXgtPmtpbmQgPT0gU1VCU0NSSVBUX1JBTkdFKQorKwkgICAgeworKwkgICAgICBz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwgKmludGVyaW1fYXJyYXlfdHlwZTsKKysKKysJICAgICAg aW50IG5ld19sZW5ndGg7CisgCistICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBsb3dfYm91 bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysJICAgICAgLyogVGhlIGxlbmd0aCBv ZiBhIHN1Yi1kaW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0aGUKKysJCSBib3Vu ZHMgcGx1cyB0aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUgbW9kaWZpZWQgYnkK KysJCSBhIHVzZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KKysJICAgICAgbmV3X2xlbmd0 aCA9IGluZGV4LT5VLnJhbmdlLmhpZ2ggLSBpbmRleC0+VS5yYW5nZS5sb3c7CisrCisrCSAgICAg IG5ld19sZW5ndGggLz0gaW5kZXgtPlUucmFuZ2Uuc3RyaWRlOworKworKwkgICAgICByYW5nZV90 eXBlCisrCQk9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKKysJCQkJCSAgICBlbHRf dHlwZSwKKysJCQkJCSAgICBpbmRleC0+VS5yYW5nZS5sb3csCisrCQkJCQkgICAgaW5kZXgtPlUu cmFuZ2UubG93ICsgbmV3X2xlbmd0aCk7CisrCisrCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9 IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLAorKwkJCQkJCSAgICAgIGVsdF90eXBlLAorKwkJCQkJ CSAgICAgIHJhbmdlX3R5cGUpOworKworKwkgICAgICBUWVBFX0NPREUgKGludGVyaW1fYXJyYXlf dHlwZSkKKysJCT0gVFlQRV9DT0RFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKKysKKysJICAg ICAgdiA9IGFsbG9jYXRlX3ZhbHVlIChpbnRlcmltX2FycmF5X3R5cGUpOworKworKwkgICAgICBl bHRfdHlwZSA9IHZhbHVlX3R5cGUgKHYpOworKwkgICAgfQorKworKwl9CisrICAgICAgdmFsdWVf Y29udGVudHNfY29weSAodiwgMCwgbmV3X2FycmF5LCAwLCBUWVBFX0xFTkdUSCAoZWx0X3R5cGUp KTsKKysgICAgICByZXR1cm4gdjsKKysgICAgfQorKworKyAgcmV0dXJuIG5ld19hcnJheTsKKyB9 CisgCisgCitAQCAtMTgxMCwxOSArMjEwNiw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIHN3aXRjaCAoY29kZSkKKyAJeworIAlj YXNlIFRZUEVfQ09ERV9BUlJBWToKKy0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBP UF9SQU5HRSkKKy0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFyZzEsIGV4cCwgcG9z LCBub3NpZGUpOworLQkgIGVsc2UKKy0JICAgIGdvdG8gbXVsdGlfZjc3X3N1YnNjcmlwdDsKKy0K KyAJY2FzZSBUWVBFX0NPREVfU1RSSU5HOgorLQkgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2Rl ID09IE9QX1JBTkdFKQorLQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhw LCBwb3MsIG5vc2lkZSk7CistCSAgZWxzZQorLQkgICAgeworLQkgICAgICBhcmcyID0gZXZhbHVh dGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOworLQkgICAgICByZXR1 cm4gdmFsdWVfc3Vic2NyaXB0IChhcmcxLCB2YWx1ZV9hc19sb25nIChhcmcyKSk7CistCSAgICB9 CisrCSAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBu b3NpZGUpOworIAorIAljYXNlIFRZUEVfQ09ERV9QVFI6CisgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6 CitAQCAtMjIyMyw0OSArMjUwOCw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAorIAl9CisgICAgICAgcmV0dXJuIChhcmcxKTsKKyAKKy0gICAg bXVsdGlfZjc3X3N1YnNjcmlwdDoKKy0gICAgICB7CistCUxPTkdFU1Qgc3Vic2NyaXB0X2FycmF5 W01BWF9GT1JUUkFOX0RJTVNdOworLQlpbnQgbmRpbWVuc2lvbnMgPSAxLCBpOworLQlzdHJ1Y3Qg dmFsdWUgKmFycmF5ID0gYXJnMTsKKy0KKy0JaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykK Ky0JICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1B WF9GT1JUUkFOX0RJTVMpOworLQorLQluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMg KHR5cGUpOworLQorLQlpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCistCSAgZXJyb3IgKF8oIldy b25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworLQorLQlnZGJfYXNzZXJ0IChuYXJncyA+IDAp OworLQorLQkvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3Jp cHQgZXhwcmVzc2lvbiAKKy0JICAgbGV0IHVzIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMg ZWxlbWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKy0KKy0JLyogVGFrZSBhcnJheSBpbmRp Y2VzIGxlZnQgdG8gcmlnaHQuICAqLworLQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKy0J ICB7CistCSAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2Fs IGludGVnZXIgaW4gRjc3LiAgKi8KKy0JICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9j b2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CistCistCSAgICAvKiBGaWxsIGluIHRoZSBzdWJz Y3JpcHQgYXJyYXkuICAqLworLQorLQkgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNf bG9uZyAoYXJnMik7CistCSAgfQorLQorLQkvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFy cmFuZ2VkIHJpZ2h0IHRvIGxlZnQuICAqLworLQlmb3IgKGkgPSBuYXJnczsgaSA+IDA7IGktLSkK Ky0JICB7CistCSAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFycmF5KSk7CistCSAgICBMT05HRVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5 W2kgLSAxXTsKKy0KKy0JICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJh eSwgaW5kZXgsCistCQkJCQkgICAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsK Ky0JICB9CistCistCXJldHVybiBhcnJheTsKKy0gICAgICB9CistCisgICAgIGNhc2UgQklOT1Bf TE9HSUNBTF9BTkQ6CisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBl eHAsIHBvcywgbm9zaWRlKTsKKyAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKK0BAIC0z MTIzLDYgKzMzNjUsOSBAQCBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlf dHlwZSkKKyAgIGludCBuZGltZW4gPSAxOworICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOworIAor KyAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKKysgICAg cmV0dXJuIDE7CisrCisgICBpZiAoKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RF X0FSUkFZKSkKKyAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1h cnJheSB0eXBlIikpOworIAorZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5jIGIvZ2RiL2V4cHBy aW50LmMKK2luZGV4IGMzN2VjYjAuLjIxNGQ1OGUgMTAwNjQ0CistLS0gYS9nZGIvZXhwcHJpbnQu YworKysrIGIvZ2RiL2V4cHByaW50LmMKK0BAIC01NjgsMTIgKzU2OCwxMCBAQCBwcmludF9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAorIAkqcG9zICs9 IDI7CisgCisgCWZwdXRzX2ZpbHRlcmVkICgiUkFOR0UoIiwgc3RyZWFtKTsKKy0JaWYgKHJhbmdl X3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVf Qk9VTkRfREVGQVVMVCkKKysJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9 PSBTVUJBUlJBWV9MT1dfQk9VTkQpCisgCSAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFt LCBQUkVDX0FCT1ZFX0NPTU1BKTsKKyAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Cist CWlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90eXBl ID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElH SF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKKyAJICBwcmludF9zdWJleHAgKGV4cCwg cG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOworIAlmcHV0c19maWx0ZXJlZCAoIikiLCBz dHJlYW0pOworIAlyZXR1cm47CitAQCAtMTA1NSwxNiArMTA1MywxNiBAQCBkdW1wX3N1YmV4cF9i b2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAorIAlzd2l0Y2ggKHJhbmdl X3R5cGUpCisgCSAgeworLQkgIGNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgorKwkgIGNhc2UgU1VC QVJSQVlfTk9ORV9CT1VORDoKKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0 cmVhbSk7CisgCSAgICBicmVhazsKKy0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgorKwkgIGNh c2UgU1VCQVJSQVlfSElHSF9CT1VORDoKKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4u RVhQJyIsIHN0cmVhbSk7CisgCSAgICBicmVhazsKKy0JICBjYXNlIEhJR0hfQk9VTkRfREVGQVVM VDoKKysJICBjYXNlIFNVQkFSUkFZX0xPV19CT1VORDoKKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgi UmFuZ2UgJ0VYUC4uJyIsIHN0cmVhbSk7CisgCSAgICBicmVhazsKKy0JICBjYXNlIE5PTkVfQk9V TkRfREVGQVVMVDoKKysJICBjYXNlIChTVUJBUlJBWV9MT1dfQk9VTkQgfCBTVUJBUlJBWV9ISUdI X0JPVU5EKToKKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VYUC4uRVhQJyIsIHN0cmVh bSk7CisgCSAgICBicmVhazsKKyAJICBkZWZhdWx0OgorQEAgLTEwNzIsMTEgKzEwNzAsOSBAQCBk dW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAkgICAg YnJlYWs7CisgCSAgfQorIAorLQlpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQK Ky0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQorKwlpZiAoKHJhbmdl X3R5cGUgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19CT1VORCkKKyAJICBl bHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7CistCWlmIChyYW5nZV90eXBlID09 IExPV19CT1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVG QVVMVCkKKysJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJS QVlfSElHSF9CT1VORCkKKyAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7 CisgICAgICAgfQorICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2dkYi9leHByZXNzaW9uLmgg Yi9nZGIvZXhwcmVzc2lvbi5oCitpbmRleCA0OTUyZDg0Li4zNGNhNTRiIDEwMDY0NAorLS0tIGEv Z2RiL2V4cHJlc3Npb24uaAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAorQEAgLTE1MiwxNyArMTUy LDE3IEBAIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9u ICosCisgCQkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopOworIGV4dGVybiB2b2lkIGR1bXBf cHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICop OworIAorLS8qIEluIGFuIE9QX1JBTkdFIGV4cHJlc3Npb24sIGVpdGhlciBib3VuZCBjb3VsZCBi ZSBlbXB0eSwgaW5kaWNhdGluZworLSAgIHRoYXQgaXRzIHZhbHVlIGlzIGJ5IGRlZmF1bHQgdGhh dCBvZiB0aGUgY29ycmVzcG9uZGluZyBib3VuZCBvZiB0aGUKKy0gICBhcnJheSBvciBzdHJpbmcu ICBTbyB3ZSBoYXZlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UuICBUaGlzCistICAgZW51bWVyYXRp b24gdHlwZSBpcyB0byBpZGVudGlmeSB0aGlzLiAgKi8KKy0gICAKKysvKiBJbiBhbiBPUF9SQU5H RSBleHByZXNzaW9uLCBlaXRoZXIgYm91bmQgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCBv ciBub3QuCisrICAgSW4gYWRkaXRpb24gdG8gdGhpcywgdGhlIHVzZXIgY2FuIGFsc28gc3BlY2lm eSBhIHN0cmlkZSB2YWx1ZSB0byBpbmRpY2F0ZWQKKysgICBvbmx5IGNlcnRhaW4gZWxlbWVudHMg b2YgdGhlIGFycmF5LiAgVGhpcyBlbnVtZXJhdGlvbiB0eXBlIGlzIHRvIGlkZW50aWZ5CisrICAg dGhpcy4gICovCisrCisgZW51bSByYW5nZV90eXBlCisgICB7CistICAgIEJPVEhfQk9VTkRfREVG QVVMVCwJCS8qICIoOikiICAqLworLSAgICBMT1dfQk9VTkRfREVGQVVMVCwJCS8qICIoOmhpZ2gp IiAgKi8KKy0gICAgSElHSF9CT1VORF9ERUZBVUxULAkJLyogIihsb3c6KSIgICovCistICAgIE5P TkVfQk9VTkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAqLworKyAgICBTVUJBUlJBWV9OT05F X0JPVU5EID0gMHgwLAkJLyogIiggOiApIiAgKi8KKysgICAgU1VCQVJSQVlfTE9XX0JPVU5EID0g MHgxLAkJLyogIihsb3c6KSIgICovCisrICAgIFNVQkFSUkFZX0hJR0hfQk9VTkQgPSAweDIsCQkv KiAiKDpoaWdoKSIgICovCisrICAgIFNVQkFSUkFZX1NUUklERSA9IDB4NAkJLyogIig6OnN0cmlk ZSkiICAqLworICAgfTsKKyAKKyAjZW5kaWYgLyogIWRlZmluZWQgKEVYUFJFU1NJT05fSCkgKi8K K2RpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55CitpbmRleCBlMzE0OGEzLi43 MWYxODIzIDEwMDY0NAorLS0tIGEvZ2RiL2YtZXhwLnkKKysrKyBiL2dkYi9mLWV4cC55CitAQCAt MjUzLDMxICsyNTMsNjMgQEAgYXJnbGlzdCA6CXN1YnJhbmdlCisgICAgCisgYXJnbGlzdAk6CWFy Z2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCisgCQkJeyBhcmdsaXN0X2xlbisrOyB9 CisrCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09NTUEKKysJCQl7IGFyZ2xp c3RfbGVuKys7IH0KKyAJOworIAorIC8qIFRoZXJlIGFyZSBmb3VyIHNvcnRzIG9mIHN1YnJhbmdl IHR5cGVzIGluIEY5MC4gICovCisgCisgc3VicmFuZ2U6CWV4cCAnOicgZXhwCSVwcmVjIEFCT1ZF X0NPTU1BCistCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IAor LQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIE5PTkVfQk9VTkRfREVGQVVMVCk7 CisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7CisrCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwKKysJCQkJCQkgU1VCQVJSQVlfTE9XX0JPVU5E IHwgU1VCQVJSQVlfSElHSF9CT1VORCk7CisgCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0 YXRlLCBPUF9SQU5HRSk7IH0KKyAJOworIAorIHN1YnJhbmdlOglleHAgJzonCSVwcmVjIEFCT1ZF X0NPTU1BCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Cist CQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9ERUZBVUxUKTsK KysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1dfQk9VTkQp OworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisgCTsK KyAKKyBzdWJyYW5nZToJJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQorIAkJCXsgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOworLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25n Y3N0IChwc3RhdGUsIExPV19CT1VORF9ERUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9u Z2NzdCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKKyAJCQkgIHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorIAk7CisgCisgc3VicmFuZ2U6CSc6JwklcHJl YyBBQk9WRV9DT01NQQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFO R0UpOworLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIEJPVEhfQk9VTkRfREVG QVVMVCk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTk9O RV9CT1VORCk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7 IH0KKysJOworKworKy8qIEVhY2ggc3VicmFuZ2UgdHlwZSBjYW4gaGF2ZSBhIHN0cmlkZSBhcmd1 bWVudC4gICovCisrc3VicmFuZ2U6CWV4cCAnOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09N TUEKKysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKysJCQkg IHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9MT1dfQk9VTkQKKysJCQkJ CQkgfCBTVUJBUlJBWV9ISUdIX0JPVU5ECisrCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURFKTsKKysJ CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorKwk7CisrCisr c3VicmFuZ2U6CWV4cCAnOicgJzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQorKwkJCXsgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9s b25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORAorKwkJCQkJCSB8IFNVQkFSUkFZX1NU UklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0K KysJOworKworK3N1YnJhbmdlOgknOicgZXhwICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEKKysJ CQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKysJCQkgIHdyaXRl X2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9ISUdIX0JPVU5ECisrCQkJCQkJIHwg U1VCQVJSQVlfU1RSSURFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9Q X1JBTkdFKTsgfQorKwk7CisrCisrc3VicmFuZ2U6CSc6JyAnOicgZXhwICVwcmVjIEFCT1ZFX0NP TU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7CisrCQkJ ICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfU1RSSURFKTsKKyAJCQkg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorIAk7CisgCitkaWZm IC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4IDA4MjE1 ZTIuLmU2ZWNhNmEgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12 YWxwcmludC5jCitAQCAtMTIxLDggKzEyMSwxNCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5z cywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAKKyAgIGlmIChuc3MgIT0g bmRpbWVuc2lvbnMpCisgICAgIHsKKy0gICAgICBzaXplX3QgZGltX3NpemUgPSBUWVBFX0xFTkdU SCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKyAgICAgIHNpemVfdCBkaW1fc2l6ZTsKKyAg ICAgICBzaXplX3Qgb2ZmcyA9IDA7CisrICAgICAgTE9OR0VTVCBieXRlX3N0cmlkZSA9IGFicyAo VFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkpOworKworKyAgICAgIGlmIChieXRlX3N0cmlk ZSkKKysgICAgICAgIGRpbV9zaXplID0gYnl0ZV9zdHJpZGU7CisrICAgICAgZWxzZQorKyAgICAg ICAgZGltX3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworIAor ICAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7CisgCSAgIChpIDwgdXBwZXJib3VuZCArIDEgJiYg KCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVz LmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXggZWM1YzE3YS4uZWI4Mzc5MSAxMDA2NDQKKy0tLSBh L2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYworQEAgLTgzNiw3ICs4MzYsOCBA QCBhbGxvY2F0ZV9zdHViX21ldGhvZCAoc3RydWN0IHR5cGUgKnR5cGUpCisgc3RydWN0IHR5cGUg KgorIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0 eXBlICppbmRleF90eXBlLAorIAkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqbG93X2Jv dW5kLAorLQkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCkKKysJCSAg IGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmhpZ2hfYm91bmQsCisrCQkgICBjb25zdCBzdHJ1 Y3QgZHluYW1pY19wcm9wICpzdHJpZGUpCisgeworICAgaWYgKHJlc3VsdF90eXBlID09IE5VTEwp CisgICAgIHJlc3VsdF90eXBlID0gYWxsb2NfdHlwZV9jb3B5IChpbmRleF90eXBlKTsKK0BAIC04 NTEsNiArODUyLDcgQEAgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlw ZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisgICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlw ZSwgc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7CisgICBUWVBFX1JBTkdFX0RBVEEgKHJl c3VsdF90eXBlKS0+bG93ID0gKmxvd19ib3VuZDsKKyAgIFRZUEVfUkFOR0VfREFUQSAocmVzdWx0 X3R5cGUpLT5oaWdoID0gKmhpZ2hfYm91bmQ7CisrICBUWVBFX1JBTkdFX0RBVEEgKHJlc3VsdF90 eXBlKS0+c3RyaWRlID0gKnN0cmlkZTsKKyAKKyAgIGlmIChsb3dfYm91bmQtPmtpbmQgPT0gUFJP UF9DT05TVCAmJiBsb3dfYm91bmQtPmRhdGEuY29uc3RfdmFsID49IDApCisgICAgIFRZUEVfVU5T SUdORUQgKHJlc3VsdF90eXBlKSA9IDE7CitAQCAtODc5LDcgKzg4MSw3IEBAIHN0cnVjdCB0eXBl ICoKKyBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwg c3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisgCQkJICBMT05HRVNUIGxvd19ib3VuZCwgTE9OR0VT VCBoaWdoX2JvdW5kKQorIHsKKy0gIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoOworKyAg c3RydWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAKKyAgIGxvdy5raW5kID0g UFJPUF9DT05TVDsKKyAgIGxvdy5kYXRhLmNvbnN0X3ZhbCA9IGxvd19ib3VuZDsKK0BAIC04ODcs NyArODg5LDExIEBAIGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3Vs dF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAgIGhpZ2gua2luZCA9IFBST1BfQ09O U1Q7CisgICBoaWdoLmRhdGEuY29uc3RfdmFsID0gaGlnaF9ib3VuZDsKKyAKKy0gIHJlc3VsdF90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKHJlc3VsdF90eXBlLCBpbmRleF90eXBlLCAmbG93LCAm aGlnaCk7CisrICBzdHJpZGUua2luZCA9IFBST1BfQ09OU1Q7CisrICBzdHJpZGUuZGF0YS5jb25z dF92YWwgPSAwOworKworKyAgcmVzdWx0X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0 X3R5cGUsIGluZGV4X3R5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm bG93LCAmaGlnaCwgJnN0cmlkZSk7CisgCisgICByZXR1cm4gcmVzdWx0X3R5cGU7CisgfQorQEAg LTEwODQsMTYgKzEwOTAsMjAgQEAgY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9zdHJpZGUgKHN0cnVj dCB0eXBlICpyZXN1bHRfdHlwZSwKKyAgICAgICAmJiAoIXR5cGVfbm90X2Fzc29jaWF0ZWQgKHJl c3VsdF90eXBlKQorIAkgICYmICF0eXBlX25vdF9hbGxvY2F0ZWQgKHJlc3VsdF90eXBlKSkpCisg ICAgIHsKKy0gICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgICAgICBMT05H RVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7CisgCisgICAgICAgaWYgKGdl dF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8 IDApCisgCWxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOworICAgICAgIGVsZW1lbnRfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKGVsZW1lbnRfdHlwZSk7CisrICAgICAgYnl0ZV9zdHJpZGUgPSBhYnMg KFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpKTsKKysKKyAgICAgICAvKiBCZSBjYXJlZnVs IHdoZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKKyAJIGVt cHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93 X2JvdW5kLgorIAkgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVy by4gICovCisgICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCisgCVRZUEVfTEVOR1RI IChyZXN1bHRfdHlwZSkgPSAwOworKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKKysJ VFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBs b3dfYm91bmQgKyAxKTsKKyAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4gMCkKKyAJVFlQRV9M RU5HVEggKHJlc3VsdF90eXBlKSA9CisgCSAgKGJpdF9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxv d19ib3VuZCArIDEpICsgNykgLyA4OworQEAgLTE4ODgsMTIgKzE4OTgsMTIgQEAgcmVzb2x2ZV9k eW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUsCisgICBDT1JFX0FERFIg dmFsdWU7CisgICBzdHJ1Y3QgdHlwZSAqc3RhdGljX3JhbmdlX3R5cGUsICpzdGF0aWNfdGFyZ2V0 X3R5cGU7CisgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wOworLSAgc3RydWN0IGR5 bmFtaWNfcHJvcCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisrICBzdHJ1Y3QgZHluYW1pY19wcm9w IGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgc3RyaWRlOworIAorICAgZ2RiX2Fzc2VydCAoVFlQRV9D T0RFIChkeW5fcmFuZ2VfdHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKTsKKyAKKyAgIHByb3AgPSAm VFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPmxvdzsKKy0gIGlmIChkd2FyZjJfZXZh bHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkpCisrICBpZiAo ZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5X3NpZ25lZCAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywg JnZhbHVlLCAxKSkKKyAgICAgeworICAgICAgIGxvd19ib3VuZC5raW5kID0gUFJPUF9DT05TVDsK KyAgICAgICBsb3dfYm91bmQuZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKK0BAIC0xOTA1LDcgKzE5 MTUsNyBAQCByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fcmFuZ2VfdHlw ZSwKKyAgICAgfQorIAorICAgcHJvcCA9ICZUWVBFX1JBTkdFX0RBVEEgKGR5bl9yYW5nZV90eXBl KS0+aGlnaDsKKy0gIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFk ZHJfc3RhY2ssICZ2YWx1ZSkpCisrICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5X3NpZ25l ZCAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZhbHVlLCAxKSkKKyAgICAgeworICAgICAgIGhp Z2hfYm91bmQua2luZCA9IFBST1BfQ09OU1Q7CisgICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0 X3ZhbCA9IHZhbHVlOworQEAgLTE5MjAsMTIgKzE5MzAsMjAgQEAgcmVzb2x2ZV9keW5hbWljX3Jh bmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUsCisgICAgICAgaGlnaF9ib3VuZC5kYXRh LmNvbnN0X3ZhbCA9IDA7CisgICAgIH0KKyAKKysgIHByb3AgPSAmVFlQRV9SQU5HRV9EQVRBIChk eW5fcmFuZ2VfdHlwZSktPnN0cmlkZTsKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHlf c2lnbmVkIChwcm9wLCBOVUxMLCBhZGRyX3N0YWNrLCAmdmFsdWUsIDEpKQorKyAgICB7CisrICAg ICAgc3RyaWRlLmtpbmQgPSBQUk9QX0NPTlNUOworKyAgICAgIHN0cmlkZS5kYXRhLmNvbnN0X3Zh bCA9IHZhbHVlOworKyAgICB9CisrCisgICBzdGF0aWNfdGFyZ2V0X3R5cGUKKyAgICAgPSByZXNv bHZlX2R5bmFtaWNfdHlwZV9pbnRlcm5hbCAoVFlQRV9UQVJHRVRfVFlQRSAoZHluX3JhbmdlX3R5 cGUpLAorIAkJCQkgICAgIGFkZHJfc3RhY2ssIDApOworICAgc3RhdGljX3JhbmdlX3R5cGUgPSBj cmVhdGVfcmFuZ2VfdHlwZSAoY29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSksCisgCQkJCQkgc3Rh dGljX3RhcmdldF90eXBlLAorLQkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKTsKKysJCQkJ CSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCwgJnN0cmlkZSk7CisrCisgICBUWVBFX1JBTkdFX0RB VEEgKHN0YXRpY19yYW5nZV90eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0ZWQgPSAxOworICAgcmV0 dXJuIHN0YXRpY19yYW5nZV90eXBlOworIH0KK2RpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuaCBi L2dkYi9nZGJ0eXBlcy5oCitpbmRleCAyZGRhMDc0Li5iY2M5MjAwIDEwMDY0NAorLS0tIGEvZ2Ri L2dkYnR5cGVzLmgKKysrKyBiL2dkYi9nZGJ0eXBlcy5oCitAQCAtNTc3LDYgKzU3NywxMCBAQCBz dHJ1Y3QgcmFuZ2VfYm91bmRzCisgCisgICBzdHJ1Y3QgZHluYW1pY19wcm9wIGhpZ2g7CisgCisr ICAvKiAqIFN0cmlkZSBvZiByYW5nZS4gICovCisrCisrICBzdHJ1Y3QgZHluYW1pY19wcm9wIHN0 cmlkZTsKKysKKyAgIC8qIFRydWUgaWYgSElHSCByYW5nZSBib3VuZCBjb250YWlucyB0aGUgbnVt YmVyIG9mIGVsZW1lbnRzIGluIHRoZQorICAgICAgc3VicmFuZ2UuIFRoaXMgYWZmZWN0cyBob3cg dGhlIGZpbmFsIGhpZ2h0IGJvdW5kIGlzIGNvbXB1dGVkLiAgKi8KKyAKK0BAIC03MzksNyArNzQz LDYgQEAgc3RydWN0IG1haW5fdHlwZQorICAgICAvKiAqIFVuaW9uIG1lbWJlciB1c2VkIGZvciBy YW5nZSB0eXBlcy4gICovCisgCisgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMgKmJvdW5kczsKKy0K KyAgIH0gZmxkc19ibmRzOworIAorICAgLyogKiBTbG90IHRvIHBvaW50IHRvIGFkZGl0aW9uYWwg bGFuZ3VhZ2Utc3BlY2lmaWMgZmllbGRzIG9mIHRoaXMKK0BAIC0xMjU1LDYgKzEyNTgsMTUgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgICBU WVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2gua2luZAorICNkZWZpbmUgVFlQRV9MT1df Qk9VTkRfS0lORChyYW5nZV90eXBlKSBcCisgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSkt Pmxvdy5raW5kCisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFwKKysgIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEuY29uc3RfdmFsCisrI2RlZmlu ZSBUWVBFX0JZVEVfU1RSSURFX0JMT0NLKHJhbmdlX3R5cGUpIFwKKysgIFRZUEVfUkFOR0VfREFU QShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jZXhwcgorKyNkZWZpbmUgVFlQRV9CWVRFX1NU UklERV9MT0NMSVNUKHJhbmdlX3R5cGUpIFwKKysgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBl KS0+c3RyaWRlLmRhdGEubG9jbGlzdAorKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9LSU5EKHJh bmdlX3R5cGUpIFwKKysgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmtpbmQK KysKKyAKKyAvKiBQcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIHRoZSB0eXBlIGRhdGEgbG9jYXRpb24u ICAqLworICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBcCitAQCAtMTI4OSw2 ICsxMzAxLDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7CisgICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChUWVBFX0lOREVYX1RZUEUoYXJy YXl0eXBlKSkKKyAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVEKGFy cmF5dHlwZSkgXAorICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChUWVBFX0lOREVYX1RZUEUo YXJyYXl0eXBlKSkKKysjZGVmaW5lIFRZUEVfQVJSQVlfU1RSSURFX0lTX1VOREVGSU5FRChhcnJh eXR5cGUpIFwKKysgICAoVFlQRV9CWVRFX1NUUklERShUWVBFX0lOREVYX1RZUEUoYXJyYXl0eXBl KSkgPT0gMCkKKysKKyAKKyAjZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFMVUUoYXJy YXl0eXBlKSBcCisgICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlw ZSkpKSkKK0BAIC0xNzgzLDYgKzE3OTgsNyBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9h cnJheV90eXBlX3dpdGhfc3RyaWRlCisgCisgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfcmFu Z2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKKyAJCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBkeW5hbWljX3Byb3AgKiwKKysJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWlj X3Byb3AgKiwKKyAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKik7CisgCisg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHR5cGUgKiwKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCitpbmRl eCAyYjAwNzA4Li45OTJhZjg3IDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNlLmMKKysrKyBiL2dkYi9w YXJzZS5jCitAQCAtMTAwNiwyMiArMTAwNiwyMCBAQCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQg KGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAorIAorICAgICBjYXNl IE9QX1JBTkdFOgorICAgICAgIG9wbGVuID0gMzsKKysgICAgICBhcmdzID0gMDsKKyAgICAgICBy YW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKKyAJbG9uZ2VzdF90b19pbnQgKGV4cHItPmVs dHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKKyAKKy0gICAgICBzd2l0Y2ggKHJhbmdlX3R5cGUp CistCXsKKy0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKKy0JY2FzZSBISUdIX0JPVU5EX0RFRkFV TFQ6CistCSAgYXJncyA9IDE7CistCSAgYnJlYWs7CistCWNhc2UgQk9USF9CT1VORF9ERUZBVUxU OgorLQkgIGFyZ3MgPSAwOworLQkgIGJyZWFrOworLQljYXNlIE5PTkVfQk9VTkRfREVGQVVMVDoK Ky0JICBhcmdzID0gMjsKKy0JICBicmVhazsKKy0JfQorKyAgICAgIC8qIEluY3JlbWVudCB0aGUg YXJndW1lbnQgY291bnRlciBmb3IgZWFjaCBhcmd1bWVudAorKwkgcHJvdmlkZWQgYnkgdGhlIHVz ZXIuICAqLworKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkgPT0g U1VCQVJSQVlfTE9XX0JPVU5EKQorKwlhcmdzKys7CisrCisrICAgICAgaWYgKChyYW5nZV90eXBl ICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKKysJYXJncysr OworKworKyAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX1NUUklERSkgPT0gU1VCQVJS QVlfU1RSSURFKQorKwlhcmdzKys7CisgCisgICAgICAgYnJlYWs7CisgCitkaWZmIC0tZ2l0IGEv Z2RiL3J1c3QtZXhwLnkgYi9nZGIvcnVzdC1leHAueQoraW5kZXggYWViNjA1OC4uYjFiOTYzMyAx MDA2NDQKKy0tLSBhL2dkYi9ydXN0LWV4cC55CisrKysgYi9nZGIvcnVzdC1leHAueQorQEAgLTI0 MjksMjMgKzI0MjksMTcgQEAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAoc3RydWN0IHBhcnNl cl9zdGF0ZSAqc3RhdGUsCisgCisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAgICAgeworLQllbnVt IHJhbmdlX3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKKysJZW51bSByYW5nZV90eXBl IGtpbmQgPSBTVUJBUlJBWV9OT05FX0JPVU5EOworIAorIAlpZiAob3BlcmF0aW9uLT5sZWZ0Lm9w ICE9IE5VTEwpCisgCSAgeworIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAoc3RhdGUs IG9wZXJhdGlvbi0+bGVmdC5vcCwgdG9wKTsKKy0JICAgIGtpbmQgPSBISUdIX0JPVU5EX0RFRkFV TFQ7CisrCSAgICBraW5kID0gU1VCQVJSQVlfTE9XX0JPVU5EOworIAkgIH0KKyAJaWYgKG9wZXJh dGlvbi0+cmlnaHQub3AgIT0gTlVMTCkKKyAJICB7CisgCSAgICBjb252ZXJ0X2FzdF90b19leHBy ZXNzaW9uIChzdGF0ZSwgb3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKKy0JICAgIGlmIChraW5k ID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKy0JICAgICAga2luZCA9IExPV19CT1VORF9ERUZBVUxU OworLQkgICAgZWxzZQorLQkgICAgICB7CistCQlnZGJfYXNzZXJ0IChraW5kID09IEhJR0hfQk9V TkRfREVGQVVMVCk7CistCQlraW5kID0gTk9ORV9CT1VORF9ERUZBVUxUOworLQkgICAgICB9Cisr CSAgICBraW5kID0gKHJhbmdlX3R5cGUpIChraW5kIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7Cisg CSAgfQorIAl3cml0ZV9leHBfZWx0X29wY29kZSAoc3RhdGUsIE9QX1JBTkdFKTsKKyAJd3JpdGVf ZXhwX2VsdF9sb25nY3N0IChzdGF0ZSwga2luZCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3J1c3QtbGFu Zy5jIGIvZ2RiL3J1c3QtbGFuZy5jCitpbmRleCAxN2IyMGM2Li4yOTUwMDJmIDEwMDY0NAorLS0t IGEvZ2RiL3J1c3QtbGFuZy5jCisrKysgYi9nZGIvcnVzdC1sYW5nLmMKK0BAIC0xMjQxLDkgKzEy NDEsOSBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51 bSBub3NpZGUgbm9zaWRlKQorICAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdlc3RfdG9f aW50IChleHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7CisgICAqcG9zICs9IDM7CisgCist ICBpZiAoa2luZCA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBOT05FX0JPVU5EX0RF RkFVTFQpCisrICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xP V19CT1VORCkKKyAgICAgbG93ID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9z LCBub3NpZGUpOworLSAgaWYgKGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBO T05FX0JPVU5EX0RFRkFVTFQpCisrICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKSA9 PSBTVUJBUlJBWV9ISUdIX0JPVU5EKQorICAgICBoaWdoID0gZXZhbHVhdGVfc3ViZXhwIChOVUxM X1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOworIAorICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVAp CitAQCAtMTMzMiw3ICsxMzMyLDcgQEAgcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHZhbHVlICpyYW5nZSwKKyAKKyAgICpsb3cgPSAwOworICAgKmhpZ2ggPSAw OworLSAgKmtpbmQgPSBCT1RIX0JPVU5EX0RFRkFVTFQ7CisrICAqa2luZCA9IFNVQkFSUkFZX05P TkVfQk9VTkQ7CisgCisgICBpZiAoVFlQRV9ORklFTERTICh0eXBlKSA9PSAwKQorICAgICByZXR1 cm47CitAQCAtMTM0MCwxNSArMTM0MCwxNCBAQCBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAorICAgaSA9IDA7CisgICBpZiAoc3RyY21w IChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQorICAgICB7CistICAg ICAgKmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7CisrICAgICAgKmtpbmQgPSBTVUJBUlJBWV9M T1dfQk9VTkQ7CisgICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5n ZSwgMCkpOworICAgICAgICsraTsKKyAgICAgfQorICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkg PiBpCisgICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLCAiZW5kIikg PT0gMCkKKyAgICAgeworLSAgICAgICpraW5kID0gKCpraW5kID09IEJPVEhfQk9VTkRfREVGQVVM VAorLQkgICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9VTkRfREVGQVVMVCk7Cisr ICAgICAgKmtpbmQgPSAocmFuZ2VfdHlwZSkgKCpraW5kIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7 CisgICAgICAgKmhpZ2ggPSB2YWx1ZV9hc19sb25nICh2YWx1ZV9maWVsZCAocmFuZ2UsIGkpKTsK KyAgICAgfQorIH0KK0BAIC0xMzYzLDcgKzEzNjIsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKKyAgIHN0cnVj dCB0eXBlICpyaHN0eXBlOworICAgTE9OR0VTVCBsb3csIGhpZ2hfYm91bmQ7CisgICAvKiBJbml0 aWFsaXplZCB0byBhcHBlYXNlIHRoZSBjb21waWxlci4gICovCistICBlbnVtIHJhbmdlX3R5cGUg a2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKKysgIGVudW0gcmFuZ2VfdHlwZSBraW5kID0gU1VC QVJSQVlfTk9ORV9CT1VORDsKKyAgIExPTkdFU1QgaGlnaCA9IDA7CisgICBpbnQgd2FudF9zbGlj ZSA9IDA7CisgCitAQCAtMTQyNSw3ICsxNDI0LDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCisgCWVycm9yIChf KCJDYW5ub3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOworIAorICAgICAgIGlmICh3YW50 X3NsaWNlCistCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9X X0JPVU5EX0RFRkFVTFQpKQorKwkgICYmICgoa2luZCAmIFNVQkFSUkFZX0xPV19CT1VORCkgIT0g U1VCQVJSQVlfTE9XX0JPVU5EKSkKKyAJbG93ID0gbG93X2JvdW5kOworICAgICAgIGlmIChsb3cg PCAwKQorIAllcnJvciAoXygiSW5kZXggbGVzcyB0aGFuIHplcm8iKSk7CitAQCAtMTQ0Myw3ICsx NDQyLDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9z LCBlbnVtIG5vc2lkZSBub3NpZGUsCisgCSAgQ09SRV9BRERSIGFkZHI7CisgCSAgc3RydWN0IHZh bHVlICphZGRydmFsLCAqdGVtOworIAorLQkgIGlmIChraW5kID09IEJPVEhfQk9VTkRfREVGQVVM VCB8fCBraW5kID09IEhJR0hfQk9VTkRfREVGQVVMVCkKKysJICBpZiAoKGtpbmQgJiBTVUJBUlJB WV9ISUdIX0JPVU5EKSAhPSBTVUJBUlJBWV9ISUdIX0JPVU5EKQorIAkgICAgaGlnaCA9IGhpZ2hf Ym91bmQ7CisgCSAgaWYgKGhpZ2ggPCAwKQorIAkgICAgZXJyb3IgKF8oIkhpZ2ggaW5kZXggbGVz cyB0aGFuIHplcm8iKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dGF0aWMtYXJyYXlzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5 cy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jYzllY2MwCistLS0g L2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMu ZXhwCitAQCAtMCwwICsxLDQyMSBAQAorKyMgQ29weXJpZ2h0IDIwMTUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrIworKyMgQ29udHJpYnV0ZWQgYnkgSW50ZWwgQ29ycC4gPGNocmlz dG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlIHN0YXRpYy1hcnJheXMuZjkwCisrCisraWYgeyBb cHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVi dWcgZjkwfV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1bnRvIE1BSU5fX10g dGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgor KyAgICBjb250aW51ZQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiQlAxIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQlAxIiAiLipCUDEuKiIKKysK KysjIFRlc3RzIHN1YmFycmF5cyBvZiBvbmUgZGltZW5zaW9uYWwgYXJyYXlzIHdpdGggc3VicmFu Z2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBhcjEiICJcXCRcWzAtOVxdKyA9IFxcKDEs IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDlcXCkiIFwKKysJCSJwcmludCBhcjEuIgorK2dkYl90ZXN0 ICJwcmludCBhcjFcKDQ6N1wpIiAiXFwkXFswLTlcXSsgPSBcXCg0LCA1LCA2LCA3XFwpIiBcCisr CQkicHJpbnQgYXIxXCg0OjdcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OlwpIiAiXFwkXFsw LTlcXSsgPSBcXCg4LCA5XFwpLioiIFwKKysJCSJwcmludCBhcjFcKDg6XCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyMVwoOjNcKSIgIlxcJFxbMC05XF0rID0gXFwoMSwgMiwgM1xcKS4qIiBcCisrCQki cHJpbnQgYXIxXCg6M1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDpcKSIgIlxcJFxbMC05XF0r ID0gXFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAorKwkJInByaW50IGFyMVwoOlwp IgorKworKyMgQ2hlY2sgYXNzaWdubWVudAorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IFwkbXlf YXJ5ID0gYXIxXCgzOjhcKSIKKytnZGJfdGVzdCAicHJpbnQgXCRteV9hcnkiIFwKKysJCSJcXCRc WzAtOVxdKyA9IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKKysJCSJBc3NpZ25tZW50IG9mIHN1 YmFycmF5IHRvIHZhcmlhYmxlIgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGFyMVwoNVwpID0g NDIiCisrCQlnZGJfdGVzdCAicHJpbnQgYXIxXCgzOjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0g XFwoMywgNCwgNDIsIDYsIDcsIDhcXCkiIFwKKysJCSJwcmludCBhcjFcKDM6OFwpIGFmdGVyIGFz c2lnbm1lbnQiCisrZ2RiX3Rlc3QgInByaW50IFwkbXlfYXJ5IiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXCgzLCA0LCA1LCA2LCA3LCA4XFwpIiBcCisrCQkiQXNzaWdubWVudCBvZiBzdWJhcnJheSB0 byB2YXJpYWJsZSBhZnRlciBvcmlnaW5hbCBhcnJheSBjaGFuZ2VkIgorKworKyMgVGVzdCBmb3Ig c3ViYXJyYXlzIG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRlcmFscworKwkJZ2Ri X3Rlc3QgInByaW50IGFyMVwoM1wpIiAiXFwkXFswLTlcXSsgPSAzIiBcCisrCQkicHJpbnQgYXIx XCgzXCkiCisrCisrIyBUZXN0cyBmb3Igc3VicmFuZ2VzIG9mIDIgZGltZW5zaW9uYWwgYXJyYXlz IHdpdGggc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6MywgMzo0 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMywgMzNcXCkgXFwoIDI0LCAzNFxcKSBc XCkiIFwKKysJCSJwcmludCBhcjJcKDI6MywgMzo0XCkuIgorK2dkYl90ZXN0ICJwcmludCBhcjJc KDg6OSw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODgsIDk4XFwpIFxcKCA4OSwg OTlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4OjksODpcKSIKKytnZGJfdGVzdCAicHJpbnQg YXIyXCg4OjksOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDgxLCA5MVxcKSBcXCgg ODIsIDkyXFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoODo5LDoyXCkiCisrCisrZ2RiX3Rlc3Qg InByaW50IGFyMlwoODosODo5XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwgOThc XCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDg6LDg6OVwpIgorK2dkYl90 ZXN0ICJwcmludCBhcjJcKDg6LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwg OThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDg6LDg6XCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyMlwoODosOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDgx LCA5MVxcKSBcXCggODIsIDkyXFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoODosOjJcKSIKKysK KytnZGJfdGVzdCAicHJpbnQgYXIyXCg6MiwyOjNcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIDEyLCAyMlxcKSBcXCggMTMsIDIzXFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoOjIsMjoz XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoOjIsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIDE4LCAyOFxcKSBcXCggMTksIDI5XFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoOjIs ODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXChcXCggMTEsIDIxXFwpIFxcKCAxMiwgMjJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg6 Miw6MlwpIgorKworKyMgVGVzdCBzdWJyYW5nZXMgb2YgMiBkaW1lbnNpb25hbCBhcnJheXMgd2l0 aCBsaXRlcmFscyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBhcjJc KDcsIDM6NlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg3MywgNzQsIDc1LCA3NlxcKSIgXAor KwkJInByaW50IGFyMlwoNywgMzo2XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoNyw4OlwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXCg3OCwgNzlcXCkiIFwKKysJCSJwcmludCBhcjJcKDcsODpc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg3LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxc KDcxLCA3MlxcKSIgXAorKwkJInByaW50IGFyMlwoNyw6MlwpIgorKworK2dkYl90ZXN0ICJwcmlu dCBhcjJcKDc6OCw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDc0LCA4NFxcKSIgXAorKwkJ InByaW50IGFyMig3OjgsNFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6LDRcKSIgXAorKwkJ IlxcJFxbMC05XF0rID0gXFwoODQsIDk0XFwpIiBcCisrCQkicHJpbnQgYXIyXCg4Oiw0XCkiCisr Z2RiX3Rlc3QgInByaW50IGFyMlwoOjIsNFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgxNCwg MjRcXCkiIFwKKysJCSJwcmludCBhcjJcKDoyLDRcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCgz LDRcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gMzQiIFwKKysJCSJwcmludCBhcjJcKDMsNFwpIgor KworKyMgVGVzdCBzdWJhcnJheXMgb2YgMyBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBsaXRlcmFs cyBhbmQgc3VicmFuZ2UgdmFyaWF0aW9ucworK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NCwzOjQs Nzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM3LCAzMzcsIDQzN1xcKSBc XCggMjQ3LCAzNDcsIDQ0N1xcKVwKKysJCSBcXCkgXFwoIFxcKCAyMzgsIDMzOCwgNDM4XFwpIFxc KCAyNDgsIDM0OCwgNDQ4XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6NCwzOjQsNzo4 XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDQ6NSw4OlwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXChcXCggXFwoIDI0OCwgMzQ4XFwpIFxcKCAyNTgsIDM1OFxcKSBcXCkgXFwoXAorKwkJ IFxcKCAyNDksIDM0OVxcKSBcXCggMjU5LCAzNTlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFy M1woMjozLDQ6NSw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw0OjUsOjJcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNDEsIDM0MVxcKSBcXCggMjUxLCAzNTFcXCkg XFwpIFxcKFwKKysJCSBcXCggMjQyLCAzNDJcXCkgXFwoIDI1MiwgMzUyXFwpIFxcKSBcXCkiIFwK KysJCSJwcmludCBhcjNcKDI6Myw0OjUsOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgy OjMsODosNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjg3LCAzODdcXCkg XFwoIDI5NywgMzk3XFwpIFxcKSBcXChcCisrCQkgXFwoIDI4OCwgMzg4XFwpIFxcKCAyOTgsIDM5 OFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyOjMsODosNzo4XCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woMjozLDg6LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg Mjg4LCAzODhcXCkgXFwoIDI5OCwgMzk4XFwpIFxcKSBcXChcCisrCQkgXFwoIDI4OSwgMzg5XFwp IFxcKCAyOTksIDM5OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyOjMsODosODpcKSIK KytnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsODosOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIFxcKCAyODEsIDM4MVxcKSBcXCggMjkxLCAzOTFcXCkgXFwpIFxcKFwKKysJCSBcXCgg MjgyLCAzODJcXCkgXFwoIDI5MiwgMzkyXFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6 Myw4Oiw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw3OjhcKSIgXAorKwkJ IlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTcsIDMxN1xcKSBcXCggMjI3LCAzMjdcXCkgXFwp IFxcKFwKKysJCSBcXCggMjE4LCAzMThcXCkgXFwoIDIyOCwgMzI4XFwpIFxcKSBcXCkiIFwKKysJ CSJwcmludCBhcjNcKDI6Myw6Miw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsOjIs ODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMTgsIDMxOFxcKSBcXCggMjI4 LCAzMjhcXCkgXFwpIFxcKFwKKysJCSBcXCggMjE5LCAzMTlcXCkgXFwoIDIyOSwgMzI5XFwpIFxc KSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw6Miw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBh cjNcKDI6Myw6Miw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxMSwgMzEx XFwpIFxcKCAyMjEsIDMyMVxcKSBcXCkgXFwoXAorKwkJIFxcKCAyMTIsIDMxMlxcKSBcXCggMjIy LCAzMjJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDoyLDoyXCkiCisrCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woODosMzo0LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChc XCggXFwoIDgzNywgOTM3XFwpIFxcKCA4NDcsIDk0N1xcKSBcXCkgXFwoXAorKwkJIFxcKCA4Mzgs IDkzOFxcKSBcXCggODQ4LCA5NDhcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woODosMzo0 LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDQ6NSw4OlwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggXFwoIDg0OCwgOTQ4XFwpIFxcKCA4NTgsIDk1OFxcKSBcXCkgXFwoXAor KwkJIFxcKCA4NDksIDk0OVxcKSBcXCggODU5LCA5NTlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50 IGFyM1woODosNDo1LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosNDo1LDoyXCkiIFwK KysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQxLCA5NDFcXCkgXFwoIDg1MSwgOTUxXFwp IFxcKSBcXChcCisrCQkgXFwoIDg0MiwgOTQyXFwpIFxcKCA4NTIsIDk1MlxcKSBcXCkgXFwpIiBc CisrCQkicHJpbnQgYXIzXCg4Oiw0OjUsOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4 Oiw4Oiw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4ODcsIDk4N1xcKSBc XCggODk3LCA5OTdcXCkgXFwpIFxcKFwKKysJCSBcXCggODg4LCA5ODhcXCkgXFwoIDg5OCwgOTk4 XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDg6LDc6OFwpIgorK2dkYl90ZXN0ICJw cmludCBhcjNcKDg6LDg6LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODg4 LCA5ODhcXCkgXFwoIDg5OCwgOTk4XFwpIFxcKSBcXChcCisrCQkgXFwoIDg4OSwgOTg5XFwpIFxc KCA4OTksIDk5OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw4Oiw4OlwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjNcKDg6LDg6LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCBcXCggODgxLCA5ODFcXCkgXFwoIDg5MSwgOTkxXFwpIFxcKSBcXChcCisrCQkgXFwoIDg4Miwg OTgyXFwpIFxcKCA4OTIsIDk5MlxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw4Oiw6 MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDoyLDc6OFwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggXFwoIDgxNywgOTE3XFwpIFxcKCA4MjcsIDkyN1xcKSBcXCkgXFwoXAor KwkJIFxcKCA4MTgsIDkxOFxcKSBcXCggODI4LCA5MjhcXCkgXFwpIFxcKSIgXAorKwkJInByaW50 IGFyM1woODosOjIsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsODpcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTgsIDkxOFxcKSBcXCggODI4LCA5MjhcXCkg XFwpIFxcKFwKKysJCSBcXCggODE5LCA5MTlcXCkgXFwoIDgyOSwgOTI5XFwpIFxcKSBcXCkiIFwK KysJCSJwcmludCBhcjNcKDg6LDoyLDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIs OjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4MTEsIDkxMVxcKSBcXCggODIx LCA5MjFcXCkgXFwpIFxcKFwKKysJCSBcXCggODEyLCA5MTJcXCkgXFwoIDgyMiwgOTIyXFwpIFxc KSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDoyLDoyXCkiCisrCisrCisrZ2RiX3Rlc3QgInBy aW50IGFyM1woOjIsMzo0LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDEz NywgMjM3XFwpIFxcKCAxNDcsIDI0N1xcKSBcXCkgXFwoXAorKwkJIFxcKCAxMzgsIDIzOFxcKSBc XCggMTQ4LCAyNDhcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyMyBcKDoyLDM6NCw3OjhcKS4i CisrZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsMzo0LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCBcXCggMTM4LCAyMzhcXCkgXFwoIDE0OCwgMjQ4XFwpIFxcKSBcXChcCisrCQkgXFwo IDEzOSwgMjM5XFwpIFxcKCAxNDksIDI0OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6 MiwzOjQsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsOjJcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMzEsIDIzMVxcKSBcXCggMTQxLCAyNDFcXCkgXFwpIFxc KFwKKysJCSBcXCggMTMyLCAyMzJcXCkgXFwoIDE0MiwgMjQyXFwpIFxcKSBcXCkiIFwKKysJCSJw cmludCBhcjNcKDoyLDM6NCw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDg6LDc6 OFwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4NywgMjg3XFwpIFxcKFwKKysJCSAxOTcs IDI5N1xcKSBcXCkgXFwoIFxcKCAxODgsIDI4OFxcKSBcXCggMTk4LCAyOThcXCkgXFwpIFxcKSIg XAorKwkJInByaW50IGFyM1woOjIsODosNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woOjIs ODosODpcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODgsIDI4OFxcKSBcXCggMTk4LFwK KysJCSAyOThcXCkgXFwpIFxcKCBcXCggMTg5LCAyODlcXCkgXFwoIDE5OSwgMjk5XFwpIFxcKSBc XCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDg6LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1wo OjIsODosOjJcKSIgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxODEsIDI4MVxcKSBcXCggMTkx LFwKKysJCSAyOTFcXCkgXFwpIFxcKCBcXCggMTgyLCAyODJcXCkgXFwoIDE5MiwgMjkyXFwpIFxc KSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDg6LDoyXCkiCisrCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woOjIsOjIsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTE3LCAy MTdcXCkgXFwoIDEyNywgMjI3XFwpIFxcKSBcXChcCisrCQkgXFwoIDExOCwgMjE4XFwpIFxcKCAx MjgsIDIyOFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw6Miw3OjhcKSIKKytnZGJf dGVzdCAicHJpbnQgYXIzXCg6Miw6Miw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCgg XFwoIDExOCwgMjE4XFwpIFxcKCAxMjgsIDIyOFxcKSBcXCkgXFwoXAorKwkJIFxcKCAxMTksIDIx OVxcKSBcXCggMTI5LCAyMjlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsOjIsODpc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw6Miw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXChcXCggXFwoIDExMSwgMjExXFwpIFxcKCAxMjEsIDIyMVxcKSBcXCkgXFwoXAorKwkJIFxc KCAxMTIsIDIxMlxcKSBcXCggMTIyLCAyMjJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1wo OjIsOjIsOjJcKSIKKysKKysjVGVzdHMgZm9yIHN1YmFycmF5cyBvZiAzIGRpbWVuc2lvbmFsIGFy cmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZXMKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgz LDM6NCw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDMzNywgMzQ3XFwpIFxcKCAz MzgsIDM0OFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsMzo0LDc6OFwpIgorK2dkYl90ZXN0 ICJwcmludCBhcjNcKDMsNDo1LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNDgs IDM1OFxcKSBcXCggMzQ5LCAzNTlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgzLDQ6NSw4Olwp IgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAzNDEsIDM1MVxcKSBcXCggMzQyLCAzNTJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIz XCgzLDQ6NSw6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNDo1LDNcKSIgXAorKwkJIlxc JFxbMC05XF0rID0gXFwoMzQzLCAzNTNcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsNDo1LDNcKSIK KysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXChcXCggMjg3LCAyOTdcXCkgXFwoIDI4OCwgMjk4XFwpIFxcKSIgXAorKwkJInByaW50IGFy M1woMiw4Oiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDg6XCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAyODgsIDI5OFxcKSBcXCggMjg5LCAyOTlcXCkgXFwpIiBcCisr CQkicHJpbnQgYXIzXCgyLDg6LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMiw4Oiw6Mlwp IlwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyODEsIDI5MVxcKSBcXCggMjgyLCAyOTJcXCkg XFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDg6LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1wo Miw4OiwzXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDI4MywgMjkzXFwpIiBcCisrCQkicHJp bnQgYXIzXCgyLDg6LDNcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDoyLDc6OFwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjE3LCAyMjdcXCkgXFwoIDIxOCwgMjI4XFwpIFxc KSIgXAorKwkJInByaW50IGFyM1woMiw6Miw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgy LDoyLDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTgsIDIyOFxcKSBcXCggMjE5 LCAyMjlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDoyLDg6XCkiCisrZ2RiX3Rlc3QgInBy aW50IGFyM1woMiw6Miw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjExLCAyMjFc XCkgXFwoIDIxMiwgMjIyXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMiw6Miw6MlwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjNcKDIsOjIsM1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgyMTMs IDIyM1xcKSIgXAorKwkJInByaW50IGFyM1woMiw6MiwzXCkiCisrCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woMyw0LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzNDcsIDM0OFxcKSIgXAor KwkJInByaW50IGFyM1woMyw0LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNCw4Olwp IiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzNDgsIDM0OVxcKSIgXAorK2kJCSJwcmludCBhcjNc KDMsNCw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsNCw6MlwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXCgzNDEsIDM0MlxcKSIgXAorKwkJInByaW50IGFyM1woMyw0LDoyXCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woNSw2LDdcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gNTY3IiBcCisr CQkicHJpbnQgYXIzXCg1LDYsN1wpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDM6NCw2LDc6 OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY3LCA0NjdcXCkgXFwoIDM2OCwgNDY4 XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woMzo0LDYsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM2OCwgNDY4XFwp IFxcKCAzNjksIDQ2OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDM6NCw2LDg6XCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woMzo0LDYsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDM2MSwgNDYxXFwpIFxcKCAzNjIsIDQ2MlxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDM6NCw2 LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNVwpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXCgzNjUsIDQ2NVxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsNVwpIgorKworK2dk Yl90ZXN0ICJwcmludCBhcjNcKDg6LDYsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCA4NjcsIDk2N1xcKSBcXCggODY4LCA5NjhcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw2 LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsODpcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDg2OCwgOTY4XFwpIFxcKCA4NjksIDk2OVxcKSBcXCkiIFwKKysJCSJwcmlu dCBhcjNcKDg6LDYsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2LDoyXCkiIFwKKysJ CSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4NjEsIDk2MVxcKSBcXCggODYyLCA5NjJcXCkgXFwpIiBc CisrCQkicHJpbnQgYXIzXCg4Oiw2LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosNiw1 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDg2NSwgOTY1XFwpIiBcCisrCQkicHJpbnQgYXIz XCg4Oiw2LDVcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDc6OFwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMTY3LCAyNjdcXCkgXFwoIDE2OCwgMjY4XFwpIFxcKSIgXAor KwkJInByaW50IGFyM1woOjIsNiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2LDg6 XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjgsIDI2OFxcKSBcXCggMTY5LCAyNjlc XCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw2LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFy M1woOjIsNiw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTYxLCAyNjFcXCkgXFwo IDE2MiwgMjYyXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsNiw6MlwpIgorK2dkYl90ZXN0 ICJwcmludCBhcjNcKDoyLDYsNVwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgxNjUsIDI2NVxc KSIgXAorKwkJInByaW50IGFyM1woOjIsNiw1XCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1wo Mzo0LDU6Niw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNTQsIDQ1NFxcKSBcXCgg MzY0LCA0NjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCgzOjQsNTo2LDRcKSIKKytnZGJfdGVz dCAicHJpbnQgYXIzXCg4Oiw1OjYsNFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODU0 LCA5NTRcXCkgXFwoIDg2NCwgOTY0XFwpIFxcKSIgXAorKwkJInByaW50IGFyMlwoODosNTo2LDRc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw1OjYsNFwpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXChcXCggMTU0LCAyNTRcXCkgXFwoIDE2NCwgMjY0XFwpIFxcKSIgXAorKwkJInByaW50IGFy MlwoOjIsNTo2LDRcKSIKKysKKysjIFN0cmlkZSA+IDEKKytnZGJfdGVzdCAicHJpbnQgYXIxXCgy OjY6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgyLCA0LCA2XFwpIiBcCisrCQkicHJpbnQg YXIxXCgyOjY6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6NjoyLDM6NFwpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMjMsIDQzLCA2M1xcKSBcXCggMjQsIDQ0LCA2NFxcKSBcXCki IFwKKysJCSJwcmludCBhcjJcKDI6NjoyLDM6NFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6 NjoyLDNcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIgXAorKwkJInBy aW50IGFyMlwoMjo2OjIsM1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NjoyLDM6NToyLDQ6 NzozXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjM0LCA0MzQsIDYzNFxcKSBc XCggMjU0LCA0NTQsIDY1NFxcKVwKKysJCSBcXCkgXFwoIFxcKCAyMzcsIDQzNywgNjM3XFwpIFxc KCAyNTcsIDQ1NywgNjU3XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6NjoyLDM6NToy LDQ6NzozXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsNSw0Ojc6M1wpIiBcCisrCQki XFwkXFswLTlcXSsgPSBcXChcXCggMjU0LCA0NTQsIDY1NFxcKSBcXCggMjU3LCA0NTcsIDY1N1xc KVwKKysJCSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6NjoyLDUsNDo3OjNcKSIKKysKKysjIFN0 cmlkZSA8IDAKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6LTJcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoOCwgNiwgNCwgMlxcKSIgXAorKwkJInByaW50IGFyMVwoODoyOi0yXCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyMlwoODoyOi0yLDM6NFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChc XCggODMsIDYzLCA0MywgMjNcXCkgXFwoIDg0LCA2NCwgNDQsIDI0XFwpXAorKwkJIFxcKSIgXAor KwkJInByaW50IGFyMlwoODoyOi0yLDM6NFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDI6Njoy LDNcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMjMsIDQzLCA2M1xcKSIgXAorKwkJInByaW50 IGFyMlwoMjo2OjIsM1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw3OjM6LTQsNDo3OjNc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNzQsIDM3NFxcKSBcXCggMjM0LCAz MzRcXCkgXFwpIFxcKFwKKysJCSBcXCggMjc3LCAzNzdcXCkgXFwoIDIzNywgMzM3XFwpIFxcKSBc XCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw3OjM6LTQsNDo3OjNcKSIKKytnZGJfdGVzdCAicHJp bnQgYXIzXCgyOjY6Miw1LDc6NDotM1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMjU3 LCA0NTcsIDY1N1xcKSBcXCggMjU0LCA0NTQsIDY1NFxcKVwKKysJCSBcXCkiIFwKKysJCSJwcmlu dCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiCisrCisrIyBUZXN0cyB3aXRoIG5lZ2F0aXZlIGFuZCBt aXhlZCBpbmRpY2VzCisrZ2RiX3Rlc3QgInAgYXI0XCgyOjQsIC0yOjEsIC0xNTotMTRcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyNjEsIDM2MSwgNDYxXFwpIFxcKCAyNzEsIDM3 MSwgNDcxXFwpXAorKwkJIFxcKCAyODEsIDM4MSwgNDgxXFwpIFxcKCAyOTEsIDM5MSwgNDkxXFwp IFxcKSBcXCggXFwoIDI2MixcCisrCQkgMzYyLCA0NjJcXCkgXFwoIDI3MiwgMzcyLCA0NzJcXCkg XFwoIDI4MiwgMzgyLCA0ODJcXCkgXFwoIDI5MixcCisrCQkgMzkyLCA0OTJcXCkgXFwpIFxcKSIg XAorKwkJInByaW50IGFyNCgyOjQsIC0yOjEsIC0xNTotMTQpIgorKworK2dkYl90ZXN0ICJwIGFy NFwoNywtNjoyOjMsLTdcKSIgXAorKyAgICAgICAgICAgICAgICAiXFwkXFswLTlcXSsgPSBcXCg3 MjksIDc1OSwgNzg5XFwpIiBcCisrICAgICAgICAgICAgICAgICJwcmludCBhcjQoNywtNjoyOjMs LTcpIgorKworK2dkYl90ZXN0ICJwIGFyNFwoOToyOi0yLCAtNjoyOjMsIC02Oi0xNTotM1wpIiBc CisrICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggOTMwLCA3MzAsIDUz MCwgMzMwXFwpIFxcKCA5NjAsIDc2MCxcCisrCQkgNTYwLCAzNjBcXCkgXFwoIDk5MCwgNzkwLCA1 OTAsIDM5MFxcKSBcXCkgXFwoIFxcKCA5MjcsIDcyNyxcCisrCQkgNTI3LCAzMjdcXCkgXFwoIDk1 NywgNzU3LCA1NTcsIDM1N1xcKSBcXCggOTg3LCA3ODcsIDU4NyxcCisrCQkgMzg3XFwpIFxcKSBc XCggXFwoIDkyNCwgNzI0LCA1MjQsIDMyNFxcKSBcXCggOTU0LCA3NTQsIDU1NCxcCisrCQkgMzU0 XFwpIFxcKCA5ODQsIDc4NCwgNTg0LCAzODRcXCkgXFwpIFxcKCBcXCggOTIxLCA3MjEsIDUyMSxc CisrCQkgMzIxXFwpIFxcKCA5NTEsIDc1MSwgNTUxLCAzNTFcXCkgXFwoIDk4MSwgNzgxLCA1ODEs IDM4MVxcKSBcXClcCisrCQkgXFwpIiBcCisrICAgICAgICAgICAgICAgICJwcmludCBhcjQoOToy Oi0yLCAtNjoyOjMsIC02Oi0xNTotMykiCisrCisrZ2RiX3Rlc3QgInAgYXI0XCg6LDosOlwpIiBc CisrICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTExLCAyMTEsIDMx MSwgNDExLCA1MTEsIDYxMSwgNzExLFwKKysJCSA4MTEsIC4qIiBcCisrICAgICAgICAgICAgICAg ICJwcmludCBhcjQoOiw6LDopIgorKworKyMgUHJvdm9rZSBlcnJvciBtZXNzYWdlcyBmb3IgYmFk IHVzZXIgaW5wdXQKKytnZGJfdGVzdCAicHJpbnQgYXIxXCgwOjRcKSIgXAorKwkJInByb3ZpZGVk IGJvdW5kXFwoc1xcKSBvdXRzaWRlIGFycmF5IGJvdW5kXFwoc1xcKSIgXAorKwkJInByaW50IGFy MVwoMDo0XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoODoxMlwpIiBcCisrCQkicHJvdmlkZWQg Ym91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCisrCQkicHJpbnQgYXIx XCg4OjEyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoODoyOlwpIiBcCisrCQkiQSBzeW50YXgg ZXJyb3IgaW4gZXhwcmVzc2lvbiwgbmVhciBgXFwpJy4iIFwKKysJCSJwcmludCBhcjFcKDg6Mjpc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6MlwpIiBcCisrCQkiV3JvbmcgdmFsdWUgcHJv dmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAorKwkJInByaW50IGFyMVwoODoyOjJc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCgyOjg6LTJcKSIgXAorKwkJIldyb25nIHZhbHVlIHBy b3ZpZGVkIGZvciBzdHJpZGUgYW5kIGJvdW5kYXJpZXMiIFwKKysJCSJwcmludCBhcjFcKDI6ODot MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6NzowXCkiIFwKKysJCSJTdHJpZGUgbXVzdCBu b3QgYmUgMCIgXAorKwkJInByaW50IGFyMVwoMjo3OjBcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIx XCgzOjdcKSA9IDQyIiBcCisrCQkiSW52YWxpZCBjYXN0LiIgXAorKwkJIkFzc2lnbm1lbnQgb2Yg dmFsdWUgdG8gc3ViYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdGF0aWMtYXJyYXlzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFy cmF5cy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mMjJmY2JlCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJh eXMuZjkwCitAQCAtMCwwICsxLDU1IEBACisrISBDb3B5cmlnaHQgMjAxNSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyshCisrISBDb250cmlidXRlZCBieSBJbnRlbCBDb3JwLiA8Y2hy aXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrCisrc3Vicm91dGluZSBzdWIKKysgIGludGVnZXIsIGRpbWVuc2lvbig5KSA6OiBh cjEKKysgIGludGVnZXIsIGRpbWVuc2lvbig5LDkpIDo6IGFyMgorKyAgaW50ZWdlciwgZGltZW5z aW9uKDksOSw5KSA6OiBhcjMKKysgIGludGVnZXIsIGRpbWVuc2lvbigxMCwtNzozLCAtMTU6LTUp IDo6IGFyNAorKyAgaW50ZWdlciA6OiBpLGosaworKworKyAgYXIxID0gMQorKyAgYXIyID0gMQor KyAgYXIzID0gMQorKyAgYXI0ID0gNAorKworKyAgISBSZXN1bHRpbmcgYXJyYXkgYXIzIGxvb2tz IGxpa2UgKCgoIDExMSwgMTEyLCAxMTMsIDExNCwuLi4pKSkKKysgIGRvIGkgPSAxLCA5LCAxCisr ICAgIGFyMShpKSA9IGkKKysgICAgZG8gaiA9IDEsIDksIDEKKysgICAgICBhcjIoaSxqKSA9IGkq MTAgKyBqCisrICAgICAgZG8gayA9IDEsIDksIDEKKysgICAgICAgIGFyMyhpLGosaykgPSBpKjEw MCArIGoqMTAgKyBrCisrICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIGRvCisrCisr ICBkbyBpID0gMSwgMTAsIDEKKysgICAgZG8gaiA9IC03LCAzLCAxCisrICAgICAgZG8gayA9IC0x NSwgLTUsIDEKKysgICAgICAgIGFyNChpLGosaykgPSBpKjEwMCArIChqKzgpKjEwICsgKGsrMTYp CisrICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIGRvCisrCisrICBhcjEoMSkgPSAx MSAgIUJQMQorKyAgcmV0dXJuCisrZW5kCisrCisrcHJvZ3JhbSB0ZXN0cHJvZworKyAgY2FsbCBz dWIKKytlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlw ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKK2luZGV4IDE3 NTY2MWYuLjU0NGQ0MGEgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1wdHlwZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4 cAorQEAgLTk4LDMgKzk4LDcgQEAgZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gPG5vdCBh bGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgYWxsb2NhdGVkIgorIGdkYl90ZXN0ICJwdHlwZSB2 bGEyKDUsIDQ1LCAyMCkiIFwKKyAgICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Ig bm90IGFsbG9jYXRlZFxcXCkiIFwKKyAgICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9j YXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1uZWct Ym91bmRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1uZWctYm91bmRzIgor K2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9ICRyZWFsIFxcKC0yOjEsLTU6NCwtMzotMVxc KSIgInB0eXBlIHZsYTEgbmVnYXRpdmUgYm91bmRzIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zaXplb2YuZXhwCitpbmRleCA4MDEwYzBhLi5mODI1OGExIDEwMDY0NAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAorQEAgLTQ0LDMgKzQ0LDcgQEAgZ2RiX3Rlc3Qg InByaW50IHNpemVvZihwdmxhKSIgIiA9IDAiICJwcmludCBzaXplb2Ygbm9uLWFzc29jaWF0ZWQg cHZsYSIKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1hc3NvY2lh dGVkIl0KKyBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgorIGdk Yl90ZXN0ICJwcmludCBzaXplb2YocHZsYSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFzc29j aWF0ZWQgcHZsYSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh MS1uZWctYm91bmRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1uZWctYm91 bmRzIgorK2dkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSkiICIgPSA0ODAiICJwcmludCBzaXpl b2YgdmxhMSBuZWdhdGl2ZSBib3VuZHMiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0 cmlkZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kY2YxNWU1Cist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUu ZXhwCitAQCAtMCwwICsxLDQ0IEBACisrIyBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3Rh bmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVp ZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVu IHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAg IGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJy ZS1yZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicmUtcmV2 ZXJzZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAyLCAzLCA0 LCA1LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKKysgICJwcmludCByZS1yZXZlcnNlLWVsZW1lbnRz IgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IHJlLXJldmVy c2UtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAxMCIgInByaW50IGxh c3QgcmUtcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJvZGQtZWxlbWVudHMiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvZGQt ZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwgMywgNSwgNywgOVxc XCkiICJwcmludCBvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMSkiICIgPSAx IiAicHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoNSkiICIg PSA5IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJzaW5nbGUtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCg1XFxc KSIgInByaW50IHNpbmdsZS1lbGVtZW50IgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0g NSIgInByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjhkMjQy NTIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0 cmlkZS5mOTAKK0BAIC0wLDAgKzEsMjkgQEAKKyshIENvcHlyaWdodCAyMDE2IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQor KyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisr CisrcHJvZ3JhbSB2bGFfc3RyaWRlCisrICBpbnRlZ2VyLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6 IHZsYSAoOikKKysgIGludGVnZXIsIHBvaW50ZXIgOjogcHZsYSAoOikKKysKKysgIGFsbG9jYXRl KHZsYSgxMCkpCisrICB2bGEgPSAoLyAoSSwgSSA9IDEsMTApIC8pCisrCisrICBwdmxhID0+IHZs YSgxMDoxOi0xKQorKyAgcHZsYSA9PiBwdmxhKDEwOjE6LTEpCisrICBwdmxhID0+IHZsYSgxOjEw OjIpICAgISByZS1yZXZlcnNlLWVsZW1lbnRzCisrICBwdmxhID0+IHZsYSg1OjQ6LTIpICAgISBv ZGQtZWxlbWVudHMKKysKKysgIHB2bGEgPT4gbnVsbCgpICAgICAgICAhIHNpbmdsZS1lbGVtZW50 CisrZW5kIHByb2dyYW0gdmxhX3N0cmlkZQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MAoraW5k ZXggYzc2ZDI0Yy4uZWYzMDdiNyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLmY5MAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkwCitAQCAt NTQsNCArNTQsMTQgQEAgcHJvZ3JhbSB2bGEKKyAKKyAgIGFsbG9jYXRlICh2bGEzICgyLDIpKSAg ICAgICAgICAgICAgICEgdmxhMi1kZWFsbG9jYXRlZAorICAgdmxhMyg6LDopID0gMTMKKysKKysg IGFsbG9jYXRlICh2bGExICgtMjoxLCAtNTo0LCAtMzotMSkpCisrICBsID0gYWxsb2NhdGVkKHZs YTEpCisrCisrICB2bGExKDosIDosIDopID0gMQorKyAgdmxhMSgtMiwgLTMsIC0xKSA9IC0yMzEK KysKKysgIGRlYWxsb2NhdGUgKHZsYTEpICAgICAgICAgICAgICAgICAgICEgdmxhMS1uZWctYm91 bmRzCisrICBsID0gYWxsb2NhdGVkKHZsYTEpCisrCisgZW5kIHByb2dyYW0gdmxhCitkaWZmIC0t Z2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYworaW5kZXggZGU2ZmNmZC4uOTc1 MzUwNiAxMDA2NDQKKy0tLSBhL2dkYi92YWxhcml0aC5jCisrKysgYi9nZGIvdmFsYXJpdGguYwor QEAgLTE5MywxMSArMTkzLDE3IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZh bHVlICphcnJheSwgTE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCisgICBzdHJ1Y3QgdHlw ZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisgICBz dHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChh cnJheV90eXBlKSk7CisgICBVTE9OR0VTVCBlbHRfc2l6ZSA9IHR5cGVfbGVuZ3RoX3VuaXRzIChl bHRfdHlwZSk7CistICBVTE9OR0VTVCBlbHRfb2ZmcyA9IGVsdF9zaXplICogKGluZGV4IC0gbG93 ZXJib3VuZCk7CisrICBMT05HRVNUIGVsdF9vZmZzID0gaW5kZXggLSBsb3dlcmJvdW5kOworKyAg TE9OR0VTVCBlbHRfc3RyaWRlID0gVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChh cnJheV90eXBlKSk7CisgICBzdHJ1Y3QgdmFsdWUgKnY7CisgCisrICBpZiAoZWx0X3N0cmlkZSAh PSAwKQorKyAgICBlbHRfb2ZmcyAqPSBlbHRfc3RyaWRlOworKyAgZWxzZQorKyAgICBlbHRfb2Zm cyAqPSBlbHRfc2l6ZTsKKysKKyAgIGlmIChpbmRleCA8IGxvd2VyYm91bmQgfHwgKCFUWVBFX0FS UkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKKy0JCQkgICAgICYmIGVs dF9vZmZzID49IHR5cGVfbGVuZ3RoX3VuaXRzIChhcnJheV90eXBlKSkpCisrCQkJICAgICAmJiBh YnMgKGVsdF9vZmZzKSA+PSB0eXBlX2xlbmd0aF91bml0cyAoYXJyYXlfdHlwZSkpKQorICAgICB7 CisgICAgICAgaWYgKHR5cGVfbm90X2Fzc29jaWF0ZWQgKGFycmF5X3R5cGUpKQorICAgICAgICAg ZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgKHZlY3RvciBub3QgYXNzb2NpYXRlZCki KSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCitpbmRleCA0MDM5 MmU4Li4yNGZmYWNiIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbG9wcy5jCisrKysgYi9nZGIvdmFsb3Bz LmMKK0BAIC0zNzc1LDU2ICszNzc1LDE5MSBAQCB2YWx1ZV9vZl90aGlzX3NpbGVudCAoY29uc3Qg c3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmcpCisgc3RydWN0IHZhbHVlICoKKyB2YWx1ZV9zbGlj ZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQorIHsKKysg IC8qIFBhc3MgdW5hbHRlcmVkIGFyZ3VtZW50cyB0byBWQUxVRV9TTElDRV8xLCBwbHVzIGEgZGVm YXVsdCBzdHJpZGUKKysgICAgIHZhbHVlIG9mICcxJywgd2hpY2ggcmV0dXJucyBldmVyeSBlbGVt ZW50IGJldHdlZW4gTE9XQk9VTkQgYW5kCisrICAgICAoTE9XQk9VTkQgKyBMRU5HVEgpLiAgV2Ug YWxzbyBwcm92aWRlIGEgZGVmYXVsdCBDQUxMX0NPVU5UIG9mICcxJworKyAgICAgYXMgd2UgYXJl IG9ubHkgY29uc2lkZXJpbmcgdGhlIGhpZ2hlc3QgZGltZW5zaW9uLCBvciB3ZSBhcmUKKysgICAg IHdvcmtpbmcgb24gYSBvbmUgZGltZW5zaW9uYWwgYXJyYXkuICBTbyB3ZSBjYWxsIFZBTFVFX1NM SUNFXzEKKysgICAgIGV4YWN0bHkgb25jZS4gICovCisrICByZXR1cm4gdmFsdWVfc2xpY2VfMSAo YXJyYXksIGxvd2JvdW5kLCBsZW5ndGgsIDEsIDEpOworK30KKysKKysvKiBWQUxVRV9TTElDRV8x IGlzIGNhbGxlZCBmb3IgZWFjaCBhcnJheSBkaW1lbnNpb24gdG8gY2FsY3VsYXRlIHRoZSBudW1i ZXIKKysgICBvZiBlbGVtZW50cyBhcyBkZWZpbmVkIGJ5IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lv bi4KKysgICBDQUxMX0NPVU5UIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBjYWxsaW5n IHRoZSBmdW5jdGlvbiBvbmNlLCBlLmcuCisrICAgd2UgYXJlIHdvcmtpbmcgb24gdGhlIGN1cnJl bnQgZGltZW5zaW9uIG9mIEFSUkFZLCBvciBpZiB3ZSBhcmUgY2FsbGluZworKyAgIHRoZSBmdW5j dGlvbiByZXBlYXRlZGx5LiAgSW4gdGhlIGxhdGVyIGNhc2Ugd2UgbmVlZCB0byB0YWtlIGVsZW1l bnRzCisrICAgZnJvbSB0aGUgVEFSR0VUX1RZUEUgb2YgQVJSQVkuCisrICAgV2l0aCBhIENBTExf Q09VTlQgZ3JlYXRlciB0aGFuIDEgd2UgY2FsY3VsYXRlIHRoZSBvZmZzZXRzIGZvciBldmVyeSBl bGVtZW50CisrICAgdGhhdCBzaG91bGQgYmUgaW4gdGhlIHJlc3VsdCBhcnJheS4gIFRoZW4gd2Ug ZmV0Y2ggdGhlIGNvbnRlbnRzIGFuZCB0aGVuCisrICAgY29weSB0aGVtIGludG8gdGhlIHJlc3Vs dCBhcnJheS4gIFRoZSByZXN1bHQgYXJyYXkgd2lsbCBoYXZlIG9uZSBkaW1lbnNpb24KKysgICBs ZXNzIHRoYW4gdGhlIGlucHV0IGFycmF5LCBzbyBsYXRlciBvbiB3ZSBuZWVkIHRvIHJlY3JlYXRl IHRoZSBpbmRpY2VzIGFuZAorKyAgIHJhbmdlcyBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbi4gICov CisrCisrc3RydWN0IHZhbHVlICoKKyt2YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKmFycmF5 LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgsCisrCSAgICAgICBpbnQgc3RyaWRlX2xlbmd0aCwg aW50IGNhbGxfY291bnQpCisreworICAgc3RydWN0IHR5cGUgKnNsaWNlX3JhbmdlX3R5cGUsICpz bGljZV90eXBlLCAqcmFuZ2VfdHlwZTsKKy0gIExPTkdFU1QgbG93ZXJib3VuZCwgdXBwZXJib3Vu ZDsKKy0gIHN0cnVjdCB2YWx1ZSAqc2xpY2U7CistICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZTsK KysgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJyYXkpKTsKKysgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysgIHVuc2lnbmVkIGludCBlbHRfc2l6ZSwgZWx0 X29mZnM7CisrICBMT05HRVNUIGFyeV9oaWdoX2JvdW5kLCBhcnlfbG93X2JvdW5kOworKyAgc3Ry dWN0IHZhbHVlICp2OworKyAgaW50IHNsaWNlX3JhbmdlX3NpemUsIGkgPSAwLCByb3dfY291bnQg PSAxLCBlbGVtX2NvdW50ID0gMTsKKyAKKy0gIGFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2 YWx1ZV90eXBlIChhcnJheSkpOworKyAgLyogQ2hlY2sgZm9yIGxlZ2FjeSBjb2RlIGlmIHdlIGFy ZSBhY3R1YWxseSBkZWFsaW5nIHdpdGggYW4gYXJyYXkgb3IKKysgICAgIHN0cmluZy4gICovCisg ICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkKKyAgICAgICAm JiBUWVBFX0NPREUgKGFycmF5X3R5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCisgICAgIGVycm9y IChfKCJjYW5ub3QgdGFrZSBzbGljZSBvZiBub24tYXJyYXkiKSk7CisgCistICByYW5nZV90eXBl ID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKy0gIGlmIChnZXRfZGlzY3JldGVfYm91 bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpIDwgMCkKKy0gICAgZXJy b3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJpdHN0cmluZyIpKTsKKysgIGFyeV9sb3df Ym91bmQgPSBUWVBFX0xPV19CT1VORCAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSk7Cisr ICBhcnlfaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAoVFlQRV9JTkRFWF9UWVBFIChhcnJh eV90eXBlKSk7CisrCisrICAvKiBXaGVuIHdlIGFyZSB3b3JraW5nIG9uIGEgbXVsdGktZGltZW5z aW9uYWwgYXJyYXksIHdlIG5lZWQgdG8gZ2V0IHRoZQorKyAgICAgYXR0cmlidXRlcyBvZiB0aGUg dW5kZXJseWluZyB0eXBlLiAgKi8KKysgIGlmIChjYWxsX2NvdW50ID4gMSkKKysgICAgeworKyAg ICAgIGFyeV9sb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAoVFlQRV9JTkRFWF9UWVBFIChlbHRf dHlwZSkpOworKyAgICAgIGFyeV9oaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JPVU5EIChUWVBFX0lO REVYX1RZUEUgKGVsdF90eXBlKSk7CisrICAgICAgZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChU WVBFX1RBUkdFVF9UWVBFIChlbHRfdHlwZSkpOworKyAgICAgIHJvd19jb3VudCA9IFRZUEVfTEVO R1RIIChhcnJheV90eXBlKQorKwkJICAgIC8gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUg KGFycmF5X3R5cGUpKTsKKysgICAgfQorKworKyAgLyogV2l0aCBhIHN0cmlkZSBvZiAnMScsIHRo ZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHJlc3VsdCByb3cgaXMgZXF1YWwgdG8KKysgICAgIHRo ZSBMRU5HVEggb2YgdGhlIHN1YmFycmF5LiAgV2l0aCBub24tZGVmYXVsdCBzdHJpZGUgdmFsdWVz LCB3ZSBza2lwCisrICAgICBlbGVtZW50cywgYnV0IGhhdmUgdG8gYWRkIHRoZSBzdGFydCBlbGVt ZW50IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKysgICAgIGVsZW1lbnRzIHBlciByb3cuICAqLwor KyAgaWYgKHN0cmlkZV9sZW5ndGggPT0gMSkKKysgICAgZWxlbV9jb3VudCA9IGxlbmd0aDsKKysg IGVsc2UKKysgICAgZWxlbV9jb3VudCA9ICgobGVuZ3RoIC0gMSkgLyBzdHJpZGVfbGVuZ3RoKSAr IDE7CisrCisrICBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7CisrICBlbHRfb2Zm cyA9IGxvd2JvdW5kIC0gYXJ5X2xvd19ib3VuZDsKKyAKKy0gIGlmIChsb3dib3VuZCA8IGxvd2Vy Ym91bmQgfHwgbGVuZ3RoIDwgMAorLSAgICAgIHx8IGxvd2JvdW5kICsgbGVuZ3RoIC0gMSA+IHVw cGVyYm91bmQpCistICAgIGVycm9yIChfKCJzbGljZSBvdXQgb2YgcmFuZ2UiKSk7CisrICBlbHRf b2ZmcyAqPSBlbHRfc2l6ZTsKKysKKysgIC8qIENoZWNrIGZvciB2YWxpZCB1c2VyIGlucHV0LiAg SW4gY2FzZSBvZiBGb3J0cmFuIHRoaXMgd2FzIGFscmVhZHkgZG9uZQorKyAgICAgaW4gdGhlIGNh bGxpbmcgZnVuY3Rpb24uICAqLworKyAgaWYgKGNhbGxfY291bnQgPT0gMQorKwkmJiAoIVRZUEVf QVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQorKwkgICAgICAmJiBl bHRfb2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQorKyAgICBlcnJvciAoXygibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKKysKKysgIC8qIENBTExfQ09VTlQgaXMgMSB3aGVuIHdl IGFyZSBkZWFsaW5nIGVpdGhlciB3aXRoIHRoZSBoaWdoZXN0IGRpbWVuc2lvbgorKyAgICAgb2Yg dGhlIGFycmF5LCBvciBhIG9uZSBkaW1lbnNpb25hbCBhcnJheS4gIFNldCBSQU5HRV9UWVBFIGFj Y29yZGluZ2x5LgorKyAgICAgSW4gYm90aCBjYXNlcyB3ZSBjYWxjdWxhdGUgaG93IG1hbnkgcm93 cy9lbGVtZW50cyB3aWxsIGJlIGluIHRoZSBvdXRwdXQKKysgICAgIGFycmF5IGJ5IHNldHRpbmcg c2xpY2VfcmFuZ2Vfc2l6ZS4gICovCisrICBpZiAoY2FsbF9jb3VudCA9PSAxKQorKyAgICB7Cisr ICAgICAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSk7CisrICAgICAg c2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91bmQgKyBlbGVtX2NvdW50IC0gMTsKKysKKysg ICAgICAvKiBDaGVjayBpZiB0aGUgYXJyYXkgYm91bmRzIGFyZSB2YWxpZC4gICovCisrICAgICAg aWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZhcnlfbG93X2JvdW5kLCAmYXJ5 X2hpZ2hfYm91bmQpIDwgMCkKKysJZXJyb3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJp dHN0cmluZyIpKTsKKysgICAgfQorKyAgLyogV2hlbiBDQUxMX0NPVU5UIGlzIGdyZWF0ZXIgdGhh biAxLCB3ZSBhcmUgZGVhbGluZyB3aXRoIGFuIGFycmF5IG9mIGFycmF5cy4KKysgICAgIFNvIHdl IG5lZWQgdG8gZ2V0IHRoZSB0eXBlIGJlbG93IHRoZSBjdXJyZW50IG9uZSBhbmQgc2V0IHRoZSBS QU5HRV9UWVBFCisrICAgICBhY2NvcmRpbmdseS4gICovCisrICBlbHNlCisrICAgIHsKKysgICAg ICByYW5nZV90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90 eXBlKSk7CisrICAgICAgc2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91bmQgKyAocm93X2Nv dW50ICogZWxlbV9jb3VudCkgLSAxOworKyAgICAgIGFyeV9sb3dfYm91bmQgPSBUWVBFX0xPV19C T1VORCAocmFuZ2VfdHlwZSk7CisrICAgIH0KKyAKKyAgIC8qIEZJWE1FLXR5cGUtYWxsb2NhdGlv bjogbmVlZCBhIHdheSB0byBmcmVlIHRoaXMgdHlwZSB3aGVuIHdlIGFyZQorLSAgICAgZG9uZSB3 aXRoIGl0LiAgKi8KKy0gIHNsaWNlX3JhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5 cGUgKChzdHJ1Y3QgdHlwZSAqKSBOVUxMLAorLQkJCQkJICAgICAgIFRZUEVfVEFSR0VUX1RZUEUg KHJhbmdlX3R5cGUpLAorLQkJCQkJICAgICAgIGxvd2JvdW5kLAorLQkJCQkJICAgICAgIGxvd2Jv dW5kICsgbGVuZ3RoIC0gMSk7CisrICAgICAgZG9uZSB3aXRoIGl0LiAgKi8KKyAKKysgIHNsaWNl X3JhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKE5VTEwsIFRZUEVfVEFSR0VU X1RZUEUgKHJhbmdlX3R5cGUpLAorKwkJCQkJICAgICAgIGFyeV9sb3dfYm91bmQsIHNsaWNlX3Jh bmdlX3NpemUpOworICAgeworLSAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9U QVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CistICAgIExPTkdFU1Qgb2Zmc2V0CistICAgICAgPSAo bG93Ym91bmQgLSBsb3dlcmJvdW5kKSAqIFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmIChlbGVt ZW50X3R5cGUpKTsKKysgICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZTsKKysKKysgICAgLyog V2hlbiBib3RoIENBTExfQ09VTlQgYW5kIFNUUklERV9MRU5HVEggZXF1YWwgMSwgd2UgY2FuIHVz ZSB0aGUgbGVnYWN5CisrICAgICAgIGNvZGUgZm9yIHN1YmFycmF5cy4gICovCisrICAgIGlmIChj YWxsX2NvdW50ID09IDEgJiYgc3RyaWRlX2xlbmd0aCA9PSAxKQorKyAgICAgIHsKKysJZWxlbWVu dF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CisrCisrCXNsaWNlX3R5cGUg PSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxlbWVudF90eXBlLCBzbGljZV9yYW5nZV90eXBl KTsKKyAKKy0gICAgc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlICgoc3RydWN0IHR5cGUg KikgTlVMTCwKKy0JCQkJICAgIGVsZW1lbnRfdHlwZSwKKy0JCQkJICAgIHNsaWNlX3JhbmdlX3R5 cGUpOworLSAgICBUWVBFX0NPREUgKHNsaWNlX3R5cGUpID0gVFlQRV9DT0RFIChhcnJheV90eXBl KTsKKysJVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAoYXJyYXlfdHlwZSk7Cisg CistICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6 eSAoYXJyYXkpKQorLSAgICAgIHNsaWNlID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoc2xpY2VfdHlw ZSk7CisrCWlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6 eSAoYXJyYXkpKQorKwkgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5IChzbGljZV90eXBlKTsKKysJ ZWxzZQorKwkgIHsKKysJICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAoc2xpY2VfdHlwZSk7CisrCSAg ICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAorKwkJCQkgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2 KSwKKysJCQkJIGFycmF5LAorKwkJCQkgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcnJheSkgKyBl bHRfb2ZmcywKKysJCQkJIGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGxlbmd0aCkpOworKwkg IH0KKysKKysgICAgICB9CisrICAgIC8qIFdpdGggYSBDQUxMX0NPVU5UIG9yIFNUUklERV9MRU5H VEggYXJlIGdyZWF0ZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nCisrICAgICAgIG9uIGEgcmFuZ2Ug b2YgcmFuZ2VzLiAgU28gd2UgY29weSB0aGUgcmVsZXZhbnQgZWxlbWVudHMgaW50byB0aGUKKysg ICAgICAgbmV3IGFycmF5IHdlIHJldHVybi4gICovCisgICAgIGVsc2UKKyAgICAgICB7CistCXNs aWNlID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOworLQl2YWx1ZV9jb250ZW50c19jb3B5 IChzbGljZSwgMCwgYXJyYXksIG9mZnNldCwKKy0JCQkgICAgIHR5cGVfbGVuZ3RoX3VuaXRzIChz bGljZV90eXBlKSk7CisrCWludCBqLCBvZmZzX3N0b3JlID0gZWx0X29mZnM7CisrCUxPTkdFU1Qg ZHN0X29mZnNldCA9IDA7CisrCUxPTkdFU1Qgc3JjX3Jvd19sZW5ndGggPSBUWVBFX0xFTkdUSCAo VFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKworKwlpZiAoY2FsbF9jb3VudCA9PSAx KQorKwkgIHsKKysJICAgIC8qIFdoZW4gQ0FMTF9DT1VOVCBpcyBlcXVhbCB0byAxIHdlIGFyZSB3 b3JraW5nIG9uIHRoZSBjdXJyZW50IHJhbmdlCisrCSAgICAgICBhbmQgdXNlIHRoZXNlIGVsZW1l bnRzIGRpcmVjdGx5LiAgKi8KKysJICAgIGVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KGFycmF5X3R5cGUpOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIC8qIFdvcmtpbmcgb24g YW4gYXJyYXkgb2YgYXJyYXlzLCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaXMgdGhlIHR5cGUK KysJICAgICAgIG9mIHRoZSBzdWJhcnJheXMnIHR5cGUuICAqLworKwkgICAgZWxlbWVudF90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKwkg IH0KKysKKysJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCBlbGVtZW50X3R5 cGUsIHNsaWNlX3JhbmdlX3R5cGUpOworKworKwkgLyogSWYgd2UgaGF2ZSBhIG9uZSBkaW1lbnNp b25hbCBhcnJheSwgd2UgY29weSBpdHMgVFlQRV9DT0RFLiAgRm9yIGEKKysJICAgIG11bHRpIGRp bWVuc2lvbmFsIGFycmF5IHdlIGNvcHkgdGhlIGVtYmVkZGVkIHR5cGUncyBUWVBFX0NPREUuICAq LworKwlpZiAoY2FsbF9jb3VudCA9PSAxKQorKwkgIFRZUEVfQ09ERSAoc2xpY2VfdHlwZSkgPSBU WVBFX0NPREUgKGFycmF5X3R5cGUpOworKwllbHNlCisrCSAgVFlQRV9DT0RFIChzbGljZV90eXBl KSA9IFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKworKwl2ID0g YWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUpOworKworKwkvKiBJdGVyYXRlIHRocm91Z2ggdGhl IHJvd3Mgb2YgdGhlIG91dGVyIGFycmF5IGFuZCBzZXQgdGhlIG5ldyBvZmZzZXQKKysJICAgZm9y IGVhY2ggcm93LiAgKi8KKysJZm9yIChpID0gMDsgaSA8IHJvd19jb3VudDsgaSsrKQorKwkgIHsK KysJICAgIGVsdF9vZmZzID0gb2Zmc19zdG9yZSArIGkgKiBzcmNfcm93X2xlbmd0aDsKKysKKysJ ICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgaW4gZWFjaCByb3cgdG8gY29weSBv bmx5IHRob3NlLiAgKi8KKysJICAgIGZvciAoaiA9IDE7IGogPD0gZWxlbV9jb3VudDsgaisrKQor KwkgICAgICB7CisrCQkvKiBGZXRjaGVzIHRoZSBjb250ZW50cyBvZiBBUlJBWSBhbmQgY29waWVz IHRoZW0gaW50byBWLiAgKi8KKysJCXZhbHVlX2NvbnRlbnRzX2NvcHkgKHYsIGRzdF9vZmZzZXQs IGFycmF5LCBlbHRfb2ZmcywgZWx0X3NpemUpOworKwkJZWx0X29mZnMgKz0gZWx0X3NpemUgKiBz dHJpZGVfbGVuZ3RoOworKwkJZHN0X29mZnNldCArPSBlbHRfc2l6ZTsKKysJICAgICAgfQorKwkg IH0KKyAgICAgICB9CisgCistICAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHNsaWNl LCBhcnJheSk7CistICAgIFZBTFVFX0ZSQU1FX0lEIChzbGljZSkgPSBWQUxVRV9GUkFNRV9JRCAo YXJyYXkpOworLSAgICBzZXRfdmFsdWVfb2Zmc2V0IChzbGljZSwgdmFsdWVfb2Zmc2V0IChhcnJh eSkgKyBvZmZzZXQpOworKyAgICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uICh2LCBhcnJh eSk7CisrICAgIFZBTFVFX1JFR05VTSAodikgPSBWQUxVRV9SRUdOVU0gKGFycmF5KTsKKysgICAg VkFMVUVfRlJBTUVfSUQgKHYpID0gVkFMVUVfRlJBTUVfSUQgKGFycmF5KTsKKysgICAgc2V0X3Zh bHVlX29mZnNldCAodiwgdmFsdWVfb2Zmc2V0IChhcnJheSkgKyBlbHRfb2Zmcyk7CisgICB9Cisg CistICByZXR1cm4gc2xpY2U7CisrICByZXR1cm4gdjsKKyB9CisgCisgLyogQ3JlYXRlIGEgdmFs dWUgZm9yIGEgRk9SVFJBTiBjb21wbGV4IG51bWJlci4gIEN1cnJlbnRseSBtb3N0IG9mIHRoZQor ZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKK2luZGV4IDBiNDE3YjQuLjlj Mzc3MTMgMTAwNjQ0CistLS0gYS9nZGIvdmFsdWUuaAorKysrIGIvZ2RiL3ZhbHVlLmgKK0BAIC0x MDU3LDYgKzEwNTcsOCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YXJ5aW5nX3RvX3NsaWNlIChz dHJ1Y3QgdmFsdWUgKik7CisgCisgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfc2xpY2UgKHN0 cnVjdCB2YWx1ZSAqLCBpbnQsIGludCk7CisgCisrZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf c2xpY2VfMSAoc3RydWN0IHZhbHVlICosIGludCwgaW50LCBpbnQsIGludCk7CisrCisgZXh0ZXJu IHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbGV4IChzdHJ1Y3QgdmFsdWUgKiwgc3Ry dWN0IHZhbHVlICosCisgCQkJCQkgICAgc3RydWN0IHR5cGUgKik7CisgCgpkaWZmIC0tZ2l0IGEv Z2RiLXZsYS1pbnRlbC1mb3J0cmFuLXZsYS1zdHJpbmdzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1m b3J0cmFuLXZsYS1zdHJpbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjY2NTUzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLWZvcnRyYW4tdmxh LXN0cmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxNDg4IEBACitnaXQgZGlmZiAtLXN0YXQgLXAgZ2Ri L21hc3Rlci4uLmdkYi91c2Vycy9iaGVja2VsL2ZvcnRyYW4tdmxhLXN0cmluZ3MKKzBhZDdkOGQx YTNhMzZjNmUwNGUzYjZkMzdkODgyNWYxOGQ1OTU3MjMKKworIGdkYi9ORVdTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKKyBnZGIvYy12YWxwcmludC5jICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyMiArKysrKworIGdkYi9kd2FyZjJyZWFkLmMgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTU4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIGdk Yi9mLXR5cGVwcmludC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkzICsrKysrKysrKy0t LS0tLS0tLQorIGdkYi9nZGJ0eXBlcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ0 ICsrKysrKysrLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguY2MgICAgICAgICAgIHwg ICA5ICsrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5leHAgICAgICAgICAgfCAgIDkg KysKKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50ZXJzLmV4cCAgICB8IDE0MyArKysr KysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3BvaW50 ZXJzLmY5MCAgICB8IDEwOSArKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ByaW50X3R5cGUuZXhwICB8IDEwMCArKysrKysrKysrKysrKysrKysrCisgZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwICAgfCAgMTIgKy0tCisgZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAgfCAxMDMgKysrKysrKysrKysrKysr KysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwIHwgIDM5ICsr KysrKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAgICAgfCAgIDcg Ky0KKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAgICB8ICAxMiArKy0K KyBnZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAgICB8ICAgNyArLQorIGdk Yi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cCAgIHwgIDI3ICsrLS0tCisgZ2Ri L3R5cGVwcmludC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKysrKworIGdkYi92 YWxvcHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrLQorIGdkYi92YWxw cmludC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2IC0tCisgMjAgZmlsZXMgY2hh bmdlZCwgODI3IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdkYi03 LjExLjkwLjIwMTYwOTA3L2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEuOTAuMjAx NjA5MDcub3JpZy9nZGIvTkVXUwkyMDE2LTA5LTA3IDIxOjUyOjEwLjI3MzU2MzA2MCArMDIwMAor KysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi9ORVdTCTIwMTYtMDktMDcgMjE6NTM6MjIuNzA4 MjEwNDE2ICswMjAwCitAQCAtMSw2ICsxLDggQEAKKyAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RC PworIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQorIAorKyogRm9ydHJhbjog U3VwcG9ydCBwb2ludGVycyB0byBkeW5hbWljIHR5cGVzLgorKworICoqKiBDaGFuZ2VzIGluIEdE QiA3LjEyCisgCisgKiBHREIgYW5kIEdEQnNlcnZlciBub3cgYnVpbGQgd2l0aCBhIEMrKyBjb21w aWxlciBieSBkZWZhdWx0LgorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi9jLXZhbHBy aW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi9jLXZh bHByaW50LmMJMjAxNi0wOS0wNyAyMTo1MjoxMC4yNzI1NjMwNTEgKzAyMDAKKysrKyBnZGItNy4x MS45MC4yMDE2MDkwNy9nZGIvYy12YWxwcmludC5jCTIwMTYtMDktMDcgMjE6NTM6MjIuNzA4MjEw NDE2ICswMjAwCitAQCAtNjQ1LDYgKzY0NSwyOCBAQAorICAgICAgIGVsc2UKKyAJeworIAkgIC8q IG5vcm1hbCBjYXNlICovCisrCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BU UgorKwkgICAgICAmJiAxID09IGlzX2R5bmFtaWNfdHlwZSAodHlwZSkpCisrCSAgICB7CisrCSAg ICAgIENPUkVfQUREUiBhZGRyOworKwkgICAgICBpZiAoTlVMTCAhPSBUWVBFX0RBVEFfTE9DQVRJ T04gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKKysJCWFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2 YWwpOworKwkgICAgICBlbHNlCisrCQlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysK KysJICAgICAgLyogV2UgcmVzb2x2ZSB0aGUgdGFyZ2V0LXR5cGUgb25seSB3aGVuIHRoZQorKwkg ICAgICAgICBwb2ludGVyIGlzIGFzc29jaWF0ZWQuICAqLworKwkgICAgICBpZiAoKGFkZHIgIT0g MCkKKysJCSAgJiYgKDAgPT0gdHlwZV9ub3RfYXNzb2NpYXRlZCAodHlwZSkpKQorKwkJICBUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSA9CisrCQkgICAgICByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksCisrCQkJCQkgICAgTlVMTCwgYWRkcik7CisrCSAgICB9Cisr CSAgZWxzZQorKwkgICAgeworKwkgICAgICAvKiBEbyBub3RoaW5nLiBSZWZlcmVuY2VzIGFyZSBh bHJlYWR5IHJlc29sdmVkIGZyb20gdGhlIGJlZ2lubmluZywKKysJICAgICAgICAgb25seSBwb2lu dGVycyBhcmUgcmVzb2x2ZWQgd2hlbiB3ZSBhY3R1YWwgbmVlZCB0aGUgdGFyZ2V0LiAgKi8KKysJ ICAgIH0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CisgCSAgdHlwZV9wcmlu dCAodmFsdWVfdHlwZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworIAkgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIikgIik7CitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2R3YXJm MnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3Lm9yaWcvZ2RiL2R3 YXJmMnJlYWQuYwkyMDE2LTA5LTA3IDIxOjUyOjUzLjcwMDk1MTE3NSArMDIwMAorKysrIGdkYi03 LjExLjkwLjIwMTYwOTA3L2dkYi9kd2FyZjJyZWFkLmMJMjAxNi0wOS0wNyAyMTo1NDowMi4xNDA1 NjI4MjUgKzAyMDAKK0BAIC0xNzY0LDcgKzE3NjQsOCBAQAorIAorIHN0YXRpYyBpbnQgYXR0cl90 b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCisgCQkJCSBzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCistCQkJCSBzdHJ1Y3QgZHlu YW1pY19wcm9wICpwcm9wKTsKKysJCQkJIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIGNvbnN0 IGdkYl9ieXRlICphZGRpdGlvbmFsX2RhdGEsCisrCQkJCSBpbnQgYWRkaXRpb25hbF9kYXRhX3Np emUpOworIAorIC8qIG1lbW9yeSBhbGxvY2F0aW9uIGludGVyZmFjZSAqLworIAorQEAgLTExNDQ2 LDcgKzExNDQ3LDcgQEAKKyAgICAgeworICAgICAgIG5ld29iai0+c3RhdGljX2xpbmsKKyAJPSBY T0JORVcgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBkeW5hbWljX3Byb3ApOwor LSAgICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCBuZXdvYmotPnN0YXRp Y19saW5rKTsKKysgICAgICBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgbmV3 b2JqLT5zdGF0aWNfbGluaywgTlVMTCwgMCk7CisgICAgIH0KKyAKKyAgIGN1LT5saXN0X2luX3Nj b3BlID0gJmxvY2FsX3N5bWJvbHM7CitAQCAtMTQ1MTIsMjkgKzE0NTEzLDk0IEBACisgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworICAgc3Ry dWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsKKyAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICB1bnNpZ25lZCBpbnQgbGVuZ3RoOworKyAgdW5z aWduZWQgaW50IGxlbmd0aCA9IFVJTlRfTUFYOworIAorKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVf dHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0 aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKKysKKysgIC8qIElm IERXX0FUX3N0cmluZ19sZW5ndGggaXMgZGVmaW5lZCwgdGhlIGxlbmd0aCBpcyBzdG9yZWQgaW4g bWVtb3J5LiAgKi8KKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJpbmdfbGVu Z3RoLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAgeworLSAgICAgIGxlbmd0aCA9IERXX1VOU05E IChhdHRyKTsKKysgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysJeworKwkg IHN0cnVjdCBhdHRyaWJ1dGUgKmJ5dGVfc2l6ZSwgKmJpdF9zaXplOworKwkgIHN0cnVjdCBkeW5h bWljX3Byb3AgaGlnaDsKKysKKysJICBieXRlX3NpemUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9ieXRlX3NpemUsIGN1KTsKKysJICBiaXRfc2l6ZSA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X2JpdF9zaXplLCBjdSk7CisrCisrCSAgLyogRFdfQVRfYnl0ZV9zaXplIHNob3VsZCBuZXZlciBv Y2N1ciBpbiBjb21iaW5hdGlvbiB3aXRoCisrCSAgICAgRFdfQVRfYml0X3NpemUuICAqLworKwkg IGlmIChieXRlX3NpemUgIT0gTlVMTCAmJiBiaXRfc2l6ZSAhPSBOVUxMKQorKwkgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJICAgICAgIF8oIkRXX0FUX2J5dGVfc2l6ZSBB TkQgIgorKwkJCSAiRFdfQVRfYml0X3NpemUgZm91bmQgdG9nZXRoZXIgYXQgdGhlIHNhbWUgdGlt ZS4iKSk7CisrCisrCSAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0aCBBTkQgRFdfQVRfYnl0ZV9z aXplIGV4aXN0IHRvZ2V0aGVyLAorKwkgICAgIERXX0FUX2J5dGVfc2l6ZSBkZXNjcmliZXMgdGhl IG51bWJlciBvZiBieXRlcyB0aGF0IHNob3VsZCBiZSByZWFkCisrCSAgICAgZnJvbSB0aGUgbGVu Z3RoIG1lbW9yeSBsb2NhdGlvbi4gICovCisrCSAgaWYgKGJ5dGVfc2l6ZSAhPSBOVUxMKQorKwkg ICAgeworKwkgICAgICAvKiBCdWlsZCBuZXcgZHdhcmYyX2xvY2V4cHJfYmF0b24gc3RydWN0dXJl IHdpdGggYWRkaXRpb25zIHRvIHRoZQorKwkJIGRhdGEgYXR0cmlidXRlLCB0byByZWZsZWN0IERX QVJGIHNwZWNpYWxpdGllcyB0byBnZXQgYWRkcmVzcworKwkJIHNpemVzLiAgKi8KKysJICAgICAg Y29uc3QgZ2RiX2J5dGUgYXBwZW5kX29wc1tdID0KKysJCXsKKysJCS8qIERXX09QX2RlcmVmX3Np emU6IHNpemUgb2YgYW4gYWRkcmVzcyBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUKKysJCSAgIChieXRl cyksIHdoZXJlIHRoZSBzaXplIHdpbGwgYmUgc3BlY2lmaWVkIGJ5IHRoZSBuZXh0CisrCQkgICBv cGVyYW5kLiAgKi8KKysJCURXX09QX2RlcmVmX3NpemUsCisrCQkvKiBPcGVyYW5kIGZvciBEV19P UF9kZXJlZl9zaXplLiAgKi8KKysJCURXX1VOU05EKGJ5dGVfc2l6ZSkgfTsKKysKKysJICAgICAg aWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIGFwcGVuZF9v cHMsCisrCQkJCQkgQVJSQVlfU0laRShhcHBlbmRfb3BzKSkpCisrCQljb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCisrCQkJICAgXygiQ291bGQgbm90IHBhcnNlIERXX0FUX2J5dGVfc2l6 ZSIpKTsKKysJICAgIH0KKysJICBlbHNlIGlmIChiaXRfc2l6ZSAhPSBOVUxMKQorKwkgICAgY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJICAgICAgIF8oIkRXX0FUX3N0cmluZ19s ZW5ndGggQU5EICIKKysJCQkgIkRXX0FUX2JpdF9zaXplIGZvdW5kIGJ1dCBub3Qgc3VwcG9ydGVk IHlldC4iKSk7CisrCSAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0aCBXSVRIT1VUIERXX0FUX2J5 dGVfc2l6ZSBleGlzdCwgdGhlIGRlZmF1bHQKKysJICAgICBpcyB0aGUgYWRkcmVzcyBzaXplIG9m IHRoZSB0YXJnZXQgbWFjaGluZS4gICovCisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBjb25z dCBnZGJfYnl0ZSBhcHBlbmRfb3BzW10gPQorKwkJeyBEV19PUF9kZXJlZiB9OworKworKwkgICAg ICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgYXBwZW5k X29wcywKKysJCQkJCSBBUlJBWV9TSVpFKGFwcGVuZF9vcHMpKSkKKysJCWNvbXBsYWludCAoJnN5 bWZpbGVfY29tcGxhaW50cywKKysJCQkgICBfKCJDb3VsZCBub3QgcGFyc2UgRFdfQVRfc3RyaW5n X2xlbmd0aCIpKTsKKysJICAgIH0KKysKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUp LT5oaWdoID0gaGlnaDsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIFRZUEVfSElHSF9CT1VO RCAocmFuZ2VfdHlwZSkgPSBEV19VTlNORChhdHRyKTsKKysJICBUWVBFX0hJR0hfQk9VTkRfS0lO RCAocmFuZ2VfdHlwZSkgPSBQUk9QX0NPTlNUOworKwl9CisgICAgIH0KKyAgIGVsc2UKKyAgICAg eworLSAgICAgIC8qIENoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0dHJpYnV0ZS4gICov CisrICAgICAgLyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLCB3aGlj aCByZXByZXNlbnRzIHRoZSBsZW5ndGgKKysJIGluIHRoaXMgY2FzZS4gICovCisgICAgICAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOworICAgICAgIGlmIChh dHRyKQorLSAgICAgICAgeworLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7Cist ICAgICAgICB9CisrCXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gRFdfVU5T TkQoYXR0cik7CisrCSAgVFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9D T05TVDsKKysJfQorICAgICAgIGVsc2UKKy0gICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0g MTsKKy0gICAgICAgIH0KKysJeworKwkgIFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAx OworKwkgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBST1BfQ09OU1Q7Cisr CX0KKyAgICAgfQorIAorLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1 aWx0aW5faW50OworLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVM TCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKKyAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmlu Z19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKKyAgIHR5cGUgPSBjcmVh dGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CisgCitAQCAtMTQ4 NjQsNyArMTQ5MzAsOCBAQAorIAorIHN0YXRpYyBpbnQKKyBhdHRyX3RvX2R5bmFtaWNfcHJvcCAo Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCistCQkg ICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCkKKysJ CSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAor KwkJICAgICAgY29uc3QgZ2RiX2J5dGUgKmFkZGl0aW9uYWxfZGF0YSwgaW50IGFkZGl0aW9uYWxf ZGF0YV9zaXplKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24gKmJhdG9uOwor ICAgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sgPSAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFj azsKK0BAIC0xNDg3NCwxNCArMTQ5NDEsMzMgQEAKKyAKKyAgIGlmIChhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKQorICAgICB7CistICAgICAgYmF0b24gPSBYT0JORVcgKG9ic3RhY2ssIHN0cnVj dCBkd2FyZjJfcHJvcGVydHlfYmF0b24pOworKyAgICAgIGJhdG9uID0gWE9CTkVXKG9ic3RhY2ss IHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24pOworICAgICAgIGJhdG9uLT5yZWZlcmVuY2Vk X3R5cGUgPSBOVUxMOworICAgICAgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7 CistICAgICAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKKy0g ICAgICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOworKworKyAg ICAgIGlmIChhZGRpdGlvbmFsX2RhdGEgIT0gTlVMTCAmJiBhZGRpdGlvbmFsX2RhdGFfc2l6ZSA+ IDApCisrCXsKKysJICBnZGJfYnl0ZSAqZGF0YTsKKysKKysJICBkYXRhID0gKGdkYl9ieXRlICop IG9ic3RhY2tfYWxsb2MoCisrCSAgICAgICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAor KwkgICAgICBEV19CTE9DSyAoYXR0ciktPnNpemUgKyBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7Cisr CSAgbWVtY3B5IChkYXRhLCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRyKS0+ c2l6ZSk7CisrCSAgbWVtY3B5IChkYXRhICsgRFdfQkxPQ0sgKGF0dHIpLT5zaXplLCBhZGRpdGlv bmFsX2RhdGEsCisrCQkgIGFkZGl0aW9uYWxfZGF0YV9zaXplKTsKKysKKysJICBiYXRvbi0+bG9j ZXhwci5kYXRhID0gZGF0YTsKKysJICBiYXRvbi0+bG9jZXhwci5zaXplID0gRFdfQkxPQ0sgKGF0 dHIpLT5zaXplICsgYWRkaXRpb25hbF9kYXRhX3NpemU7CisrCX0KKysgICAgICBlbHNlCisrCXsK KysJICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOworKwkgIGJh dG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CisrCX0KKysKKyAgICAg ICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247CisgICAgICAgcHJvcC0+a2luZCA9IFBST1BfTE9D RVhQUjsKKy0gICAgICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOworKyAg ICAgIGdkYl9hc3NlcnQocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKKyAgICAgfQorICAgZWxz ZSBpZiAoYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikpCisgICAgIHsKK0BAIC0xNDkxNCw4ICsxNTAw MCwyOCBAQAorIAkJYmF0b24gPSBYT0JORVcgKG9ic3RhY2ssIHN0cnVjdCBkd2FyZjJfcHJvcGVy dHlfYmF0b24pOworIAkJYmF0b24tPnJlZmVyZW5jZWRfdHlwZSA9IGRpZV90eXBlICh0YXJnZXRf ZGllLCB0YXJnZXRfY3UpOworIAkJYmF0b24tPmxvY2V4cHIucGVyX2N1ID0gY3UtPnBlcl9jdTsK Ky0JCWJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5zaXplOwor LQkJYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLICh0YXJnZXRfYXR0ciktPmRhdGE7Cisr CisrCQlpZiAoYWRkaXRpb25hbF9kYXRhICE9IE5VTEwgJiYgYWRkaXRpb25hbF9kYXRhX3NpemUg PiAwKQorKwkJICB7CisrCQkgICAgZ2RiX2J5dGUgKmRhdGE7CisrCisrCQkgICAgZGF0YSA9IChn ZGJfYnl0ZSAqKSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywK KysJCQkgICAgRFdfQkxPQ0sgKHRhcmdldF9hdHRyKS0+c2l6ZSArIGFkZGl0aW9uYWxfZGF0YV9z aXplKTsKKysJCSAgICBtZW1jcHkgKGRhdGEsIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPmRhdGEs CisrCQkJICAgIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUpOworKwkJICAgIG1lbWNweSAo ZGF0YSArIERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemUsCisrCQkJICAgIGFkZGl0aW9uYWxf ZGF0YSwgYWRkaXRpb25hbF9kYXRhX3NpemUpOworKworKwkJICAgIGJhdG9uLT5sb2NleHByLmRh dGEgPSBkYXRhOworKwkJICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSAoRFdfQkxPQ0sgKHRhcmdl dF9hdHRyKS0+c2l6ZQorKwkJCQkJICAgKyBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7CisrCQkgIH0K KysJCWVsc2UKKysJCSAgeworKwkJICAgIGJhdG9uLT5sb2NleHByLmRhdGEgPSBEV19CTE9DSyAo dGFyZ2V0X2F0dHIpLT5kYXRhOworKwkJICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9D SyAodGFyZ2V0X2F0dHIpLT5zaXplOworKwkJICB9CisrCisgCQlwcm9wLT5kYXRhLmJhdG9uID0g YmF0b247CisgCQlwcm9wLT5raW5kID0gUFJPUF9MT0NFWFBSOworIAkJZ2RiX2Fzc2VydCAocHJv cC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNTAyNywyNCArMTUxMzMsMjQgQEAKKyAKKyAg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworICAgaWYg KGF0dHIpCistICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZz dHJpZGUpKQorKyAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAm c3RyaWRlLCBOVUxMLCAwKSkKKyAgICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50 cywgXygiTWlzc2luZyBEV19BVF9ieXRlX3N0cmlkZSAiCisgICAgICAgICAgICAgICAgICAgIi0g RElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKKyAgICAgICAgICAgICAgZGllLT5vZmZzZXQu c2VjdF9vZmYsIG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKKyAKKyAgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOworICAgaWYgKGF0dHIpCistICAg IGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93KTsKKysgICAgYXR0cl90 b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3csIE5VTEwsIDApOworICAgZWxzZSBp ZiAoIWxvd19kZWZhdWx0X2lzX3ZhbGlkKQorICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsIF8oIk1pc3NpbmcgRFdfQVRfbG93ZXJfYm91bmQgIgorIAkJCQkgICAgICAiLSBESUUg YXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAorIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYs IG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKKyAKKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOworLSAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJv cCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gpKQorKyAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAo YXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEwsIDApKQorICAgICB7CisgICAgICAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7CistICAgICAgaWYgKGF0dHJfdG9fZHlu YW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCkpCisrICAgICAgaWYgKGF0dHJfdG9fZHlu YW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCisgCXsKKyAJICAvKiBJ ZiBib3VuZHMgYXJlIGNvbnN0YW50IGRvIHRoZSBmaW5hbCBjYWxjdWxhdGlvbiBoZXJlLiAgKi8K KyAJICBpZiAobG93LmtpbmQgPT0gUFJPUF9DT05TVCAmJiBoaWdoLmtpbmQgPT0gUFJPUF9DT05T VCkKK0BAIC0yMjQxNiw3ICsyMjUyMiw3IEBACisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfYWxsb2NhdGVkLCBjdSk7CisgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkK KyAgICAgeworLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg JnByb3ApKQorKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg JnByb3AsIE5VTEwsIDApKQorICAgICAgICAgYWRkX2R5bl9wcm9wIChEWU5fUFJPUF9BTExPQ0FU RUQsIHByb3AsIHR5cGUsIG9iamZpbGUpOworICAgICB9CisgICBlbHNlIGlmIChhdHRyICE9IE5V TEwpCitAQCAtMjI0MzEsNyArMjI1MzcsNyBAQAorICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2Fzc29jaWF0ZWQsIGN1KTsKKyAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQorICAgICB7CistICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1 LCAmcHJvcCkpCisrICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1 LCAmcHJvcCwgTlVMTCwgMCkpCisgICAgICAgICBhZGRfZHluX3Byb3AgKERZTl9QUk9QX0FTU09D SUFURUQsIHByb3AsIHR5cGUsIG9iamZpbGUpOworICAgICB9CisgICBlbHNlIGlmIChhdHRyICE9 IE5VTEwpCitAQCAtMjI0NDQsNyArMjI1NTAsNyBAQAorIAorICAgLyogUmVhZCBEV19BVF9kYXRh X2xvY2F0aW9uIGFuZCBzZXQgaW4gdHlwZS4gICovCisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgY3UpOworLSAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9w IChhdHRyLCBkaWUsIGN1LCAmcHJvcCkpCisrICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0 dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKKyAgICAgYWRkX2R5bl9wcm9wIChEWU5fUFJP UF9EQVRBX0xPQ0FUSU9OLCBwcm9wLCB0eXBlLCBvYmpmaWxlKTsKKyAKKyAgIGlmIChkd2FyZjJf cGVyX29iamZpbGUtPmRpZV90eXBlX2hhc2ggPT0gTlVMTCkKK0luZGV4OiBnZGItNy4xMS45MC4y MDE2MDkwNy9nZGIvZi10eXBlcHJpbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIw MTYwOTA3Lm9yaWcvZ2RiL2YtdHlwZXByaW50LmMJMjAxNi0wOS0wNyAyMTo1MjoxMC4yNzI1NjMw NTEgKzAyMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvZi10eXBlcHJpbnQuYwkyMDE2 LTA5LTA3IDIxOjUzOjIyLjcxMzIxMDQ2MSArMDIwMAorQEAgLTM3LDcgKzM3LDcgQEAKKyAjZW5k aWYKKyAKKyBzdGF0aWMgdm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKKy0JCQkJCSBpbnQsIGludCwgaW50KTsKKysJ CQkJCSBpbnQsIGludCwgaW50LCBpbnQpOworIAorIHZvaWQgZl90eXBlX3ByaW50X3ZhcnNwZWNf cHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIAkJCQkgIGludCwgaW50 KTsKK0BAIC01NCwxOCArNTQsNiBAQAorICAgZW51bSB0eXBlX2NvZGUgY29kZTsKKyAgIGludCBk ZW1hbmdsZWRfYXJnczsKKyAKKy0gIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkICh0eXBlKSkKKy0g ICAgeworLSAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKKy0gICAgICBy ZXR1cm47CistICAgIH0KKy0KKy0gIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQgKHR5cGUpKQorLSAg ICB7CistICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7CistICAgICAgcmV0 dXJuOworLSAgICB9CistCisgICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93 LCBsZXZlbCk7CisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAgIGlmICgodmFyc3RyaW5n ICE9IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQorQEAgLTg3LDcgKzc1LDcgQEAKKyAgICAg ICAgICBzbyBkb24ndCBwcmludCBhbiBhZGRpdGlvbmFsIHBhaXIgb2YgKCkncy4gICovCisgCisg ICAgICAgZGVtYW5nbGVkX2FyZ3MgPSB2YXJzdHJpbmdbc3RybGVuICh2YXJzdHJpbmcpIC0gMV0g PT0gJyknOyAKKy0gICAgICBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHR5cGUsIHN0cmVh bSwgc2hvdywgMCwgZGVtYW5nbGVkX2FyZ3MsIDApOworKyAgICAgIGZfdHlwZV9wcmludF92YXJz cGVjX3N1ZmZpeCAodHlwZSwgc3RyZWFtLCBzaG93LCAwLCBkZW1hbmdsZWRfYXJncywgMCwgMCk7 CisgICAgfQorIH0KKyAKK0BAIC0xNTcsNyArMTQ1LDcgQEAKKyBzdGF0aWMgdm9pZAorIGZfdHlw ZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sCisgCQkJICAgICBpbnQgc2hvdywgaW50IHBhc3NlZF9hX3B0ciwgaW50IGRlbWFu Z2xlZF9hcmdzLAorLQkJCSAgICAgaW50IGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCkKKysJCQkg ICAgIGludCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwsIGludCBwcmludF9yYW5rX29ubHkpCisg eworICAgaW50IHVwcGVyX2JvdW5kLCBsb3dlcl9ib3VuZDsKKyAKK0BAIC0xODEsMzQgKzE2OSw1 MCBAQAorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CisgCisgICAgICAgaWYgKHR5 cGVfbm90X2Fzc29jaWF0ZWQgKHR5cGUpKQorLSAgICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lh dGVkIChzdHJlYW0pOworKwlwcmludF9yYW5rX29ubHkgPSAxOworICAgICAgIGVsc2UgaWYgKHR5 cGVfbm90X2FsbG9jYXRlZCAodHlwZSkpCistICAgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRl ZCAoc3RyZWFtKTsKKysJcHJpbnRfcmFua19vbmx5ID0gMTsKKysgICAgICBlbHNlIGlmICgoVFlQ RV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpCisrCQkmJiBQUk9QX0NPTlNUICE9IFRZUEVfRFlOX1BS T1BfS0lORCAoVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpKSkKKysJICAgICAgfHwgKFRZUEVf QUxMT0NBVEVEX1BST1AgKHR5cGUpCisrCQkmJiBQUk9QX0NPTlNUICE9IFRZUEVfRFlOX1BST1Bf S0lORCAoVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSkpKQorKwkgICAgICB8fCAoVFlQRV9EQVRB X0xPQ0FUSU9OICh0eXBlKQorKwkJICAmJiBQUk9QX0NPTlNUICE9IFRZUEVfRFlOX1BST1BfS0lO RCAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSkpKQorKwkvKiBUaGlzIGNhc2UgZXhpc3Qgd2hl biB3ZSBwdHlwZSBhIHR5cGVuYW1lIHdoaWNoIGhhcyB0aGUKKysJICAgZHluYW1pYyBwcm9wZXJ0 aWVzIGJ1dCBjYW5ub3QgYmUgcmVzb2x2ZWQgYXMgdGhlcmUgaXMKKysJICAgbm8gb2JqZWN0LiAg Ki8KKysJcHJpbnRfcmFua19vbmx5ID0gMTsKKysKKysgICAgICBpZiAoVFlQRV9DT0RFIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RFX0FSUkFZKQorKwlmX3R5cGVfcHJpbnRf dmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsCisrCQkJ CSAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLAorKwkJCQkgICAgIHByaW50X3Jh bmtfb25seSk7CisrCisrICAgICAgaWYgKHByaW50X3Jhbmtfb25seSA9PSAxKQorKwlmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICI6Iik7CisgICAgICAgZWxzZQorLSAgICAgICAgeworLSAgICAg ICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RF X0FSUkFZKQorLSAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsKKy0KKy0gICAg ICAgICAgbG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworLSAgICAgICAg ICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAgKi8KKy0gICAgICAg ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZDoiLCBsb3dlcl9ib3VuZCk7CistCist ICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBh cnJheSwgd2UKKy0gICAgICAgICAgICAgcHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJpbnQgdGhl IHVwcGVyYm91bmQgYXMgJyonLiAgKi8KKy0KKy0gICAgICAgICAgaWYgKFRZUEVfQVJSQVlfVVBQ RVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKy0gICAgICAgICAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIqIik7CistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICB7CistICAg ICAgICAgICAgICB1cHBlcl9ib3VuZCA9IGY3N19nZXRfdXBwZXJib3VuZCAodHlwZSk7CistICAg ICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVwcGVyX2JvdW5kKTsK Ky0gICAgICAgICAgICB9CistCistICAgICAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCistICAgICAgICAgICAgZl90eXBlX3By aW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBhcnJheXByaW50 X3JlY3Vyc2VfbGV2ZWwpOworLSAgICAgICAgfQorKwl7CisrCSAgbG93ZXJfYm91bmQgPSBmNzdf Z2V0X2xvd2VyYm91bmQgKHR5cGUpOworKwkgIGlmIChsb3dlcl9ib3VuZCAhPSAxKQkvKiBOb3Qg dGhlIGRlZmF1bHQuICAqLworKwkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQ6Iiwg bG93ZXJfYm91bmQpOworKworKwkgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFz c3VtZWQgc2l6ZSBhcnJheSwgd2UKKysJICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHBy aW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCisrCisrCSAgaWYgKFRZUEVfQVJSQVlfVVBQ RVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKysJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIioiKTsKKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIHVwcGVyX2JvdW5kID0gZjc3 X2dldF91cHBlcmJvdW5kICh0eXBlKTsKKysJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiJWQiLCB1cHBlcl9ib3VuZCk7CisrCSAgICB9CisrCX0KKysKKysgICAgICBpZiAoVFlQRV9D T0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX0FSUkFZKQorKwlmX3R5 cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0s IDAsCisrCQkJCSAgICAgMCwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLAorKwkJCQkgICAg IHByaW50X3Jhbmtfb25seSk7CisrCisgICAgICAgaWYgKGFycmF5cHJpbnRfcmVjdXJzZV9sZXZl bCA9PSAxKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CisgICAgICAgZWxzZQor QEAgLTIxOSwxMyArMjIzLDE0IEBACisgICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoKKyAgICAgY2Fz ZSBUWVBFX0NPREVfUkVGOgorICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMSwgMCwKKy0JCQkJICAgYXJyYXlwcmlu dF9yZWN1cnNlX2xldmVsKTsKKysJCQkJICAgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLCAwKTsK KyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CisgICAgICAgYnJlYWs7Cisg CisgICAgIGNhc2UgVFlQRV9DT0RFX0ZVTkM6CisgICAgICAgZl90eXBlX3ByaW50X3ZhcnNwZWNf c3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLAorLQkJCQkgICBwYXNz ZWRfYV9wdHIsIDAsIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrCQkJCSAgIHBhc3NlZF9h X3B0ciwgMCwgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsLAorKwkJCQkgICAwKTsKKyAgICAgICBp ZiAocGFzc2VkX2FfcHRyKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CisgCitA QCAtMzc2LDcgKzM4MSw3IEBACisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkICgiIDo6ICIsIHN0cmVh bSk7CisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGluZGV4 KSwgc3RyZWFtKTsKKyAJICAgICAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX0ZJ RUxEX1RZUEUgKHR5cGUsIGluZGV4KSwKKy0JCQkJCSAgIHN0cmVhbSwgc2hvdyAtIDEsIDAsIDAs IDApOworKwkJCQkJICAgc3RyZWFtLCBzaG93IC0gMSwgMCwgMCwgMCwgMCk7CisgCSAgICAgIGZw dXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOworIAkgICAgfQorIAkgIGZwcmludGZpX2ZpbHRl cmVkIChsZXZlbCwgc3RyZWFtLCAiRW5kIFR5cGUgIik7CitJbmRleDogZ2RiLTcuMTEuOTAuMjAx NjA5MDcvZ2RiL2dkYnR5cGVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xMS45MC4yMDE2MDkw Ny5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTYtMDktMDcgMjE6NTI6NTMuNzAzOTUxMjAyICswMjAw CisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL2dkYnR5cGVzLmMJMjAxNi0wOS0wNyAyMTo1 MzoyMi43MTQyMTA0NzAgKzAyMDAKK0BAIC0xODE2LDcgKzE4MTYsOCBAQAorICAgdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKHR5cGUpOworIAorICAgLyogV2Ugb25seSB3YW50IHRvIHJlY29nbml6ZSBy ZWZlcmVuY2VzIGF0IHRoZSBvdXRlcm1vc3QgbGV2ZWwuICAqLworLSAgaWYgKHRvcF9sZXZlbCAm JiBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCisrICBpZiAodG9wX2xldmVsICYm CisrICAgICAgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRiB8fCBUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9QVFIpKQorICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpOworIAorICAgLyogVHlwZXMgdGhhdCBoYXZlIGEgZHluYW1p YyBUWVBFX0RBVEFfTE9DQVRJT04gYXJlIGNvbnNpZGVyZWQKK0BAIC0xODUwLDYgKzE4NTEsNyBA QAorICAgICAgIH0KKyAKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CisrICAgIGNhc2UgVFlQ RV9DT0RFX1NUUklORzoKKyAgICAgICB7CisgCWdkYl9hc3NlcnQgKFRZUEVfTkZJRUxEUyAodHlw ZSkgPT0gMSk7CisgCitAQCAtMTk2Miw3ICsxOTY0LDggQEAKKyAgIHN0cnVjdCB0eXBlICphcnlf ZGltOworICAgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKyAKKy0gIGdkYl9hc3NlcnQgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKKysgIGdkYl9hc3NlcnQgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrCSAgICAgIHx8IFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX1NUUklORyk7CisgCisgICB0eXBlID0gY29weV90eXBlICh0eXBlKTsK KyAKK0BAIC0xOTg3LDEzICsxOTkwLDE3IEBACisgCisgICBhcnlfZGltID0gY2hlY2tfdHlwZWRl ZiAoVFlQRV9UQVJHRVRfVFlQRSAoZWx0X3R5cGUpKTsKKyAKKy0gIGlmIChhcnlfZGltICE9IE5V TEwgJiYgVFlQRV9DT0RFIChhcnlfZGltKSA9PSBUWVBFX0NPREVfQVJSQVkpCisrICBpZiAoYXJ5 X2RpbSAhPSBOVUxMICYmIChUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9BUlJBWQor KyAgICAgIHx8IFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX1NUUklORykpCisgICAg IGVsdF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5IChhcnlfZGltLCBhZGRyX3N0YWNrKTsK KyAgIGVsc2UKKyAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKKyAKKy0g IHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAodHlwZSwgZWx0X3R5cGUsIHJh bmdlX3R5cGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVf RklFTERfQklUU0laRSAodHlwZSwgMCkpOworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX1NUUklORykKKysgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlwZSAodHlwZSwgZWx0 X3R5cGUsIHJhbmdlX3R5cGUpOworKyAgZWxzZQorKyAgICByZXR1cm4gY3JlYXRlX2FycmF5X3R5 cGVfd2l0aF9zdHJpZGUgKHR5cGUsIGVsdF90eXBlLCByYW5nZV90eXBlLAorKwkJCQkJICBUWVBF X0ZJRUxEX0JJVFNJWkUgKHR5cGUsIDApKTsKKyB9CisgCisgLyogUmVzb2x2ZSBkeW5hbWljIGJv dW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRpYworQEAgLTIxMjMsNiAr MjEzMCwyOCBAQAorICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7CisgfQorIAorKy8qIFdvcmtlciBm b3IgcG9pbnRlciB0eXBlcy4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKytyZXNvbHZl X2R5bmFtaWNfcG9pbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJIHN0cnVjdCBwcm9wZXJ0 eV9hZGRyX2luZm8gKmFkZHJfc3RhY2spCisreworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJv cDsKKysgIENPUkVfQUREUiB2YWx1ZTsKKysKKysgIHR5cGUgPSBjb3B5X3R5cGUgKHR5cGUpOwor KworKyAgLyogUmVzb2x2ZSBhc3NvY2lhdGVkIHByb3BlcnR5LiAgKi8KKysgIHByb3AgPSBUWVBF X0FTU09DSUFURURfUFJPUCAodHlwZSk7CisrICBpZiAocHJvcCAhPSBOVUxMICYmIGR3YXJmMl9l dmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZhbHVlKSkKKysgICAg eworKyAgICAgIFRZUEVfRFlOX1BST1BfQUREUiAocHJvcCkgPSB2YWx1ZTsKKysgICAgICBUWVBF X0RZTl9QUk9QX0tJTkQgKHByb3ApID0gUFJPUF9DT05TVDsKKysgICAgfQorKworKyAgcmV0dXJu IHR5cGU7CisrfQorKworIC8qIFdvcmtlciBmb3IgcmVzb2x2ZWRfZHluYW1pY190eXBlLiAgKi8K KyAKKyBzdGF0aWMgc3RydWN0IHR5cGUgKgorQEAgLTIxNzEsNyArMjIwMCwxMiBAQAorIAkgICAg YnJlYWs7CisgCSAgfQorIAorKyAgICAgICAgY2FzZSBUWVBFX0NPREVfUFRSOgorKyAJICByZXNv bHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3BvaW50ZXIgKHR5cGUsIGFkZHJfc3RhY2spOwor KyAJICBicmVhazsKKysKKyAJY2FzZSBUWVBFX0NPREVfQVJSQVk6CisrCWNhc2UgVFlQRV9DT0RF X1NUUklORzoKKyAJICByZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5ICh0eXBl LCBhZGRyX3N0YWNrKTsKKyAJICBicmVhazsKKyAKK0luZGV4OiBnZGItNy4xMS45MC4yMDE2MDkw Ny9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmNjCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu MTEuOTAuMjAxNjA5MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmNjCTIwMTYt MDktMDcgMjE6NTI6MTAuMjcyNTYzMDUxICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmxhLWN4eC5jYwkyMDE2LTA5LTA3IDIxOjUzOjIyLjcxNDIx MDQ3MCArMDIwMAorQEAgLTE1LDYgKzE1LDEwIEBACisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisgCisrZXh0ZXJuICJDIiB7CisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorK30KKysK KyBzdHJ1Y3QgY29udGFpbmVyOworIAorIHN0cnVjdCBlbGVtZW50CitAQCAtNDAsMTEgKzQ0LDE2 IEBACisgICB0eXBlZGVmIHR5cGVvZiAodmxhKSAmdmxhcmVmdHlwZWRlZjsKKyAgIHZsYXJlZnR5 cGVkZWYgdmxhcmVmMiAodmxhKTsKKyAgIGNvbnRhaW5lciBjOworKyAgdHlwZW9mICh2bGEpICpw dHIgPSBOVUxMOworKworKyAgLy8gQmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudAorKyAgcHRyID0g JnZsYTsKKyAKKyAgIGZvciAoaW50IGkgPSAwOyBpIDwgejsgKytpKQorICAgICB2bGFbaV0gPSA1 ICsgMiAqIGk7CisgCisgICAvLyB2bGFzX2ZpbGxlZAorICAgdmxhWzBdID0gMiAqIHZsYVswXTsK KysKKyAgIHJldHVybiB2bGFbMl07CisgfQorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEu OTAuMjAxNjA5MDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5jcC92bGEtY3h4LmV4cAkyMDE2LTA5 LTA3IDIxOjUyOjEwLjI3MjU2MzA1MSArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3ZsYS1jeHguZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE1MjEw NDc5ICswMjAwCitAQCAtMjMsNiArMjMsMTIgQEAKKyAgICAgcmV0dXJuIC0xCisgfQorIAorK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCZWZvcmUgcG9pbnRlciBhc3NpZ25t ZW50Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQmVmb3JlIHBvaW50ZXIgYXNzaWdu bWVudCIKKytnZGJfdGVzdCAicHR5cGUgcHRyIiAiaW50IFxcKFxcKlxcKVxcXFt2YXJpYWJsZSBs ZW5ndGhcXFxdIiAicHR5cGUgcHRyLCBCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50IgorK2dkYl90 ZXN0ICJwcmludCBwdHIiICJcXChpbnQgXFwoXFwqXFwpXFxcW3ZhcmlhYmxlIGxlbmd0aFxcXF1c XCkgMHgwIiAicHJpbnQgcHRyLCBCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50IgorK2dkYl90ZXN0 ICJwcmludCAqcHRyIiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDAiICJwcmlu dCAqcHRyLCBCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50IgorKworIGdkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGFzX2ZpbGxlZCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZsYXNfZmlsbGVkIgorIAorQEAgLTMzLDMgKzM5LDYgQEAKKyAjIGJ1ZyBiZWluZyB0 ZXN0ZWQsIGl0J3MgYmV0dGVyIG5vdCB0byBkZXBlbmQgb24gdGhlIGV4YWN0IHNwZWxsaW5nLgor IGdkYl90ZXN0ICJwcmludCB2bGFyZWYyIiAiID0gXFwoLipcXCkgQCRoZXg6IFxcezUsIDcsIDlc XH0iCisgZ2RiX3Rlc3QgInByaW50IGMiICIgPSBcXHtlID0gXFx7YyA9IEAkaGV4XFx9XFx9Igor K2dkYl90ZXN0ICJwdHlwZSBwdHIiICJpbnQgXFwoXFwqXFwpXFxcWzNcXFxdIgorK2dkYl90ZXN0 ICJwcmludCBwdHIiICJcXChpbnQgXFwoXFwqXFwpXFxcWzNcXFxdXFwpICRoZXgiCisrZ2RiX3Rl c3QgInByaW50ICpwdHIiICIgPSBcXHs1LCA3LCA5XFx9IgorSW5kZXg6IGdkYi03LjExLjkwLjIw MTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcG9pbnRlcnMuZXhwCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5l eHAJMjAxNi0wOS0wNyAyMTo1MzoyMi43MTUyMTA0NzkgKzAyMDAKK0BAIC0wLDAgKzEsMTQzIEBA CisrIyBDb3B5cmlnaHQgMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisr IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInBvaW50 ZXJzLmY5MCIKKytsb2FkX2xpYiBmb3J0cmFuLmV4cAorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1bnRvX21h aW5dIHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKKysgICAgcmV0dXJu IC0xCisrfQorKworKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUg dHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4KKytzZXQgbG9naWNhbCBbZm9y dHJhbl9sb2dpY2FsNF0KKytzZXQgcmVhbCBbZm9ydHJhbl9yZWFsNF0KKytzZXQgaW50IFtmb3J0 cmFuX2ludDRdCisrc2V0IGNvbXBsZXggW2ZvcnRyYW5fY29tcGxleDRdCisrCisrCisrZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJlZm9yZSBwb2ludGVyIGFzc2lnbm1lbnQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50 IgorK2dkYl90ZXN0ICJwcmludCBsb2dwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRsb2dpY2FsIFxc KVxcKSAweDAiICJwcmludCBsb2dwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQg KmxvZ3AiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4MCIgInByaW50ICpsb2dw LCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgY29tcCIgIj0gXFwoUFRSIFRPIC0+ IFxcKCAkY29tcGxleCBcXClcXCkgMHgwIiAicHJpbnQgY29tcCwgbm90IGFzc29jaWF0ZWQiCisr Z2RiX3Rlc3QgInByaW50ICpjb21wIiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAw eDAiICJwcmludCAqY29tcCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGNoYXJw IiAiPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEgXFwpXFwpIDB4MCIgInByaW50IGNo YXJwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgKmNoYXJwIiAiQ2Fubm90IGFj Y2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDAiICJwcmludCAqY2hhcnAsIG5vdCBhc3NvY2lhdGVk IgorK2dkYl90ZXN0ICJwcmludCBjaGFyYXAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVy XFwqMyBcXClcXCkgMHgwIiAicHJpbnQgY2hhcmFwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVz dCAicHJpbnQgKmNoYXJhcCIgIkNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwIiAi cHJpbnQgKmNoYXJhcCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGludHAiICI9 IFxcKFBUUiBUTyAtPiBcXCggJGludCBcXClcXCkgMHgwIiAicHJpbnQgaW50cCwgbm90IGFzc29j aWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50ICppbnRwIiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQg YWRkcmVzcyAweDAiICJwcmludCAqaW50cCwgbm90IGFzc29jaWF0ZWQiCisrc2V0IHRlc3QgInBy aW50IGludGFwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgaW50 YXAiICR0ZXN0IHsKKysgIC1yZSAiID0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKDosOlxcKVxc KVxcKSA8bm90IGFzc29jaWF0ZWQ+XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAkdGVz dAorKyAgfQorKyAgLXJlICIgPSA8bm90IGFzc29jaWF0ZWQ+XHJcbiRnZGJfcHJvbXB0ICQiIHsK KysgICAgcGFzcyAkdGVzdAorKyAgfQorK30KKytnZGJfdGVzdCAicHJpbnQgcmVhbHAiICI9IFxc KFBUUiBUTyAtPiBcXCggJHJlYWwgXFwpXFwpIDB4MCIgInByaW50IHJlYWxwLCBub3QgYXNzb2Np YXRlZCIKKytnZGJfdGVzdCAicHJpbnQgKnJlYWxwIiAiQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQg YWRkcmVzcyAweDAiICJwcmludCAqcmVhbHAsIG5vdCBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJw cmludCBcJG15X3ZhciA9IGludHAiICI9IFxcKFBUUiBUTyAtPiBcXCggJGludCBcXClcXCkgMHgw IgorK3NldCB0ZXN0ICJwcmludCBjeWNsaWNwMSwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3Rf bXVsdGlwbGUgInByaW50IGN5Y2xpY3AxIiAkdGVzdCB7CisrICAtcmUgIj0gXFwoIGkgPSAtP1xc ZCssIHAgPSAweDAgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAkdGVzdAorKyAg fQorKyAgLXJlICI9IFxcKCBpID0gLT9cXGQrLCBwID0gPG5vdCBhc3NvY2lhdGVkPiBcXClcclxu JGdkYl9wcm9tcHQgJCIgeworKyAgICBwYXNzICR0ZXN0CisrICB9CisrfQorK3NldCB0ZXN0ICJw cmludCBjeWNsaWNwMSVwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJp bnQgY3ljbGljcDElcCIgJHRlc3QgeworKyAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCggVHlwZSB0 eXBld2l0aHBvaW50ZXIgXFwpXFwpIDB4MFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIHBhc3Mg JHRlc3QKKysgIH0KKysgIC1yZSAiPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdHlwZXdpdGhwb2lu dGVyIFxcKVxcKSA8bm90IGFzc29jaWF0ZWQ+XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFz cyAkdGVzdAorKyAgfQorK30KKysKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJCZWZvcmUgdmFsdWUgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHJpbnQgKih0d29wKSVp dmxhMiIgIj0gPG5vdCBhbGxvY2F0ZWQ+IgorKworKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJBZnRlciB2YWx1ZSBhc3NpZ25tZW50Il0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHJpbnQgbG9n cCIgIj0gXFwoUFRSIFRPIC0+IFxcKCAkbG9naWNhbCBcXClcXCkgJGhleFwoIDwuKj5cKT8iCisr Z2RiX3Rlc3QgInByaW50ICpsb2dwIiAiPSBcXC5UUlVFXFwuIgorK2dkYl90ZXN0ICJwcmludCBj b21wIiAiPSBcXChQVFIgVE8gLT4gXFwoICRjb21wbGV4IFxcKVxcKSAkaGV4XCggPC4qPlwpPyIK KytnZGJfdGVzdCAicHJpbnQgKmNvbXAiICI9IFxcKDEsMlxcKSIKKytnZGJfdGVzdCAicHJpbnQg Y2hhcnAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBcXClcXCkgJGhleFwoIDwu Kj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICpjaGFycCIgIj0gJ2EnIgorK2dkYl90ZXN0ICJwcmlu dCBjaGFyYXAiICI9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXClcXCkgJGhleFwo IDwuKj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICpjaGFyYXAiICI9ICdhYmMnIgorK2dkYl90ZXN0 ICJwcmludCBpbnRwIiAiPSBcXChQVFIgVE8gLT4gXFwoICRpbnQgXFwpXFwpICRoZXhcKCA8Lio+ XCk/IgorK2dkYl90ZXN0ICJwcmludCAqaW50cCIgIj0gMTAiCisrc2V0IHRlc3RfbmFtZSAicHJp bnQgaW50YXAsIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IGludGFwIiAk dGVzdF9uYW1lIHsKKysgIC1yZSAiPSBcXChcXCggMSwgMSwgMygsIDEpezd9XFwpIFxcKCAxKCwg MSl7OX1cXCkgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAkdGVzdF9uYW1lCisr ICB9CisrICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxcKCAkaW50IFxcKDEwLDJcXClcXClcXCkgJGhl eFwoIDwuKj5cKT9cclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICBnZGJfdGVzdCAicHJpbnQgKmlu dGFwIiAiPSBcXChcXCggMSwgMSwgMygsIDEpezd9XFwpIFxcKCAxKCwgMSl7OX1cXCkgXFwpIgor KyAgICBwYXNzICR0ZXN0X25hbWUKKysgIH0KKyt9Cisrc2V0IHRlc3RfbmFtZSAicHJpbnQgaW50 dmxhcCwgYXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgaW50dmxhcCIgJHRl c3RfbmFtZSB7CisrICAtcmUgIj0gXFwoMiwgMiwgMiwgNCgsIDIpezZ9XFwpXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysgICAgcGFzcyAkdGVzdF9uYW1lCisrICB9CisrICAtcmUgIj0gXFwoUFRSIFRP IC0+IFxcKCAkaW50IFxcKDEwXFwpXFwpXFwpICRoZXhcKCA8Lio+XCk/XHJcbiRnZGJfcHJvbXB0 ICQiIHsKKysgICAgZ2RiX3Rlc3QgInByaW50ICppbnR2bGFwIiAiPSBcXCgyLCAyLCAyLCA0KCwg Mil7Nn1cXCkiCisrICAgIHBhc3MgJHRlc3RfbmFtZQorKyAgfQorK30KKytnZGJfdGVzdCAicHJp bnQgcmVhbHAiICI9IFxcKFBUUiBUTyAtPiBcXCggJHJlYWwgXFwpXFwpICRoZXhcKCA8Lio+XCk/ IgorK2dkYl90ZXN0ICJwcmludCAqcmVhbHAiICI9IDNcXC4xNDAwMFxcZCsiCisrZ2RiX3Rlc3Qg InByaW50IGFycmF5T2ZQdHIoMiklcCIgIj0gXFwoUFRSIFRPIC0+IFxcKCBUeXBlIHR3byBcXClc XCkgJGhleFwoIDwuKj5cKT8iCisrZ2RiX3Rlc3QgInByaW50ICooYXJyYXlPZlB0cigyKSVwKSIg Ij0gXFwoIGl2bGExID0gXFwoMTEsIDEyLCAxM1xcKSwgaXZsYTIgPSBcXChcXCggMjExLCAyMjFc XCkgXFwoIDIxMiwgMjIyXFwpIFxcKSBcXCkiCisrc2V0IHRlc3RfbmFtZSAicHJpbnQgYXJyYXlP ZlB0cigzKSVwIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0X25hbWUgJHRlc3RfbmFtZSB7Cisr ICAtcmUgIj0gXFwoUFRSIFRPIC0+IFxcKCBUeXBlIHR3byBcXClcXCkgPG5vdCBhc3NvY2lhdGVk PlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgIHBhc3MgJHRlc3RfbmFtZQorKyAgfQorKyAgLXJl ICI9IFxcKFBUUiBUTyAtPiBcXCggVHlwZSB0d28gXFwpXFwpIDB4MFxyXG4kZ2RiX3Byb21wdCAk IiB7CisrICAgIHBhc3MgJHRlc3RfbmFtZQorKyAgfQorK30KKytzZXQgdGVzdF9uYW1lICJwcmlu dCAqKGFycmF5T2ZQdHIoMyklcCksIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInBy aW50ICooYXJyYXlPZlB0cigzKSVwKSIgJHRlc3RfbmFtZSB7CisrICAtcmUgIkNhbm5vdCBhY2Nl c3MgbWVtb3J5IGF0IGFkZHJlc3MgMHgwXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAk dGVzdF9uYW1lCisrICB9CisrICAtcmUgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5v dCBhc3NvY2lhdGVkIHBvaW50ZXIuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAgcGFzcyAkdGVz dF9uYW1lCisrICB9CisrfQorK2dkYl90ZXN0ICJwcmludCBjeWNsaWNwMSIgIj0gXFwoIGkgPSAx LCBwID0gJGhleFwoIDwuKj5cKT8gXFwpIgorK2dkYl90ZXN0ICJwcmludCBjeWNsaWNwMSVwIiAi PSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdHlwZXdpdGhwb2ludGVyIFxcKVxcKSAkaGV4XCggPC4q PlwpPyIKKytnZGJfdGVzdCAicHJpbnQgKigoaW50ZWdlciopICZpbnRhICsgMikiICI9IDMiICJw cmludCB0ZW1wb3JhcnkgcG9pbnRlciwgYXJyYXkiCisrZ2RiX3Rlc3QgInByaW50ICooKGludGVn ZXIqKSAmaW50dmxhICsgMykiICI9IDQiICJwcmludCB0ZW1wb3JhcnkgcG9pbnRlciwgYWxsb2Nh dGVkIHZsYSIKKytnZGJfdGVzdCAicHJpbnQgXCRwYyIgIj0gXFwoUFRSIFRPIC0+IFxcKCB2b2lk IFxcKFxcKVxcKFxcKVxcKVxcKSAkaGV4IDxwb2ludGVyc1xcK1xcZCs+IiAiUHJpbnQgcHJvZ3Jh bSBjb3VudGVyIgorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vcG9pbnRlcnMuZjkwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wb2ludGVycy5mOTAJMjAxNi0wOS0wNyAyMTo1MzoyMi43 MTUyMTA0NzkgKzAyMDAKK0BAIC0wLDAgKzEsMTA5IEBACisrISBDb3B5cmlnaHQgMjAxNiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKworK3Byb2dyYW0gcG9pbnRlcnMKKysKKysgIHR5cGUgOjogdHdvCisrICAgIGludGVn ZXIsIGFsbG9jYXRhYmxlIDo6IGl2bGExICg6KQorKyAgICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6 OiBpdmxhMiAoOiwgOikKKysgIGVuZCB0eXBlIHR3bworKworKyAgdHlwZSA6OiB0eXBlV2l0aFBv aW50ZXIKKysgICAgaW50ZWdlciBpCisrICAgIHR5cGUodHlwZVdpdGhQb2ludGVyKSwgcG9pbnRl cjo6IHAKKysgIGVuZCB0eXBlIHR5cGVXaXRoUG9pbnRlcgorKworKyAgdHlwZSA6OiB0d29QdHIK KysgICAgdHlwZSAodHdvKSwgcG9pbnRlciA6OiBwCisrICBlbmQgdHlwZSB0d29QdHIKKysKKysg IGxvZ2ljYWwsIHRhcmdldCA6OiBsb2d2CisrICBjb21wbGV4LCB0YXJnZXQgOjogY29tdgorKyAg Y2hhcmFjdGVyLCB0YXJnZXQgOjogY2hhcnYKKysgIGNoYXJhY3RlciAobGVuPTMpLCB0YXJnZXQg OjogY2hhcmEKKysgIGludGVnZXIsIHRhcmdldCA6OiBpbnR2CisrICBpbnRlZ2VyLCB0YXJnZXQs IGRpbWVuc2lvbiAoMTAsMikgOjogaW50YQorKyAgaW50ZWdlciwgdGFyZ2V0LCBhbGxvY2F0YWJs ZSwgZGltZW5zaW9uICg6KSA6OiBpbnR2bGEKKysgIHJlYWwsIHRhcmdldCAgICA6OiByZWFsdgor KyAgdHlwZSh0d28pLCB0YXJnZXQgIDo6IHR3b3YKKysgIHR5cGUodHdvUHRyKSA6OiBhcnJheU9m UHRyICgzKQorKyAgdHlwZSh0eXBlV2l0aFBvaW50ZXIpLCB0YXJnZXQ6OiBjeWNsaWNwMSxjeWNs aWNwMgorKworKyAgbG9naWNhbCwgcG9pbnRlciA6OiBsb2dwCisrICBjb21wbGV4LCBwb2ludGVy IDo6IGNvbXAKKysgIGNoYXJhY3RlciwgcG9pbnRlcjo6IGNoYXJwCisrICBjaGFyYWN0ZXIgKGxl bj0zKSwgcG9pbnRlcjo6IGNoYXJhcAorKyAgaW50ZWdlciwgcG9pbnRlciA6OiBpbnRwCisrICBp bnRlZ2VyLCBwb2ludGVyLCBkaW1lbnNpb24gKDosOikgOjogaW50YXAKKysgIGludGVnZXIsIHBv aW50ZXIsIGRpbWVuc2lvbiAoOikgOjogaW50dmxhcAorKyAgcmVhbCwgcG9pbnRlciA6OiByZWFs cAorKyAgdHlwZSh0d28pLCBwb2ludGVyIDo6IHR3b3AKKysKKysgIG51bGxpZnkgKGxvZ3ApCisr ICBudWxsaWZ5IChjb21wKQorKyAgbnVsbGlmeSAoY2hhcnApCisrICBudWxsaWZ5IChjaGFyYXAp CisrICBudWxsaWZ5IChpbnRwKQorKyAgbnVsbGlmeSAoaW50YXApCisrICBudWxsaWZ5IChpbnR2 bGFwKQorKyAgbnVsbGlmeSAocmVhbHApCisrICBudWxsaWZ5ICh0d29wKQorKyAgbnVsbGlmeSAo YXJyYXlPZlB0cigxKSVwKQorKyAgbnVsbGlmeSAoYXJyYXlPZlB0cigyKSVwKQorKyAgbnVsbGlm eSAoYXJyYXlPZlB0cigzKSVwKQorKyAgbnVsbGlmeSAoY3ljbGljcDElcCkKKysgIG51bGxpZnkg KGN5Y2xpY3AyJXApCisrCisrICBsb2dwID0+IGxvZ3YgICAgISBCZWZvcmUgcG9pbnRlciBhc3Np Z25tZW50CisrICBjb21wID0+IGNvbXYKKysgIGNoYXJwID0+IGNoYXJ2CisrICBjaGFyYXAgPT4g Y2hhcmEKKysgIGludHAgPT4gaW50dgorKyAgaW50YXAgPT4gaW50YQorKyAgaW50dmxhcCA9PiBp bnR2bGEKKysgIHJlYWxwID0+IHJlYWx2CisrICB0d29wID0+IHR3b3YKKysgIGFycmF5T2ZQdHIo MiklcCA9PiB0d292CisrICBjeWNsaWNwMSVpID0gMQorKyAgY3ljbGljcDElcCA9PiBjeWNsaWNw MgorKyAgY3ljbGljcDIlaSA9IDIKKysgIGN5Y2xpY3AyJXAgPT4gY3ljbGljcDEKKysKKysgIGxv Z3YgPSBhc3NvY2lhdGVkKGxvZ3ApICAgICAhIEJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50CisrICBj b212ID0gY21wbHgoMSwyKQorKyAgY2hhcnYgPSAiYSIKKysgIGNoYXJhID0gImFiYyIKKysgIGlu dHYgPSAxMAorKyAgaW50YSg6LDopID0gMQorKyAgaW50YSgzLDEpID0gMworKyAgYWxsb2NhdGUg KGludHZsYSgxMCkpCisrICBpbnR2bGEoOikgPSAyCisrICBpbnR2bGEoNCkgPSA0CisrICBpbnR2 bGFwID0+IGludHZsYQorKyAgcmVhbHYgPSAzLjE0CisrCisrICBhbGxvY2F0ZSAodHdvdiVpdmxh MSgzKSkKKysgIGFsbG9jYXRlICh0d292JWl2bGEyKDIsMikpCisrICB0d292JWl2bGExKDEpID0g MTEKKysgIHR3b3YlaXZsYTEoMikgPSAxMgorKyAgdHdvdiVpdmxhMSgzKSA9IDEzCisrICB0d292 JWl2bGEyKDEsMSkgPSAyMTEKKysgIHR3b3YlaXZsYTIoMiwxKSA9IDIyMQorKyAgdHdvdiVpdmxh MigxLDIpID0gMjEyCisrICB0d292JWl2bGEyKDIsMikgPSAyMjIKKysKKysgIGludHYgPSBpbnR2 ICsgMSAhIEFmdGVyIHZhbHVlIGFzc2lnbm1lbnQKKysKKytlbmQgcHJvZ3JhbSBwb2ludGVycwor SW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcHJp bnRfdHlwZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ByaW50X3R5cGUuZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE1MjEwNDc5 ICswMjAwCitAQCAtMCwwICsxLDEwMCBAQAorKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K3N0YW5kYXJkX3Rlc3RmaWxlICJwb2ludGVycy5mOTAiCisrbG9hZF9saWIgZm9ydHJhbi5leHAK KysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxl fSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4g LTEKKyt9CisrCisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHVudGVzdGVkICJjb3VsZCBu b3QgcnVuIHRvIG1haW4iCisrICAgIHJldHVybiAtMQorK30KKysKKysjIERlcGVuZGluZyBvbiB0 aGUgY29tcGlsZXIgYmVpbmcgdXNlZCwgdGhlIHR5cGUgbmFtZXMgY2FuIGJlIHByaW50ZWQgZGlm ZmVyZW50bHkuCisrc2V0IGxvZ2ljYWwgW2ZvcnRyYW5fbG9naWNhbDRdCisrc2V0IHJlYWwgW2Zv cnRyYW5fcmVhbDRdCisrc2V0IGludCBbZm9ydHJhbl9pbnQ0XQorK3NldCBjb21wbGV4IFtmb3J0 cmFuX2NvbXBsZXg0XQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJC ZWZvcmUgcG9pbnRlciBhc3NpZ25tZW50Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi QmVmb3JlIHBvaW50ZXIgYXNzaWdubWVudCIKKytnZGJfdGVzdCAicHR5cGUgbG9ncCIgInR5cGUg PSBQVFIgVE8gLT4gXFwoICRsb2dpY2FsIFxcKSIgInB0eXBlIGxvZ3AsIG5vdCBhc3NvY2lhdGVk IgorK2dkYl90ZXN0ICJwdHlwZSBjb21wIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGNvbXBsZXgg XFwpIiAicHR5cGUgY29tcCwgbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIGNoYXJw IiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMSBcXCkiICJwdHlwZSBjaGFycCwg bm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIGNoYXJhcCIgInR5cGUgPSBQVFIgVE8g LT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpIiAicHR5cGUgY2hhcmFwLCBub3QgYXNzb2NpYXRlZCIK KytnZGJfdGVzdCAicHR5cGUgaW50cCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRpbnQgXFwpIiAi cHR5cGUgaW50cCwgbm90IGFzc29jaWF0ZWQiCisrc2V0IHRlc3QgInB0eXBlIGludGFwLCBub3Qg YXNzb2NpYXRlZCIKKytnZGJfdGVzdF9tdWx0aXBsZSAicHR5cGUgaW50YXAiICR0ZXN0IHsKKysg ICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCAkaW50IFxcKDosOlxcKVxcKVxyXG4kZ2RiX3By b21wdCAkIiB7CisrICAgICAgICBwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJ0eXBlID0g JGludCBcXCg6LDpcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAgICAgcGFzcyAkdGVzdAor KyAgICB9CisrfQorK2dkYl90ZXN0ICJwdHlwZSByZWFscCIgInR5cGUgPSBQVFIgVE8gLT4gXFwo ICRyZWFsIFxcKSIgInB0eXBlIHJlYWxwLCBub3QgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5 cGUgdHdvcCIgXAorKyAgICBbbXVsdGlfbGluZSAidHlwZSA9IFBUUiBUTyAtPiBcXCggVHlwZSB0 d28iIFwKKysgICAgICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2bGExXFwoOlxcKSIgXAorKyAg ICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYTJcXCg6LDpcXCkiIFwKKysgICAgICAgICAg ICAgICAgIkVuZCBUeXBlIHR3byBcXCkiXSBcCisrICAgICJwdHlwZSB0d29wLCBub3QgYXNzb2Np YXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdHdvIiBcCisrICAgIFttdWx0aV9saW5lICJ0eXBlID0g VHlwZSB0d28iIFwKKysgICAgICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2bGExXFwoOlxcKSIg XAorKyAgICAgICAgICAgICAgICAiICAgICRpbnQgOjogaXZsYTJcXCg6LDpcXCkiIFwKKysgICAg ICAgICAgICAgICAgIkVuZCBUeXBlIHR3byJdCisrCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgIkJlZm9yZSB2YWx1ZSBhc3NpZ25tZW50Il0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiQmVmb3JlIHZhbHVlIGFzc2lnbm1lbnQiCisrZ2RiX3Rlc3QgInB0eXBl IHR3b3AiIFwKKysgICAgW211bHRpX2xpbmUgInR5cGUgPSBQVFIgVE8gLT4gXFwoIFR5cGUgdHdv IiBcCisrICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxhMVxcKDpcXCkiIFwKKysgICAg ICAgICAgICAgICAgIiAgICAkaW50IDo6IGl2bGEyXFwoOiw6XFwpIiBcCisrICAgICAgICAgICAg ICAgICJFbmQgVHlwZSB0d28gXFwpIl0KKysKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiQWZ0ZXIgdmFsdWUgYXNzaWdubWVudCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgIkFmdGVyIHZhbHVlIGFzc2lnbm1lbnQiCisrZ2RiX3Rlc3QgInB0eXBlIGxvZ3Yi ICJ0eXBlID0gJGxvZ2ljYWwiCisrZ2RiX3Rlc3QgInB0eXBlIGNvbXYiICJ0eXBlID0gJGNvbXBs ZXgiCisrZ2RiX3Rlc3QgInB0eXBlIGNoYXJ2IiAidHlwZSA9IGNoYXJhY3RlclxcKjEiCisrZ2Ri X3Rlc3QgInB0eXBlIGNoYXJhIiAidHlwZSA9IGNoYXJhY3RlclxcKjMiCisrZ2RiX3Rlc3QgInB0 eXBlIGludHYiICJ0eXBlID0gJGludCIKKytnZGJfdGVzdCAicHR5cGUgaW50YSIgInR5cGUgPSAk aW50IFxcKDEwLDJcXCkiCisrZ2RiX3Rlc3QgInB0eXBlIHJlYWx2IiAidHlwZSA9ICRyZWFsIgor KworKworK2dkYl90ZXN0ICJwdHlwZSBsb2dwIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGxvZ2lj YWwgXFwpIgorK2dkYl90ZXN0ICJwdHlwZSBjb21wIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggJGNv bXBsZXggXFwpIgorK2dkYl90ZXN0ICJwdHlwZSBjaGFycCIgInR5cGUgPSBQVFIgVE8gLT4gXFwo IGNoYXJhY3RlclxcKjEgXFwpIgorK2dkYl90ZXN0ICJwdHlwZSBjaGFyYXAiICJ0eXBlID0gUFRS IFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKSIKKytnZGJfdGVzdCAicHR5cGUgaW50cCIgInR5 cGUgPSBQVFIgVE8gLT4gXFwoICRpbnQgXFwpIgorK3NldCB0ZXN0ICJwdHlwZSBpbnRhcCIKKytn ZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAidHlwZSA9ICRpbnQgXFwo MTAsMlxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgICAgICBwYXNzICR0ZXN0CisrICAgIH0K KysgICAgLXJlICJ0eXBlID0gUFRSIFRPIC0+IFxcKCAkaW50IFxcKDEwLDJcXClcXClcclxuJGdk Yl9wcm9tcHQgJCIgeworKyAgICAgICAgcGFzcyAkdGVzdAorKyAgICB9CisrfQorK2dkYl90ZXN0 ICJwdHlwZSByZWFscCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoICRyZWFsIFxcKSIKK0luZGV4OiBn ZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xMS45MC4yMDE2MDkwNy5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLmV4cAkyMDE2LTA5LTA3IDIxOjUyOjUzLjcwNTk1MTIy MCArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXB0eXBlLmV4cAkyMDE2LTA5LTA3IDIxOjUzOjIyLjcxNTIxMDQ3OSArMDIwMAorQEAg LTMyLDkgKzMyLDkgQEAKKyAjIENoZWNrIHRoZSBwdHlwZSBvZiB2YXJpb3VzIFZMQSBzdGF0ZXMg YW5kIHBvaW50ZXIgdG8gVkxBJ3MuCisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTEtaW5pdCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtaW5pdCIK Ky1nZGJfdGVzdCAicHR5cGUgdmxhMSIgInR5cGUgPSA8bm90IGFsbG9jYXRlZD4iICJwdHlwZSB2 bGExIG5vdCBpbml0aWFsaXplZCIKKy1nZGJfdGVzdCAicHR5cGUgdmxhMiIgInR5cGUgPSA8bm90 IGFsbG9jYXRlZD4iICJwdHlwZSB2bGEyIG5vdCBpbml0aWFsaXplZCIKKy1nZGJfdGVzdCAicHR5 cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5cGUgcHZsYSBub3QgaW5pdGlh bGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gJHJlYWwgXFwoOiw6LDpcXCki ICJwdHlwZSB2bGExIG5vdCBpbml0aWFsaXplZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMiIgInR5 cGUgPSAkcmVhbCBcXCg6LDosOlxcKSIgInB0eXBlIHZsYTIgbm90IGluaXRpYWxpemVkIgorK2dk Yl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAicHR5cGUgcHZs YSBub3QgaW5pdGlhbGl6ZWQiCisgZ2RiX3Rlc3QgInB0eXBlIHZsYTEoMywgNiwgOSkiICJubyBz dWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Igbm90IGFsbG9jYXRlZFxcXCkiIFwKKyAgICJw dHlwZSB2bGExKDMsIDYsIDkpIG5vdCBpbml0aWFsaXplZCIKKyBnZGJfdGVzdCAicHR5cGUgdmxh Mig1LCA0NSwgMjApIiBcCitAQCAtODEsMjAgKzgxLDIwIEBACisgCisgZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KKyBnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAicHZsYS1kZWFzc29jaWF0ZWQiCistZ2RiX3Rlc3QgInB0eXBlIHB2bGEi ICJ0eXBlID0gPG5vdCBhc3NvY2lhdGVkPiIgInB0eXBlIHB2bGEgZGVhc3NvY2lhdGVkIgorK2dk Yl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAicHR5cGUgcHZs YSBkZWFzc29jaWF0ZWQiCisgZ2RiX3Rlc3QgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSIgXAorICAg Im5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3QgYXNzb2NpYXRlZFxcXCkiIFwK KyAgICJwdHlwZSBwdmxhKDUsIDQ1LCAyMCkgbm90IGFzc29jaWF0ZWQiCisgCisgZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZGVhbGxvY2F0ZWQiXQorIGdkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJ2bGExLWRlYWxsb2NhdGVkIgorLWdkYl90ZXN0ICJwdHlwZSB2 bGExIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTEgbm90IGFsbG9jYXRlZCIK KytnZGJfdGVzdCAicHR5cGUgdmxhMSIgInR5cGUgPSAkcmVhbCBcXCg6LDosOlxcKSIgInB0eXBl IHZsYTEgbm90IGFsbG9jYXRlZCIKKyBnZGJfdGVzdCAicHR5cGUgdmxhMSgzLCA2LCA5KSIgIm5v IHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3QgYWxsb2NhdGVkXFxcKSIgXAorICAg InB0eXBlIHZsYTEoMywgNiwgOSkgbm90IGFsbG9jYXRlZCIKKyAKKyBnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmxhMi1kZWFsbG9jYXRlZCJdCisgZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZsYTItZGVhbGxvY2F0ZWQiCistZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0 eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgYWxsb2NhdGVkIgorK2dkYl90 ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9ICRyZWFsIFxcKDosOiw6XFwpIiAicHR5cGUgdmxhMiBu b3QgYWxsb2NhdGVkIgorIGdkYl90ZXN0ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkiIFwKKyAgICJu byBzdWNoIHZlY3RvciBlbGVtZW50IFxcXCh2ZWN0b3Igbm90IGFsbG9jYXRlZFxcXCkiIFwKKyAg ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRlZCIKK0luZGV4OiBnZGItNy4xMS45 MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXN0cmluZ3MuZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE2MjEwNDg4ICswMjAwCitAQCAtMCww ICsxLDEwMyBAQAorKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3Rm aWxlICIuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhw ICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Cisr ICAgIHJldHVybiAtMQorK30KKysKKysjIGNoZWNrIHRoYXQgYWxsIGZvcnRyYW4gc3RhbmRhcmQg ZGF0YXR5cGVzIHdpbGwgYmUKKysjIGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gdXNpbmcgYXMgVkxB J3MKKysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4g dG8gbWFpbiIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1hbGxvY2F0ZWQtMSJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZhcl9jaGFyLWFsbG9jYXRlZC0xIgorK3NldCB0ZXN0ICJ3aGF0aXMgdmFyX2No YXIgZmlyc3QgdGltZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAid2hhdGlzIHZhcl9jaGFyIiAkdGVz dCB7CisrICAgIC1yZSAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgInR5 cGUgPSBjaGFyYWN0ZXJcXCoxMFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0 CisrICAgIH0KKyt9Cisrc2V0IHRlc3QgInB0eXBlIHZhcl9jaGFyIGZpcnN0IHRpbWUiCisrZ2Ri X3Rlc3RfbXVsdGlwbGUgInB0eXBlIHZhcl9jaGFyIiAkdGVzdCB7CisrICAgIC1yZSAidHlwZSA9 IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJ ICAgIHBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgInR5cGUgPSBjaGFyYWN0ZXJcXCoxMFxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0KKyt9CisrCisrCisr Z2RiX3Rlc3QgIm5leHQiICJcXGQrLip2YXJfY2hhciA9ICdmb28nLioiIFwKKysgICJuZXh0IHRv IGFsbG9jYXRpb24gc3RhdHVzIG9mIHZhcl9jaGFyIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0g XFwuVFJVRVxcLiIgInByaW50IGFsbG9jYXRpb24gc3RhdHVzIGZpcnN0IHRpbWUiCisrCisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWZpbGxlZC0xIl0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZmlsbGVkLTEiCisrc2V0IHRl c3QgInByaW50IHZhcl9jaGFyLCB2YXJfY2hhci1maWxsZWQtMSIKKytnZGJfdGVzdF9tdWx0aXBs ZSAicHJpbnQgdmFyX2NoYXIiICR0ZXN0IHsKKysgICAgLXJlICI9IFxcKFBUUiBUTyAtPiBcXCgg Y2hhcmFjdGVyXFwqMyBcXClcXCkgJGhleFxyXG4kZ2RiX3Byb21wdCAkIiB7CisrICAgICAgICBn ZGJfdGVzdCAicHJpbnQgKnZhcl9jaGFyIiAiPSAnZm9vJyIgInByaW50ICp2YXJfY2hhciwgdmFy X2NoYXItZmlsbGVkLTEiCisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICI9ICdm b28nXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysgICAgfQorK30KKytz ZXQgdGVzdCAicHR5cGUgdmFyX2NoYXIsIHZhcl9jaGFyLWZpbGxlZC0xIgorK2dkYl90ZXN0X211 bHRpcGxlICJwdHlwZSB2YXJfY2hhciIgJHRlc3QgeworKyAgICAtcmUgInR5cGUgPSBQVFIgVE8g LT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3Mg JHRlc3QKKysgICAgfQorKyAgICAtcmUgInR5cGUgPSBjaGFyYWN0ZXJcXCozXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysgICAgfQorK30KKytnZGJfdGVzdCAicHJpbnQg dmFyX2NoYXIoMSkiICIgPSAxMDIgJ2YnIiAicHJpbnQgdmFyX2NoYXIoMSkiCisrZ2RiX3Rlc3Qg InByaW50IHZhcl9jaGFyKDMpIiAiID0gMTExICdvJyIgInByaW50IHZhcl9jaGFyKDMpIgorKwor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1maWxsZWQt MiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWZpbGxlZC0yIgorK3Nl dCB0ZXN0ICJwcmludCB2YXJfY2hhciwgdmFyX2NoYXItZmlsbGVkLTIiCisrZ2RiX3Rlc3RfbXVs dGlwbGUgInByaW50IHZhcl9jaGFyIiAkdGVzdCB7CisrICAgIC1yZSAiPSBcXChQVFIgVE8gLT4g XFwoIGNoYXJhY3RlclxcKjYgXFwpXFwpICRoZXhcclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAg ICAgZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIj0gJ2Zvb2JhciciICJwcmludCAqdmFyX2No YXIsIHZhcl9jaGFyLWZpbGxlZC0yIgorKwkgICAgcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1y ZSAiPSAnZm9vYmFyJ1xyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0CisrICAg IH0KKyt9Cisrc2V0IHRlc3QgInB0eXBlIHZhcl9jaGFyLCB2YXJfY2hhci1maWxsZWQtMiIKKytn ZGJfdGVzdF9tdWx0aXBsZSAicHR5cGUgdmFyX2NoYXIiICR0ZXN0IHsKKysgICAgLXJlICJ0eXBl ID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCo2IFxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Cisr CSAgICBwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJ0eXBlID0gY2hhcmFjdGVyXFwqNlxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBwYXNzICR0ZXN0CisrICAgIH0KKyt9CitJbmRleDog Z2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5n cy5mOTAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAkyMDE2LTA5LTA3IDIxOjUzOjIyLjcxNjIxMDQ4OCArMDIw MAorQEAgLTAsMCArMSwzOSBAQAorKyEgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytwcm9n cmFtIHZsYV9zdHJpbmdzCisrICBjaGFyYWN0ZXIobGVuPTopLCB0YXJnZXQsIGFsbG9jYXRhYmxl ICAgOjogdmFyX2NoYXIKKysgIGNoYXJhY3RlcihsZW49OiksIHBvaW50ZXIgICAgICAgICAgICAg ICA6OiB2YXJfY2hhcl9wCisrICBsb2dpY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOjogbAorKworKyAgYWxsb2NhdGUoY2hhcmFjdGVyKGxlbj0xMCkgOjogdmFyX2NoYXIpCisr ICBsID0gYWxsb2NhdGVkKHZhcl9jaGFyKSAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1hbGxv Y2F0ZWQtMQorKyAgdmFyX2NoYXIgPSAnZm9vJworKyAgZGVhbGxvY2F0ZSh2YXJfY2hhcikgICAg ICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZmlsbGVkLTEKKysgIGwgPSBhbGxvY2F0ZWQodmFy X2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWRlYWxsb2NhdGVkCisrICBhbGxvY2F0 ZShjaGFyYWN0ZXIobGVuPTQyKSA6OiB2YXJfY2hhcikKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2No YXIpCisrICB2YXJfY2hhciA9ICdmb29iYXInCisrICB2YXJfY2hhciA9ICcnICAgICAgICAgICAg ICAgICAgICAgICAgICAgISB2YXJfY2hhci1maWxsZWQtMgorKyAgdmFyX2NoYXIgPSAnYmFyJyAg ICAgICAgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZW1wdHkKKysgIGRlYWxsb2NhdGUodmFy X2NoYXIpCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTIxKSA6OiB2YXJfY2hhcikKKysgIGwg PSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRl ZC0zCisrICB2YXJfY2hhciA9ICdqb2huZG9lJworKyAgdmFyX2NoYXJfcCA9PiB2YXJfY2hhcgor KyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1h c3NvY2lhdGVkCisrICB2YXJfY2hhcl9wID0+IG51bGwoKQorKyAgbCA9IGFzc29jaWF0ZWQodmFy X2NoYXJfcCkgICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1ub3QtYXNzb2NpYXRlZAorK2VuZCBw cm9ncmFtIHZsYV9zdHJpbmdzCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xMS45 MC4yMDE2MDkwNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCTIw MTYtMDktMDcgMjE6NTI6MTAuMjcyNTYzMDUxICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5 MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAJMjAxNi0wOS0wNyAyMTo1 MzoyMi43MTYyMTA0ODggKzAyMDAKK0BAIC0xMzIsNyArMTMyLDEwIEBACisgICAgICAgICAgICAg ICAgICAgICAgIkVuZCBUeXBlIG9uZSIgXQorIAorICMgQ2hlY2sgYWxsb2NhdGlvbiBzdGF0dXMg b2YgZHluYW1pYyBhcnJheSBhbmQgaXQncyBkeW5hbWljIG1lbWJlcnMKKy1nZGJfdGVzdCAicHR5 cGUgZml2ZWR5bmFyciIgInR5cGUgPSA8bm90IGFsbG9jYXRlZD4iCisrZ2RiX3Rlc3QgInB0eXBl IGZpdmVkeW5hcnIiIFwKKysgICAgICAgICBbbXVsdGlfbGluZSAidHlwZSA9IFR5cGUgZml2ZSIg XAorKyAgICAgICAgICAgICAgICAgICAgICIgICAgVHlwZSBvbmUgOjogdG9uZSIgXAorKyAgICAg ICAgICAgICAgICAgICAgICJFbmQgVHlwZSBmaXZlIFxcKDpcXCkiIF0KKyBnZGJfdGVzdCAibmV4 dCIgIiIKKyBnZGJfdGVzdCAicHR5cGUgZml2ZWR5bmFycigyKSIgXAorICAgICAgICAgIFttdWx0 aV9saW5lICJ0eXBlID0gVHlwZSBmaXZlIiBcCitAQCAtMTQxLDcgKzE0NCw3IEBACisgICAgICAg ICAgInB0eXBlIGZpdmVkeW5hcnIoMiksIHRvbmUgaXMgbm90IGFsbG9jYXRlZCIKKyBnZGJfdGVz dCAicHR5cGUgZml2ZWR5bmFycigyKSV0b25lIiBcCisgICAgICAgICAgW211bHRpX2xpbmUgInR5 cGUgPSBUeXBlIG9uZSIgXAorLSAgICAgICAgICAgICAgICAgICAgICIgICAgJGludCA6OiBpdmxh XFwoPG5vdCBhbGxvY2F0ZWQ+XFwpIiBcCisrICAgICAgICAgICAgICAgICAgICAgIiAgICAkaW50 IDo6IGl2bGFcXCg6LDosOlxcKSIgXAorICAgICAgICAgICAgICAgICAgICAgICJFbmQgVHlwZSBv bmUiIF0gXAorICAgICAgICAgICJwdHlwZSBmaXZlZHluYXJyKDIpJXRvbmUsIG5vdCBhbGxvY2F0 ZWQiCisgCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtdmFsdWUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEuOTAuMjAxNjA5MDcu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAJMjAxNi0wOS0wNyAy MTo1MjoxMC4yNzI1NjMwNTEgKzAyMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAJMjAxNi0wOS0wNyAyMTo1MzoyMi43MTYy MTA0ODggKzAyMDAKK0BAIC0xNCw2ICsxNCw3IEBACisgIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBzdGFu ZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKytsb2FkX2xpYiAiZm9ydHJhbi5leHAiCisgCisgaWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNm aWxlfSBcCisgICAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CitAQCAtMjUsMTIgKzI2LDE1IEBA CisgICAgIHJldHVybiAtMQorIH0KKyAKKysjIERlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgYmVp bmcgdXNlZCwgdGhlIHR5cGUgbmFtZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuCisrc2V0 IHJlYWwgW2ZvcnRyYW5fcmVhbDRdCisrCisgIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBub24g YWxsb2NhdGVkIFZMQQorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEx LWluaXQiXQorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCisgZ2RiX3Rl c3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4iICJwcmludCBub24tYWxsb2NhdGVk IHZsYTEiCisgZ2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCistICAiID0gXFxcKFBUUiBUTyAtPiBc XFwoIHJlYWxcXFwoa2luZD00XFxcKSBcXFwoPG5vdCBhbGxvY2F0ZWQ+XFxcKVxcXClcXFwpICRo ZXgiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDosOiw6XFxcKVxcXClc XFwpICRoZXgiIFwKKyAgICJwcmludCBub24tYWxsb2NhdGVkICZ2bGExIgorIGdkYl90ZXN0ICJw cmludCB2bGExKDEsMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFxcKHZlY3RvciBub3Qg YWxsb2NhdGVkXFxcKSIgXAorICAgInByaW50IG1lbWJlciBpbiBub24tYWxsb2NhdGVkIHZsYTEg KDEpIgorQEAgLTUxLDcgKzU1LDcgQEAKKyAJInN0ZXAgb3ZlciB2YWx1ZSBhc3NpZ25tZW50IG9m IHZsYTEiCisgfQorIGdkYl90ZXN0ICJwcmludCAmdmxhMSIgXAorLSAgIiA9IFxcXChQVFIgVE8g LT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxcKVxcXClcXFwpICRoZXgi IFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggJHJlYWwgXFxcKDEwLDEwLDEwXFxcKVxcXClc XFwpICRoZXgiIFwKKyAgICJwcmludCBhbGxvY2F0ZWQgJnZsYTEiCisgZ2RiX3Rlc3QgInByaW50 IHZsYTEoMywgNiwgOSkiICIgPSAxMzExIiAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMyw2LDkpIgor IGdkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTMxMSIgInByaW50IGFsbG9jYXRl ZCB2bGExKDEsMyw4KSIKK0BAIC03MSw3ICs3NSw3IEBACisgIyBUcnkgdG8gYWNjZXNzIHZhbHVl cyBpbiB1bmRlZmluZWQgcG9pbnRlciB0byBWTEEgKGRhbmdsaW5nKQorIGdkYl90ZXN0ICJwcmlu dCBwdmxhIiAiID0gPG5vdCBhc3NvY2lhdGVkPiIgInByaW50IHVuZGVmaW5lZCBwdmxhIgorIGdk Yl90ZXN0ICJwcmludCAmcHZsYSIgXAorLSAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxc KGtpbmQ9NFxcXCkgXFxcKDxub3QgYXNzb2NpYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAorKyAg IiA9IFxcXChQVFIgVE8gLT4gXFxcKCAkcmVhbCBcXFwoOiw6LDpcXFwpXFxcKVxcXCkgJGhleCIg XAorICAgInByaW50IG5vbi1hc3NvY2lhdGVkICZwdmxhIgorIGdkYl90ZXN0ICJwcmludCBwdmxh KDEsIDMsIDgpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBcXFwodmVjdG9yIG5vdCBhc3NvY2lh dGVkXFxcKSIgXAorICAgInByaW50IHVuZGVmaW5lZCBwdmxhKDEsMyw4KSIKK0BAIC04MCw3ICs4 NCw3IEBACisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtYXNzb2Np YXRlZCJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRlZCIKKyBn ZGJfdGVzdCAicHJpbnQgJnB2bGEiIFwKKy0gICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggcmVhbFxc XChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAkaGV4IiBcCisrICAiID0gXFxc KFBUUiBUTyAtPiBcXFwoICRyZWFsIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAkaGV4IiBcCisg ICAicHJpbnQgYXNzb2NpYXRlZCAmcHZsYSIKKyBnZGJfdGVzdCAicHJpbnQgcHZsYSgzLCA2LCA5 KSIgIiA9IDQyIiAicHJpbnQgYXNzb2NpYXRlZCBwdmxhKDMsNiw5KSIKKyBnZGJfdGVzdCAicHJp bnQgcHZsYSgxLCAzLCA4KSIgIiA9IDEwMDEiICJwcmludCBhc3NvY2lhdGVkIHB2bGEoMSwzLDgp IgorSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZh ci1jaGlsZC1mLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCTIwMTYtMDktMDcgMjE6NTI6 MTAuMjcyNTYzMDUxICswMjAwCisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE2MjEwNDg4 ICswMjAwCitAQCAtMTcsNiArMTcsNyBAQAorIAorIGxvYWRfbGliIG1pLXN1cHBvcnQuZXhwCisg c2V0IE1JRkxBR1MgIi1pPW1pIgorK2xvYWRfbGliICJmb3J0cmFuLmV4cCIKKyAKKyBpZiB7IFtz a2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEgfQorIAorQEAgLTQwLDEwICs0MSw4IEBA CisgbWlfY3JlYXRlX3Zhcm9iaiAiYXJyYXkiICJhcnJheSIgImNyZWF0ZSBsb2NhbCB2YXJpYWJs ZSBhcnJheSIKKyAKKyAKKy0jIERlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgdmVyc2lvbiBiZWlu ZyB1c2VkLCB0aGUgbmFtZSBvZiB0aGUgNC1ieXRlIGludGVnZXIKKy0jIGFuZCByZWFsIHR5cGVz IGNhbiBiZSBwcmludGVkIGRpZmZlcmVudGx5LiAgRm9yIGluc3RhbmNlLCBnZm9ydHJhbi00LjEg dXNlcworLSMgImludDQiIHdoZXJlYXMgZ2ZvcnRyYW4tNC4zIHVzZXMgImludGVnZXIoa2luZD00 KSIuCistc2V0IGludDQgIihpbnQ0fGludGVnZXJcXChraW5kPTRcXCkpIgorKyMgRGVwZW5kaW5n IG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRl ZCBkaWZmZXJlbnRseS4KKytzZXQgaW50NCBbZm9ydHJhbl9pbnQ0XQorIAorIHNldCBjaGlsZHJl biBbbGlzdCBbbGlzdCAiYXJyYXkuLTEiICItMSIgMiAiJGludDQgXFwoMlxcKSJdIFwKKyAJCSAg W2xpc3QgImFycmF5LjAiICIwIiAyICIkaW50NCBcXCgyXFwpIl0gXAorSW5kZXg6IGdkYi03LjEx LjkwLjIwMTYwOTA3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjExLjkwLjIwMTYwOTA3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWktdmxhLWZvcnRyYW4uZXhwCTIwMTYtMDktMDcgMjE6NTI6MTAuMjcyNTYzMDUxICswMjAw CisrKysgZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZv cnRyYW4uZXhwCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE2MjEwNDg4ICswMjAwCitAQCAtMTcsNyAr MTcsOSBAQAorICMgQXJyYXkgKFZMQSkuCisgCisgbG9hZF9saWIgbWktc3VwcG9ydC5leHAKKyts b2FkX2xpYiBmb3J0cmFuLmV4cAorIHNldCBNSUZMQUdTICItaT1taSIKKytsb2FkX2xpYiAiZm9y dHJhbi5leHAiCisgCisgZ2RiX2V4aXQKKyBpZiBbbWlfZ2RiX3N0YXJ0XSB7CitAQCAtMzIsNiAr MzQsOSBAQAorICAgICAgcmV0dXJuIC0xCisgfQorIAorKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21w aWxlciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRs eS4KKytzZXQgcmVhbCBbZm9ydHJhbl9yZWFsNF0KKysKKyBtaV9kZWxldGVfYnJlYWtwb2ludHMK KyBtaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBtaV9nZGJfbG9hZCAk e2JpbmZpbGV9CitAQCAtNDYsMTAgKzUxLDEwIEBACisgbWlfZ2RiX3Rlc3QgIjUwMC1kYXRhLWV2 YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorICAgIjUwMFxcXmRvbmUsdmFsdWU9XCI8bm90IGFs bG9jYXRlZD5cIiIgImV2YWx1YXRlIG5vdCBhbGxvY2F0ZWQgdmxhIgorIAorLW1pX2NyZWF0ZV92 YXJvYmpfY2hlY2tlZCB2bGExX25vdF9hbGxvY2F0ZWQgdmxhMSAiPG5vdCBhbGxvY2F0ZWQ+IiBc CisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHZsYTFfbm90X2FsbG9jYXRlZCB2bGExICIkcmVh bCBcXCg6XFwpIiBcCisgICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRl ZCIKKyBtaV9nZGJfdGVzdCAiNTAxLXZhci1pbmZvLXR5cGUgdmxhMV9ub3RfYWxsb2NhdGVkIiBc CistICAiNTAxXFxeZG9uZSx0eXBlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiIFwKKysgICI1MDFcXF5k b25lLHR5cGU9XCIkcmVhbCBcXCg6XFwpXCIiIFwKKyAgICJpbmZvIHR5cGUgdmFyaWFibGUgdmxh MV9ub3RfYWxsb2NhdGVkIgorIG1pX2dkYl90ZXN0ICI1MDItdmFyLXNob3ctZm9ybWF0IHZsYTFf bm90X2FsbG9jYXRlZCIgXAorICAgIjUwMlxcXmRvbmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCitA QCAtNTgsNyArNjMsNyBAQAorICAgIjUwM1xcXmRvbmUsdmFsdWU9XCJcXFxbMFxcXF1cIiIgXAor ICAgImV2YWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2NhdGVkIgorIG1pX2xpc3RfYXJyYXlfdmFy b2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfbm90X2FsbG9jYXRlZCIgIjAiICIxIiBcCist ICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9ub3RfYWxsb2Nh dGVkIgorKyAgICAiJHJlYWwiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9ub3RfYWxsb2NhdGVkIgor IAorIAorIAorQEAgLTcxLDEwICs3NiwxMCBAQAorIG1pX2dkYl90ZXN0ICI1MTAtZGF0YS1ldmFs dWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKKyAgICI1MTBcXF5kb25lLHZhbHVlPVwiXFwoLipcXClc IiIgImV2YWx1YXRlIGFsbG9jYXRlZCB2bGEiCisgCistbWlfY3JlYXRlX3Zhcm9ial9jaGVja2Vk IHZsYTFfYWxsb2NhdGVkIHZsYTEgInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXCkiIFwKKytt aV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9hbGxvY2F0ZWQgdmxhMSAiJHJlYWwgXFxcKDVc XFwpIiBcCisgICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgorIG1pX2dk Yl90ZXN0ICI1MTEtdmFyLWluZm8tdHlwZSB2bGExX2FsbG9jYXRlZCIgXAorLSAgIjUxMVxcXmRv bmUsdHlwZT1cInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXClcIiIgXAorKyAgIjUxMVxcXmRv bmUsdHlwZT1cIiRyZWFsIFxcXCg1XFxcKVwiIiBcCisgICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZs YTFfYWxsb2NhdGVkIgorIG1pX2dkYl90ZXN0ICI1MTItdmFyLXNob3ctZm9ybWF0IHZsYTFfYWxs b2NhdGVkIiBcCisgICAiNTEyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKK0BAIC04Myw3 ICs4OCw3IEBACisgICAiNTEzXFxeZG9uZSx2YWx1ZT1cIlxcXFs1XFxcXVwiIiBcCisgICAiZXZh bCB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKKyBtaV9saXN0X2FycmF5X3Zhcm9ial9jaGlsZHJl bl93aXRoX2luZGV4ICJ2bGExX2FsbG9jYXRlZCIgIjUiICIxIiBcCistICAgICJyZWFsXFxcKGtp bmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9hbGxvY2F0ZWQiCisrICAgICIkcmVhbCIg ImdldCBjaGlsZHJlbiBvZiB2bGExX2FsbG9jYXRlZCIKKyAKKyAKKyBzZXQgYnBfbGluZW5vIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCitAQCAtMTM2LDEwICsxNDEsMTAgQEAK KyAgICAgLXJlICI1ODBcXF5kb25lLHZhbHVlPVwiPG5vdCBhc3NvY2lhdGVkPlwiLioke21pX2dk Yl9wcm9tcHR9JCIgeworIAlwYXNzICR0ZXN0CisgCistCW1pX2NyZWF0ZV92YXJvYmpfY2hlY2tl ZCBwdmxhMl9ub3RfYXNzb2NpYXRlZCBwdmxhMiAiPG5vdCBhc3NvY2lhdGVkPiIgXAorKwltaV9j cmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfbm90X2Fzc29jaWF0ZWQgcHZsYTIgIiRyZWFsIFxc KDosOlxcKSIgXAorIAkgICAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2Np YXRlZCIKKyAJbWlfZ2RiX3Rlc3QgIjU4MS12YXItaW5mby10eXBlIHB2bGEyX25vdF9hc3NvY2lh dGVkIiBcCistCSAgICAiNTgxXFxeZG9uZSx0eXBlPVwiPG5vdCBhc3NvY2lhdGVkPlwiIiBcCisr CSAgICAiNTgxXFxeZG9uZSx0eXBlPVwiJHJlYWwgXFwoOiw6XFwpXCIiIFwKKyAJICAgICJpbmZv IHR5cGUgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisgCW1pX2dkYl90ZXN0ICI1ODIt dmFyLXNob3ctZm9ybWF0IHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCisgCSAgICAiNTgyXFxeZG9u ZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKK0BAIC0xNDgsNyArMTUzLDcgQEAKKyAJICAgICI1ODNc XF5kb25lLHZhbHVlPVwiXFxcWzBcXFxdXCIiIFwKKyAJICAgICJldmFsIHZhcmlhYmxlIHB2bGEy X25vdF9hc3NvY2lhdGVkIgorIAltaV9saXN0X2FycmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2lu ZGV4ICJwdmxhMl9ub3RfYXNzb2NpYXRlZCIgIjAiICIxIiBcCistCSAgICAicmVhbFxcXChraW5k PTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9mIHB2bGEyX25vdF9hc3NvY2lhdGVkIgorKwkgICAgIiRy ZWFsIiAiZ2V0IGNoaWxkcmVuIG9mIHB2bGEyX25vdF9hc3NvY2lhdGVkIgorICAgICB9CisgICAg IC1yZSAiNTgwXFxeZXJyb3IsbXNnPVwidmFsdWUgY29udGVudHMgdG9vIGxhcmdlIFxcKFxbMC05 XF0rIGJ5dGVzXFwpLioke21pX2dkYl9wcm9tcHR9JCIgeworIAkjIFVuZGVmaW5lZCBiZWhhdmlv dXIgaW4gZ2ZvcnRyYW4uCitAQCAtMTczLDkgKzE3OCw5IEBACisgICAiZXZhbHVhdGUgYXNzb2Np YXRlZCB2bGEiCisgCisgbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHB2bGEyX2Fzc29jaWF0ZWQg cHZsYTIgXAorLSAgInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNSwyXFxcKSIgImNyZWF0ZSBsb2Nh bCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorKyAgIiRyZWFsIFxcXCg1LDJcXFwpIiAiY3Jl YXRlIGxvY2FsIHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCisgbWlfZ2RiX3Rlc3QgIjU5MS12 YXItaW5mby10eXBlIHB2bGEyX2Fzc29jaWF0ZWQiIFwKKy0gICI1OTFcXF5kb25lLHR5cGU9XCJy ZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXClcIiIgXAorKyAgIjU5MVxcXmRvbmUsdHlwZT1c IiRyZWFsIFxcXCg1LDJcXFwpXCIiIFwKKyAgICJpbmZvIHR5cGUgdmFyaWFibGUgcHZsYTJfYXNz b2NpYXRlZCIKKyBtaV9nZGJfdGVzdCAiNTkyLXZhci1zaG93LWZvcm1hdCBwdmxhMl9hc3NvY2lh dGVkIiBcCisgICAiNTkyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKK0luZGV4OiBnZGIt Ny4xMS45MC4yMDE2MDkwNy9nZGIvdHlwZXByaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4x MS45MC4yMDE2MDkwNy5vcmlnL2dkYi90eXBlcHJpbnQuYwkyMDE2LTA5LTA3IDIxOjUyOjEwLjI3 MjU2MzA1MSArMDIwMAorKysrIGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi90eXBlcHJpbnQuYwky MDE2LTA5LTA3IDIxOjUzOjIyLjcxNzIxMDQ5NyArMDIwMAorQEAgLTQ4NSw2ICs0ODUsMjUgQEAK KyAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgKi9cbiIpOyAgICAKKyAgICAgfQorIAorKyAgLyog UmVzb2x2ZSBhbnkgZHluYW1pYyB0YXJnZXQgdHlwZSwgYXMgd2UgbWlnaHQgcHJpbnQKKysgICAg IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldC4KKysgICAgIEZvciBleGFt cGxlLCBpbiBGb3J0cmFuIGFuZCBDIHdlIGFyZSBwcmludGluZyB0aGUgZGltZW5zaW9uIG9mIHRo ZQorKyAgICAgZHluYW1pYyBhcnJheSB0aGUgcG9pbnRlciBpcyBwb2ludGluZyB0by4gICovCisr ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCisrICAgICAgJiYgaXNfZHlu YW1pY190eXBlICh0eXBlKSA9PSAxKQorKyAgICB7CisrICAgICAgQ09SRV9BRERSIGFkZHI7Cisr ICAgICAgaWYgKE5VTEwgIT0gVFlQRV9EQVRBX0xPQ0FUSU9OIChUWVBFX1RBUkdFVF9UWVBFKHR5 cGUpKSkKKysJYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisrICAgICAgZWxzZQorKwlhZGRy ID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysKKysgICAgICBpZiAoYWRkciAhPSAwCisrCSAg JiYgdHlwZV9ub3RfYXNzb2NpYXRlZCAodHlwZSkgPT0gMCkKKysJVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkgPSByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCisr CQkJCQkJCU5VTEwsIGFkZHIpOworKyAgICB9CisrCisgICBMQV9QUklOVF9UWVBFICh0eXBlLCAi IiwgZ2RiX3N0ZG91dCwgc2hvdywgMCwgJmZsYWdzKTsKKyAgIHByaW50Zl9maWx0ZXJlZCAoIlxu Iik7CisgCitJbmRleDogZ2RiLTcuMTEuOTAuMjAxNjA5MDcvZ2RiL3ZhbG9wcy5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuMTEuOTAuMjAxNjA5MDcub3JpZy9nZGIvdmFsb3BzLmMJMjAxNi0wOS0w NyAyMTo1Mjo1My43MDc5NTEyMzggKzAyMDAKKysrKyBnZGItNy4xMS45MC4yMDE2MDkwNy9nZGIv dmFsb3BzLmMJMjAxNi0wOS0wNyAyMTo1MzoyMi43MTcyMTA0OTcgKzAyMDAKK0BAIC0xNTYyLDYg KzE1NjIsMTkgQEAKKyAgIGlmIChUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0gVFlQRV9DT0RFX1BU UikKKyAgICAgeworICAgICAgIHN0cnVjdCB0eXBlICplbmNfdHlwZTsKKysgICAgICBDT1JFX0FE RFIgYWRkcjsKKysKKysgICAgICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAoYmFzZV90eXBlKSkK KysgICAgICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub3QgYXNz b2NpYXRlZCBwb2ludGVyLiIpKTsKKysKKysgICAgICBpZiAoTlVMTCAhPSBUWVBFX0RBVEFfTE9D QVRJT04gKFRZUEVfVEFSR0VUX1RZUEUgKGJhc2VfdHlwZSkpKQorKwlhZGRyID0gdmFsdWVfYWRk cmVzcyAoYXJnMSk7CisrICAgICAgZWxzZQorKwlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoYXJn MSk7CisrCisrICAgICAgaWYgKGFkZHIgIT0gMCkKKysJVFlQRV9UQVJHRVRfVFlQRSAoYmFzZV90 eXBlKSA9CisrCSAgICByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAoYmFz ZV90eXBlKSwgTlVMTCwgYWRkcik7CisgCisgICAgICAgLyogV2UgbWF5IGJlIHBvaW50aW5nIHRv IHNvbWV0aGluZyBlbWJlZGRlZCBpbiBhIGxhcmdlciBvYmplY3QuCisgICAgICAgICAgR2V0IHRo ZSByZWFsIHR5cGUgb2YgdGhlIGVuY2xvc2luZyBvYmplY3QuICAqLworQEAgLTE1NzcsOCArMTU5 MCw3IEBACisgICAgICAgZWxzZQorIAkvKiBSZXRyaWV2ZSB0aGUgZW5jbG9zaW5nIG9iamVjdCBw b2ludGVkIHRvLiAgKi8KKyAJYXJnMiA9IHZhbHVlX2F0X2xhenkgKGVuY190eXBlLCAKKy0JCQkg ICAgICAodmFsdWVfYXNfYWRkcmVzcyAoYXJnMSkKKy0JCQkgICAgICAgLSB2YWx1ZV9wb2ludGVk X3RvX29mZnNldCAoYXJnMSkpKTsKKysJCQkgICAgICAoYWRkciAtIHZhbHVlX3BvaW50ZWRfdG9f b2Zmc2V0IChhcmcxKSkpOworIAorICAgICAgIGVuY190eXBlID0gdmFsdWVfdHlwZSAoYXJnMik7 CisgICAgICAgcmV0dXJuIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKGFyZzIsIGVuY190 eXBlLCBiYXNlX3R5cGUsIGFyZzEpOworSW5kZXg6IGdkYi03LjExLjkwLjIwMTYwOTA3L2dkYi92 YWxwcmludC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMTEuOTAuMjAxNjA5MDcub3JpZy9nZGIv dmFscHJpbnQuYwkyMDE2LTA5LTA3IDIxOjUyOjEwLjI3MzU2MzA2MCArMDIwMAorKysrIGdkYi03 LjExLjkwLjIwMTYwOTA3L2dkYi92YWxwcmludC5jCTIwMTYtMDktMDcgMjE6NTM6MjIuNzE4MjEw NTA2ICswMjAwCitAQCAtMTE0MSwxMiArMTE0MSw2IEBACisgICAgICAgcmV0dXJuIDA7CisgICAg IH0KKyAKKy0gIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkICh2YWx1ZV90eXBlICh2YWwpKSkKKy0g ICAgeworLSAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKKy0gICAgICBy ZXR1cm4gMDsKKy0gICAgfQorLQorICAgaWYgKHR5cGVfbm90X2FsbG9jYXRlZCAodmFsdWVfdHlw ZSAodmFsKSkpCisgICAgIHsKKyAgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFt KTsKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDk5NzFjYWIuLjRmMGQ1 MTUgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yMiwxMyArMjIsMTMg QEAgTmFtZTogJXs/c2NsX3ByZWZpeH1nZGIKICVnbG9iYWwgc25hcHNyYyAgICAyMDE2MDgwMQog IyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGludG8gZ2RiL2dudWxp Yi8gLgogJWdsb2JhbCBzbmFwZ251bGliIDIwMTUwODIyCi0lZ2xvYmFsIHRhcmRhdGUgMjAxNjA5 MDQKKyVnbG9iYWwgdGFyZGF0ZSAyMDE2MDkwNwogJWdsb2JhbCB0YXJuYW1lIGdkYi03LjExLjkw LiV7dGFyZGF0ZX0KIFZlcnNpb246IDcuMTIKIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFp bnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFt JyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMg Y29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAwLjEyLiV7dGFyZGF0ZX0lez9k aXN0fQorUmVsZWFzZTogMC4xMy4le3RhcmRhdGV9JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMr IGFuZCBHUEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4 Y2VwdGlvbnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbiBh bmQgR0ZETAogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtNTIxLDE2ICs1MjEsOCBA QCBQYXRjaDg0ODogZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCiBQYXRjaDg1Mjog Z2RiLWduYXQtZHdhcmYtY3Jhc2gtM29mMy5wYXRjaAogCiAjIFZMQSAoRm9ydHJhbiBkeW5hbWlj IGFycmF5cykgZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4KLVBh dGNoMTA1ODogZ2RiLXZsYS1pbnRlbC1icmFuY2gucGF0Y2gKLVBhdGNoMTA1OTogZ2RiLXZsYS1p bnRlbC1icmFuY2gtZml4LXN0cmlkZS0xb2YyLnBhdGNoCi1QYXRjaDEwNjA6IGdkYi12bGEtaW50 ZWwtYnJhbmNoLWZpeC1zdHJpZGUtMm9mMi5wYXRjaAotUGF0Y2gxMTMyOiBnZGItdmxhLWludGVs LTFvZjcucGF0Y2gKLVBhdGNoMTEzMzogZ2RiLXZsYS1pbnRlbC0yb2Y3LnBhdGNoCi1QYXRjaDEx MzQ6IGdkYi12bGEtaW50ZWwtM29mNy5wYXRjaAotUGF0Y2gxMTM1OiBnZGItdmxhLWludGVsLTRv ZjcucGF0Y2gKLVBhdGNoMTEzNjogZ2RiLXZsYS1pbnRlbC01b2Y3LnBhdGNoCi1QYXRjaDExMzc6 IGdkYi12bGEtaW50ZWwtNm9mNy5wYXRjaAotUGF0Y2gxMTM4OiBnZGItdmxhLWludGVsLTdvZjcu cGF0Y2gKK1BhdGNoMTA1ODogZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXN0cmlkZXMucGF0Y2gKK1Bh dGNoMTEzMjogZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXZsYS1zdHJpbmdzLnBhdGNoCiBQYXRjaDg4 OTogZ2RiLXZsYS1pbnRlbC1zdHJpbmdidC1maXgucGF0Y2gKIFBhdGNoODg3OiBnZGItYXJjaGVy LXZsYS10ZXN0cy5wYXRjaAogUGF0Y2g4ODg6IGdkYi12bGEtaW50ZWwtdGVzdHMucGF0Y2gKQEAg LTc4OSwxNSArNzgxLDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICNwYXRj aDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKICVwYXRjaDEwNTggLXAxCi0lcGF0Y2gxMDU5IC1wMQot JXBhdGNoMTA2MCAtcDEKICVwYXRjaDExMzIgLXAxCi0lcGF0Y2gxMTMzIC1wMQotJXBhdGNoMTEz NCAtcDEKLSVwYXRjaDExMzUgLXAxCi0lcGF0Y2gxMTM2IC1wMQotJXBhdGNoMTEzNyAtcDEKLSVw YXRjaDExMzggLXAxCiAlcGF0Y2g4ODkgLXAxCiAlcGF0Y2gxIC1wMQogCkBAIC0xNDY4LDYgKzE0 NTIsMTAgQEAgdGhlbgogZmkKIAogJWNoYW5nZWxvZworKiBXZWQgU2VwICA3IDIwMTYgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xMi0wLjEzLjIwMTYwOTA3 LmZjMjUKKy0gUmViYXNlIHRvIEZTRiBHREIgNy4xMS45MC4yMDE2MDkwNyAocHJlLTcuMTIgYnJh bmNoIHNuYXBzaG90KS4KKy0gUmViYXNlIEludGVsIFZMQSBwYXRjaHNldC4KKwogKiBXZWQgU2Vw ICA3IDIwMTYgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4x Mi0wLjEyLjIwMTYwOTA0LmZjMjUKIC0gW3JoZWw2KzddIEZpeCBjb21wYXRpYmlsaXR5IG9mIGJp c29uIDwzLjEgYW5kIGdjYyA+PTYuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCBjMTk1MGE1Li42YTBiMGYwIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEsMyArMSwzIEBACiAxMzFkMGRmZDIwY2Q2MDE0YzE2OGZiY2FiOWJlMmM0MyAgZ2RiLWxp YnN0ZGMrKy12My1weXRob24tNi4xLjEtMjAxNjA4MTcudGFyLnh6CiAyOWVmYzA4MjE5ZDlkNmEw NTM2ZDU4Zjk4MDdjODcyMiAgdjEuNS50YXIuZ3oKLTY3ZTJhNWE1YzRmYWVhZDE4ODM3ZmE1NGFl OTA1NzZhICBnZGItNy4xMS45MC4yMDE2MDkwNC50YXIueHoKKzczMWYwOWQ3ZTNiNWQ0MGFmMzMx OGEyOTcwZGIwY2M1ICBnZGItNy4xMS45MC4yMDE2MDkwNy50YXIueHoK